WordPress: Unauthenticated path traversal leading to conditional RCE
Posted by vntok 12 hours ago
Comments
Comment by zelphirkalt 10 hours ago
Comment by toyg 9 hours ago
Comment by acomjean 1 hour ago
Comment by atoav 7 hours ago
Comment by fragmede 5 hours ago
Comment by snowwrestler 3 hours ago
Wordpress is pretty much the exact opposite of that.
Comment by ValentineC 2 hours ago
It's the WordPress plugin ecosystem that's more often the security nightmare though.
Comment by formerly_proven 9 hours ago
Comment by tommica 8 hours ago
Comment by coldtea 8 hours ago
Comment by Sohcahtoa82 7 hours ago
Comment by Retr0id 9 hours ago
Edit: wow that's a lot of downvotes! I'm surprised people can't identify a trivial reasoning failure.
Comment by dwattttt 6 hours ago
Comment by hdgvhicv 2 hours ago
Comment by traceroute66 10 hours ago
And its closely related cousin, Joomla.
Comment by nom 9 hours ago
You know that the scripts doing it are optimized for success rate, so the types of requests they send give you an impression of what's actually out there.
It's clear to me that once we finally achieve rogue AGI, it is going to propagate through unpatched WordPress WooCommerce instances.
Comment by reaperducer 9 hours ago
People on HN love to talk smack about WordPress. After all these years, it's as much a reflex as shouting "walled garden!" every time there's an Apple story.
Yet some of the biggest web sites on the internet run WordPress, and more importantly, some of the biggest hacking targets on the internet run WordPress.
Prime example: whitehouse.gov.
If you know what you're doing, WordPress fine. The same is true with every other piece of technology out there.
But people on HN like to lump the good in with the bad because everything is binary.
Comment by imnotr0b0t 5 hours ago
Comment by spogbiper 9 hours ago
Probably true, but for whatever reason Wordpress seems to attract an awful lot of people that do not know what they are doing
Comment by otherme123 8 hours ago
And that is insecure Wordpress: people lego-mounting sites without touching code, only with plugins.
Comment by zelphirkalt 8 hours ago
People who _don't_ know what they are doing are using WP for every project, that they touch, because it is all they know. Given WPs database design, the assumptions baked into that, and the complications resulting from that, make anything other than a posts and pages website a PITA.
This in turn requires one to install shitty plugins, or spend time developing a minimalistic solution to each new challenge. With every plugin the attack surface grows, and the vast majority of larger WP sites is this cobbled together mess of WP plugins, having some WP expert trying to make them all work together without stepping on each other's toes, while hopelessly falling behind on updates, because updates could, and _will_ break things.
People only knowing PHP and WP, try to use WP as a sledgehammer, not realizing that hammer actually being made out of glass. Very few plugins are actually minimalistic, no-bloat, safe, well-developed. Lots of those plugins are 80% marketing fluff and wanting to make a business out of worse than mediocre code bases. That's also due to many people in that community being exactly those, who don't know anything but WP.
Even normal core WP updates can break the legality of ones site. I have had that at some point, where after some WP update it started loading emojis from a friggin third party, to replace the unicode symbol I had used. I was furious, because this needs to be part of the data protection policies/statements. One does not simply load a third party shit, replacing what the dev actually put there, which was just a unicode symbol. That's an idiotic thing to do. If I wanted third-party emojis, I would have included them myself.
Finally, some big pages run on WP says not much, given the catastrophic state of many websites. whitehouse.gov is laughably badly made. Another complete failure. The first thing I see that it loads Google tags manager. A government site loading shit.
fonts.googleapis.com
googletagmanager.com
gstatic.com
parsely.com
All this crap. And this is only what is loaded right out of the box. I haven't even allowed their shitty scripts to run yet.And the navigation font is tiiiny. What a horrendous design.
When I click on some navigation link, it wants to go to:
https://www.whitehouse.gov/wp-content/uploads/2026/01/Wide_Site_Primary_02.mp4
lol. From nav directly to some mp4 video?? Not a URL of a page, which then would display the video, but a URL directly to a video? Good that my noscript blocked media on that domain!If it is a prime example, then it is a prime example of a very shitty made website, by people, who don't know what they should be doing.
So all this shows is one can make a shitty site using WP. Great. I am sure one can also make a not shitty site using WP. Like you say, _"If you know what you are doing ..."_. Just that most WP people don't. They don't know how to not make a mess, or choose the short-term easy way out, and install tons of shitty plugins. Many of them just have to put things up once initially and are paid, or hold the hand open for some maintenance fee they extract, required only due to how badly made these WP sites are.
Comment by nkozyra 9 hours ago
If you know what you're doing, a loaded gun without a safety is fine, too. But you have the option, why not pick the unloaded one with a safety mechanism?
Comment by Zak 7 hours ago
It's not a great analogy to Wordpress, which attempts to provide as much capability as possible in a CMS while requiring as little expertise from the user as possible. Vanilla Wordpress, kept up to date is pretty safe. Plugins are just a click away though, and using plugins safely requires evaluating each plugin's risk profile and track record individually, which is real sysadmin work.
Comment by ImPostingOnHN 4 hours ago
Comment by BorisMelnik 8 hours ago
Comment by beezle 7 hours ago
As a courtesy, I try not to say more than one bad thing about WP every day. FWIW about 1/3 of installs are not on the recent 7 branch.
Comment by EGreg 4 hours ago
I've been building https://github.com/Qbix since 2008 and let me tell ya, I took a lot of great ideas from Drupal, Kohana, Symfony, etc. But never Wordpress. It's just ... a mess. Wordpress just won by being first, basically. Kind of like Bitcoin.
PS: Years ago, I hired a guy in Pakistan to work with me on some Wordpress sites, for clients. I thought that the Divi theme and basic Wordpress would be secure. Every one of those sites got pwned, badly. Sure, maybe it was the plugins. But why take the chance? In 2026 it's way past time to not have to worry about basic security.
Comment by krapp 4 hours ago
Comment by segfaultbuserr 3 hours ago
Comment by mgkimsal 4 hours ago
Comment by random_savv 10 hours ago
Comment by woah 9 hours ago
Comment by alok-g 52 minutes ago
Comment by toast0 9 hours ago
Never had to worry again about sequencing updates where the update changed the database schema and I had a cluster of 6 web servers. Never had to worry anymore about long ass load times because the web servers were in 3 colos and wordpress wouldn't play nice with local read only mysql replicas. No more worries about why pingbacks and comments keep showing up in the database even those those features were turned off; at least they weren't showing up in a moderation queue, but still.
Comment by themeiguoren 8 hours ago
Comment by karthikeyankc 6 hours ago
Comment by alok-g 56 minutes ago
My website is hosted on 1and1 via PHP. I am guessing that this would not work for me as installation needs server access. Moving to VPS, along with transferring domain, would require more time than I would like to spend. Thanks.
Comment by janvdberg 8 hours ago
Comment by iLoveOncall 8 hours ago
Comment by vntok 9 hours ago
Comment by abound 9 hours ago
Comment by benregenspan 3 hours ago
For the Wordpress RCE (nominally CVSS 9.2), it looks like many standard deployments of WordPress would be affected, barring extra mitigations. But in the case of these Hugo ones (9.3), it looks like very specific circumstances (anti-mitigations, if you will) are needed. E.g. running arbitrary builds of untrusted user content without a sandbox; running it in a GitHub workflow against PRs from untrusted contributors, etc.
Comment by BadBadJellyBean 6 hours ago
Comment by Exoristos 6 hours ago
Comment by jklinger410 8 hours ago
Comment by chrismorgan 10 hours ago
https://github.com/WordPress/wordpress-develop/commit/9c4e85...
Comment by mgkimsal 3 hours ago
Comment by bakugo 9 hours ago
Comment by paulryanrogers 7 hours ago
Comment by vntok 11 hours ago
> Paul Ryan 9 years ago
> Note that locate_template() does not prevent directory traversal attacks, so if you’re passing a user-provided template name to the function, be sure to verify that it’s from one of the three appropriate locations (active theme directory, parent theme directory, or /wp-includes/theme-compat/ directory).
https://developer.wordpress.org/reference/functions/locate_t...
Comment by erichocean 8 hours ago
/sarc
Comment by foul 11 hours ago
Comment by IshKebab 7 hours ago
Comment by iLoveOncall 9 hours ago
The documentation is a perfect reflection of the absolute mess of spaghetti code that it is, half of the methods that you will use constantly when developing plugins are undocumented, even untyped. It's literally unusable.
I know WordPress is good thanks to its ecosystem, but really, really, do NOT use it.
Comment by whycome 11 hours ago
Comment by patrickdavey 10 hours ago
Edit: looking at the patch itself it looks like it fixes the root cause and so it shouldn't matter what themes are doing themselves. But possibly I'm reading it incorrectly.
Comment by system2 11 hours ago
Comment by dofm 11 hours ago
However at least in principle all of the affected versions [0] could be automatically updated. Not sure if they have set it to auto-update as far back as 4.7 though.
[0] except 4.9.3 which has a bug in its automatic update mechanism.
Comment by foul 11 hours ago
Also, with pearcmd (if you can get to that, there's no open_basedir) and containers a novice sysadmin will publish insecure sites.
Comment by PunchyHamster 6 hours ago
Site hacked within a day from install. Thankfully we have limited outogoing traffic (whitelist on proxy) so only thing exploit managed to replace is their main page with our proxy's 403 error page, but damn, how this piece of software remains so shit till this day is massive achievement in incompetence.
They also manage to fail on every level, like a simple problem of "a service behind a loadbalancer/reverse proxy" is still unsolved because devs refuse to support X-Forwarded-For header in core "because it's not official RFC", and also do not support official RFC for same feature.
Comment by tptacek 11 hours ago
Comment by dofm 11 hours ago
(No particular disagreement with the rest of your comment though)
Comment by paulez 11 hours ago
Comment by tptacek 11 hours ago
Comment by ferngodfather 10 hours ago
Comment by nicce 11 hours ago
Not really. They are very good at describing the technical impact. Sometimes pre-condition is very rare and that reduces overall likelihood but for those few it applies, the impact still could be catastrophic. Who wants to risk it if whole business could go down?
Comment by akerl_ 11 hours ago
Comment by cleansy 10 hours ago
Comment by akerl_ 9 hours ago
This isn't just a CVSS issue: there have been a variety of attempts to reduce a risk score down to a single general number and they all end up as somewhere between marketing material, scare tactic, and junk science.
Comment by nicce 9 hours ago
Would you say that vulnerability with CVSS score that points to low is equally important to verify and take care of than CVSS which points to critical?
Comment by akerl_ 8 hours ago
The most boring reason, even if you take CVSS scores at face value, is that in many cases it is possible to leverage multiple "low" severity vulnerabilities into a massive impact.
But the bigger reason is that CVSS scores are all over the place, and the people operating roulette wheel that generates them do not have any insight into any specific person's systems.
Comment by vntok 10 hours ago
Many GUI CVSS calculators exist just for this, it takes a minute to requalify a vuln and adjust its CVSS based on your specific environment.
This one for example is pretty basic but works well: https://www.first.org/cvss/calculator/4.0
> These metrics enable the analyst to customize the CVSS score depending on the importance of the affected IT asset to a user’s organization, measured in terms of complementary/alternative security controls in place, Confidentiality, Integrity, and Availability. The metrics are the modified equivalent of base metrics and are assigned metric values based on the component placement in organization infrastructure.
Comment by vntok 10 hours ago
For example, you might react differently to these scores:
- <8/10: check that your systems are indeed secure
- 8.6/10: check that your systems are indeed secure and tell your junior analyst to train on creating a custom monitoring rule for that attack and follow-up with you
- 9.8/10: double-check that your systems are indeed secure, ensure that if you had a hole another security layer would have caught it (if not, that's a problem!), set up a honeypot to get some info on the assholes that have repeatedly attacked you lately and will undoubtedly try to 0-day you in the next few hours, etc.
Comment by bombcar 11 hours ago
Comment by 6c696e7578 10 hours ago
Comment by vntok 11 hours ago
That is dangerously incorrect, a whole lot of themes are vulnerable. The main pre-condition, "presence of a top-level directory named 'page-xxx' like 'page-templates' in the theme's directory" is actually an official recommendation in the WordPress documentation.
See here: https://developer.wordpress.org/themes/classic-themes/templa...
> As discussed in Organizing Theme Files, WordPress can recognize page templates stored in the theme’s root folder or in a first-level subdirectory of the theme folder. *The page-templates/ folder is a common convention* for organizing global page templates, but it is not required. Page templates can also be stored in other first-level subdirectories, such as templates/ or page_templates/.
Comment by AlienRobot 5 hours ago
On a fresh WP install, a random user can't upload PHP files. Normally you don't even need to allow random users to register an account since avatars on comments come from gravatar anyway.
Comment by dawnerd 10 hours ago
Comment by TZubiri 10 hours ago
When you use a dependency and a 9+CVSS vuln comes out, you read it and respect it. If you come to the conclusion that CVSS don't mean anything because there's just so many vulns, that's saying something of the dependency and your security posture.
Burn Wordpress with a flemmenwerfer, or build a hard virtualization layer around it, give it its own scoped certs, your Wordpress things will get hacked, especially if they use plugins.
Comment by lyu07282 7 hours ago
Comment by Roscius 7 hours ago