Konec oktobra 2026 je bila v mehanizmu posodabljanja WordPressa najdena ranljivost: CVE-2026-119977 . Napadalcu brez uporabniškega imena ali gesla omogoča izvajanje poljubne kode na strežniku – vendar le med posodabljanjem spletnega mesta. Ranljivost se že uporablja v resničnih napadih.
Spodaj je opisano, kako deluje, kdo je prizadet in kaj storiti za zaščito svojega spletnega mesta.
Ranljivost na kratko
- Kaj je to: pogoj tekmovanja (razred TOCTOU) v celotnem postopku posodobitve jedra WordPressa.
- Resnost: CVSS 8.1 (visoko).
- Prizadete različice: WordPress od različice 4.7 do vključno 7.1.3.
- Kaj napadalec potrebuje: Do spletnega mesta je dovoljen samo dostop prek HTTP. Ni potrebno preverjanje pristnosti in nobeno skrbniško dejanje.
- izkoriščanje: 3. novembra 2026 je CISA dodala ranljivost v svoj katalog znanih izkoriščenih ranljivosti (KEV). Wordfence je v prvih 21 urah po razkritju podrobnosti zabeležil več kot 18,500 zahtev do ranljivih poti.
Kako deluje napad
Med popolno posodobitvijo jedra WordPress naredi naslednje:
- Prenese arhiv z novo različico.
- Razširi ga v začasno mapo znotraj
wp-content/upgrade/. - Kopira datoteke čez aktivno spletno mesto.
- Izbriše začasno mapo.
Težava je v tem, da se začasna mapa nahaja na predvidljiva pot in dosegljivo iz brskalnikaV notranjosti je popolna kopija WordPressa, vključno z setup-config.php monterja.
Med izvajanjem posodobitve lahko napadalec odpre ta namestitveni program in ga pregleda. Posledično lahko zamenja aktivno različico wp-config.php in spletno mesto usmerijo na svojo prazno bazo podatkov. WordPress nato ponudi »namestitev« – napadalec jo dokonča, postane skrbnik in na strežniku zažene svojo kodo PHP.
Okno napada je nekaj sekund, ki jih posodobitev traja. Zaradi tega je napad v praksi težko izvedljiv, vendar množični skenerji nenehno preiskujejo ranljive poti in računajo na točno ta čas, da se poravnajo.
Različica 7.1.4 naključno izbere ime začasne mape, doda zaščito pred neposrednim dostopom in prepreči prenos konfiguracije iz začasne kopije.
Timeline
| Datum | Event |
|---|---|
| Oktober 28, 2026 | Objavljene so WordPress 7.1.4 in popravljene izdaje za starejše veje |
| Oktober 30, 2026 | Zabeleženi so prvi poskusi izkoriščanja |
| Oktober 31, 2026 | Ranljivost je dodeljena CVE-2026-119977 |
| November 3, 2026 | CISA dodaja ranljivost v katalog KEV |
Fiksne različice
Popravek je bil prenesen nazaj v vse podprte veje do različice 4.7. Priporočamo posodobitev na najnovejšo različico, 7.1.4.
| Branch | Fiksna različica |
|---|---|
| 7.1 | 7.1.4 |
| 7.0 | 7.0.8 |
| 6.9 | 6.9.11 |
| 6.8 | 6.8.12 |
| 6.7 | 6.7.11 |
| 6.6 | 6.6.11 |
| 6.5 | 6.5.14 |
| 6.4 | 6.4.14 |
| 6.3 | 6.3.14 |
| 6.2 | 6.2.15 |
| 6.1 | 6.1.16 |
| 6.0 | 6.0.18 |
| 5.x, 4.7–4.9 | Fiksna izdaja za vsako vejo, vse do različice 4.7.39 |
Različice 4.6 in starejše niso prejele popravka. Ta spletna mesta je treba posodobiti na trenutno različico ali pa jih ukiniti.
1. korak. Preverite svojo različico WordPressa
V skrbniški plošči: Nadzorna plošča → Posodobitve . Ne zanašajte se na samodejne posodobitve – morda se niso zagnale: morda so onemogočene, ne uspejo zaradi dovoljenj za datoteke ali pa jih preglasi vtičnik.
Z WP-CLI:
wp core version
Če imate na strežniku več spletnih mest, lahko vse namestitve WordPressa in njihove različice najdete takole:
find /var/www -path '*/wp-includes/version.php' -exec grep -H "wp_version =" {} \;
Zamenjaj /var/www z imenikom, kjer se nahajajo vaša spletna mesta.
Korak 2. Blokirajte dostop do wp-content/upgrade/ (za VPS in namenske strežnike)
To je najpomembnejši ukrep. Zapre okno napada ne glede na vašo različico WordPressa in ne moti posodobitev: WordPress deluje s to mapo prek datotečnega sistema, ne prek spleta. To storite pred posodobitvijo, saj se napad zgodi ravno med posodobitvijo.
nginx
Dodajte to na svojo spletno stran server blok:
location ^~ /wp-content/upgrade/ {
deny all;
}
Preizkusite konfiguracijo in ponovno naložite nginx:
nginx -t && systemctl reload nginx
Apache in LiteSpeed
Dodajte to v .htaccess datoteka v korenu spletnega mesta, nad standard # BEGIN WordPress blok:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-content/upgrade/ - [F,L]
</IfModule>
Če imate dostop do konfiguracije virtualnega gostitelja Apache, je zanesljiveje blokirati imenik tam:
<Directory "/var/www/example.com/wp-content/upgrade">
Require all denied
</Directory>
Zamenjajte pot s svojo in znova naložite Apache:
apachectl configtest && systemctl reload apache2
V sistemih AlmaLinux, Rocky in drugih sistemih, ki temeljijo na RHEL, se storitev imenuje httpd.
Preverite, ali blok deluje
curl -I https://example.com/wp-content/upgrade/
Odgovor naj vrne kodo 403.
3. korak. Naredite varnostno kopijo
Pred posodabljanjem varnostno kopirajte datoteke spletnega mesta in bazo podatkov. Z WP-CLI:
wp db export ~/backup-$(date +%F).sql
tar -czf ~/site-files-$(date +%F).tar.gz -C /var/www/example.com .
Če imate VPS, lahko v nadzorni plošči naredite tudi posnetek strežnika.
4. korak. Posodobite WordPress
Preko skrbniške plošče ali WP-CLI
Če ste blokirali dostop do wp-content/upgrade/ (2. korak), posodobite kot običajno – iz skrbniške plošče ali z WP-CLI:
wp core update
wp core update-db
wp core version
Zadnji ukaz bi moral prikazati 7.1.4 ali fiksno različico za vašo vejo.
Ročno, brez okna za napad
Če ne morete blokirati dostopa do imenika na ravni spletnega strežnika (na primer nimate dostopa do njegove konfiguracije), je varneje posodobiti ročno. Arhiv se razpakira izven korenske mape spletnega mesta in datoteke se prekopirajo brez dotikanja. wp-config.php or wp-content:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
rsync -a --exclude 'wp-content' --exclude 'wp-config.php' /tmp/wordpress/ /var/www/example.com/
rm -rf /tmp/wordpress /tmp/latest.tar.gz
Nato obnovite lastništvo datoteke (uporabnik spletnega strežnika se lahko razlikuje, na primer nginx or apache) in posodobite bazo podatkov:
chown -R www-data:www-data /var/www/example.com
wp core update-db
Namesto zadnjega ukaza lahko odprete https://example.com/wp-admin/upgrade.php v vašem brskalniku.
Ne pozabite na vtičnike in teme
wp plugin update --all
wp theme update --all
5. korak. Preverite svoje spletno mesto za znake ogrožanja
Če je bilo vaše spletno mesto posodobljeno z ranljive različice po 28. oktobru, se prepričajte, da nihče ni izkoristil napada.
Zahteve za začasne monterje v dnevnikih:
# nginx
grep -E "wp-content/upgrade/.*\.php" /var/log/nginx/access.log*
# Apache
grep -E "wp-content/upgrade/.*\.php" /var/log/apache2/access.log*
Zahteve z 200 odzivna koda je še posebej sumljiva.
Zamenjana datoteka wp-config.php: preverite datum spremembe datoteke in nastavitve povezave z bazo podatkov.
ls -l /var/www/example.com/wp-config.php
grep -E "DB_(NAME|USER|HOST)" /var/www/example.com/wp-config.php
Celovitost osrednje datoteke:
wp core verify-checksums
Neznane PHP datoteke in skrbniki:
find /var/www/example.com/wp-content/upgrade /var/www/example.com/wp-content/uploads -name "*.php"
find /var/www/example.com -name "*.php" -mtime -10
wp user list --role=administrator
Če najdete nadomestnega wp-config.php, neznane skrbnike ali nepričakovane datoteke PHP, spletno mesto obravnavajte kot ogroženo. Obnovite ga iz varnostne kopije, narejene pred 28. oktobrom, posodobite WordPress in spremenite vsa gesla: skrbniško, podatkovno bazo, FTP in SSH.
Če vaše spletno mesto vzdržuje izvajalec
Posredujte jim ta članek in jih prosite, naj potrdijo, da je bilo spletno mesto posodobljeno na fiksno različico in preverjeno glede znakov ogrožanja.
Potrebujete pomoč?
Niste prepričani, ali lahko to rešite sami, ali ste našli sumljive datoteke? Obrnite se na našo ekipo za podporo – pomagali vam bomo.