Krajem oktobra 2026. godine pronađena je ranjivost u mehanizmu ažuriranja WordPressa: CVE-2026-119977 . Ona omogućava napadaču bez korisničkog imena ili lozinke da izvrši proizvoljni kod na serveru - ali samo dok se stranica ažurira. Ranjivost se već koristi u stvarnim napadima.
U nastavku je opisano kako to funkcioniše, na koga to utiče i šta učiniti da zaštitite svoju web stranicu.
Ranjivost ukratko
- Šta je to: uslov trke (klasa TOCTOU) u procesu ažuriranja cijelog jezgra WordPressa.
- Ozbiljnost: CVSS 8.1 (Visok).
- Pogođene verzije: WordPress od verzije 4.7 do 7.1.3 uključujući i te verzije.
- Šta napadaču treba: Samo HTTP pristup stranici. Nije potrebna autentifikacija niti radnja administratora.
- Eksploatacija: Dana 3. novembra 2026. godine, CISA je dodala ranjivost u svoj katalog poznatih iskorištenih ranjivosti (KEV). Wordfence je zabilježio više od 18,500 zahtjeva prema ranjivim putanjama u prvih 21 sat nakon što su detalji otkriveni.
Kako napad funkcioniše
Tokom potpunog ažuriranja jezgra, WordPress radi sljedeće:
- Preuzima arhivu s novom verzijom.
- Raspakuje ga u privremenu mapu unutra
wp-content/upgrade/. - Kopira datoteke preko aktivne web stranice.
- Briše privremenu mapu.
Problem je u tome što se privremena mapa nalazi na predvidljiv put i je dostupno iz preglednikaUnutra se nalazi kompletna kopija WordPressa, uključujući setup-config.php instalater.
Dok se ažuriranje izvršava, napadač može otvoriti ovaj instalacijski program i proći kroz njega. Kao rezultat toga, mogu zamijeniti aktivnu verziju wp-config.php i usmjere stranicu na vlastitu praznu bazu podataka. WordPress zatim nudi "instalaciju" - napadač je dovrši, postane administrator i pokrene vlastiti PHP kod na serveru.
Prozor za napad je nekoliko sekundi koliko je potrebno za ažuriranje. To otežava izvođenje napada u praksi, ali masovni skeneri stalno ispituju ranjive puteve, računajući na tačno to vrijeme da se poravnaju.
Verzija 7.1.4 nasumično bira naziv privremene mape, dodaje zaštitu od direktnog pristupa i blokira prenos konfiguracije iz privremene kopije.
Timeline
| Datum | događaj |
|---|---|
| Oktobar 28, 2026 | Objavljeni su WordPress 7.1.4 i ispravljena izdanja za starije grane |
| Oktobar 30, 2026 | Zabilježeni su prvi pokušaji eksploatacije |
| Oktobar 31, 2026 | Ranjivost je označena kao CVE-2026-119977. |
| Novembar 3, 2026 | CISA dodaje ranjivost u KEV katalog |
Fiksne verzije
Ispravka je prenesena na svaku podržanu granu do verzije 4.7. Preporučujemo ažuriranje na najnoviju verziju, 7.1.4.
| grana | Fiksna verzija |
|---|---|
| 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 | Fiksno izdanje za svaku granu, sve do verzije 4.7.39 |
Verzije 4.6 i starije nisu dobile ispravku. Ove stranice je potrebno ažurirati na trenutnu verziju ili ih ukinuti.
Korak 1. Provjerite svoju verziju WordPressa
U administratorskom panelu: Kontrolna tabla → Ažuriranja . Ne oslanjajte se na automatska ažuriranja — možda se nisu pokrenula: mogu biti onemogućena, neuspješna zbog dozvola datoteka ili ih je nadjačao dodatak.
Sa WP-CLI-jem:
wp core version
Ako imate više sajtova na serveru, svaku WordPress instalaciju i njihovu verziju možete pronaći ovako:
find /var/www -path '*/wp-includes/version.php' -exec grep -H "wp_version =" {} \;
zamijeniti /var/www s direktorijem u kojem se nalaze vaše web-lokacije.
Korak 2. Blokirajte pristup wp-content/upgrade/ (za VPS i dedicated servere)
Ovo je najvažnija mjera. Zatvara prozor za napad bez obzira na vašu verziju WordPressa i ne ometa ažuriranja: WordPress radi s ovom mapom putem sistema datoteka, a ne preko weba. Učinite ovo prije ažuriranja, jer se napad događa upravo tokom ažuriranja.
nginx
Dodajte ovo na vašu web stranicu server blok:
location ^~ /wp-content/upgrade/ {
deny all;
}
Testirajte konfiguraciju i ponovo učitajte nginx:
nginx -t && systemctl reload nginx
Apache i LiteSpeed
Dodajte ovo na .htaccess datoteka u korijenskom direktoriju web-mjesta, iznad standard # BEGIN WordPress blok:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^wp-content/upgrade/ - [F,L]
</IfModule>
Ako imate pristup konfiguraciji virtualnog hosta Apache, pouzdanije je blokirati direktorij tamo:
<Directory "/var/www/example.com/wp-content/upgrade">
Require all denied
</Directory>
Zamijenite putanju svojom i ponovo učitajte Apache:
apachectl configtest && systemctl reload apache2
Na AlmaLinuxu, Rockyju i drugim RHEL-baziranim sistemima, servis se zove httpd.
Provjerite da li blok funkcioniše
curl -I https://example.com/wp-content/upgrade/
Odgovor bi trebao vratiti kod 403.
Korak 3. Napravite sigurnosnu kopiju
Prije ažuriranja, napravite sigurnosnu kopiju datoteka i baze podataka web-mjesta. Pomoću WP-CLI-a:
wp db export ~/backup-$(date +%F).sql
tar -czf ~/site-files-$(date +%F).tar.gz -C /var/www/example.com .
Ako imate VPS, možete napraviti i snimak servera u kontrolnoj ploči.
Korak 4. Ažurirajte WordPress
Preko administratorske ploče ili WP-CLI-ja
Ako ste blokirali pristup wp-content/upgrade/ (Korak 2), ažurirajte kao i obično — iz administratorske ploče ili putem WP-CLI-ja:
wp core update
wp core update-db
wp core version
Posljednja naredba bi trebala prikazati 7.1.4 ili fiksnu verziju za vašu granu.
Ručno, bez prozora za napad
Ako ne možete blokirati pristup direktoriju na nivou web servera (na primjer, nemate pristup njegovoj konfiguraciji), sigurnije je ažurirati ručno. Arhiva se izdvaja izvan korijenskog direktorijuma web-mjesta, a datoteke se kopiraju bez dodirivanja. 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
Zatim vratite vlasništvo nad datotekom (korisnik web servera može se razlikovati, na primjer nginx or apache) i ažurirajte bazu podataka:
chown -R www-data:www-data /var/www/example.com
wp core update-db
Umjesto posljednje komande, možete otvoriti https://example.com/wp-admin/upgrade.php u vašem pretraživaču.
Ne zaboravite na pluginove i teme
wp plugin update --all
wp theme update --all
Korak 5. Provjerite svoju web stranicu na znakove kompromitacije
Ako je vaša stranica ažurirana s ranjive verzije nakon 28. oktobra, provjerite da niko nije iskoristio napad.
Zahtjevi privremenim instalaterima u zapisnicima:
# nginx
grep -E "wp-content/upgrade/.*\.php" /var/log/nginx/access.log*
# Apache
grep -E "wp-content/upgrade/.*\.php" /var/log/apache2/access.log*
Zahtjevi sa 200 Kodovi odgovora su posebno sumnjivi.
Zamijenjena datoteka wp-config.php: provjerite datum izmjene datoteke i postavke veze s bazom podataka.
ls -l /var/www/example.com/wp-config.php
grep -E "DB_(NAME|USER|HOST)" /var/www/example.com/wp-config.php
Integritet osnovne datoteke:
wp core verify-checksums
Nepoznate PHP datoteke i administratori:
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
Ako pronađete zamjenskog wp-config.php, nepoznate administratore ili neočekivane PHP datoteke, tretirajte stranicu kao kompromitovanu. Obnovite je iz sigurnosne kopije napravljene prije 28. oktobra, ažurirajte WordPress i promijenite sve lozinke: administratorsku, bazu podataka, FTP i SSH.
Ako izvođač radova održava vašu lokaciju
Proslijedite im ovaj članak i zamolite ih da potvrde da je stranica ažurirana na fiksnu verziju i provjerena na znakove kompromitacije.
Trebati pomoć?
Niste sigurni da li možete sami riješiti ovo ili ste pronašli sumnjive datoteke? Kontaktirajte naš tim za podršku — pomoći ćemo vam da to riješite.