Baza znanja Jednostavna uputstva za rad sa uslugom Profitserver
glavni Baza znanja Ranjivost WordPressa CVE-2026-119977: Hakirane stranice tokom ažuriranja i kako zaštititi svoju

Ranjivost WordPressa CVE-2026-119977: Hakirane stranice tokom ažuriranja i kako zaštititi svoju


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:

  1. Preuzima arhivu s novom verzijom.
  2. Raspakuje ga u privremenu mapu unutra wp-content/upgrade/.
  3. Kopira datoteke preko aktivne web stranice.
  4. 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

Datumdogađaj
Oktobar 28, 2026Objavljeni su WordPress 7.1.4 i ispravljena izdanja za starije grane
Oktobar 30, 2026Zabilježeni su prvi pokušaji eksploatacije
Oktobar 31, 2026Ranjivost je označena kao CVE-2026-119977.
Novembar 3, 2026CISA 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.

granaFiksna verzija
7.17.1.4
7.07.0.8
6.96.9.11
6.86.8.12
6.76.7.11
6.66.6.11
6.56.5.14
6.46.4.14
6.36.3.14
6.26.2.15
6.16.1.16
6.06.0.18
5.x, 4.7–4.9Fiksno 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.


Pitajte nas za VPS

Uvek smo spremni da odgovorimo na vaša pitanja u bilo koje doba dana i noći.