Preskoči na sadržaj
Kritična ranjivost u WPvivid Backup: kako neautentificirani napadač može uploadati datoteku i preuzeti WordPress
Ana Horvat
Ana Horvat 11. February 2026. · 1 min čitanja

Kritična ranjivost u WPvivid Backup: kako neautentificirani napadač može uploadati datoteku i preuzeti WordPress

Ako na projektima koristiš WPvivid Backup & Migration (plugin slug: wpvivid-backuprestore), vrijedi odmah provjeriti verziju i konfiguraciju. Wordfence je objavio detalje o kritičnoj ranjivosti (CVSS 9.8) koja omogućuje unauthenticated arbitrary file upload (upload proizvoljne datoteke bez prijave), a u praksi vrlo često završava kao remote code execution (RCE) i potpuni takeover weba.

Bitna nijansa: ovaj propust je kritično opasan prvenstveno za instalacije koje imaju generirani ključ u postavkama plugina kako bi drugi site mogao “poslati backup” na tvoj site. Ta mogućnost je po defaultu isključena, a rok trajanja ključa može se postaviti najviše na 24 sata. Ipak, s obzirom na broj instalacija, realno je očekivati da je velik broj webova tu opciju koristio barem povremeno.

Što je pogođeno (sažetak iz Wordfence Intelligence)

  • Naziv ranjivosti: Unauthenticated Arbitrary File Upload
  • Pogođeni plugin: Migration, Backup, Staging – WPvivid Backup & Migration
  • Pogođene verzije: <= 0.9.123
  • Zakrpljena verzija: 0.9.124
  • CVSS: 9.8 (Critical)
  • CVE: CVE-2026-1357 (cve.org zapis)
  • Napadni vektor: parametar wpvivid_action=send_to_site
  • Bug bounty nagrada: $2,145.00 (istraživač Lucas Montes / NiRoX)

Zašto je ovo opasno: od uploada do RCE-a u jednom koraku

“Arbitrary file upload” zvuči kao još jedan u nizu propusta, ali u WordPress svijetu to je često najkraći put do kompromitacije. Ako napadač uspije uploadati npr. .php datoteku u javno dostupnu mapu, onda je dovoljno pogoditi URL te datoteke i izvršiti kod na serveru. To se tipično koristi za webshell (npr. za daljnje ubacivanje backdoora, krađu podataka ili lateralno kretanje po hostingu).

U ovom slučaju, Wordfence navodi da ranjivost omogućuje neautentificiranim napadačima upload proizvoljnih datoteka, a zatim i izvršavanje malicioznog koda na serveru – što se u praksi vrlo često pretvara u potpuni takeover.

Tehnička analiza: gdje je točno puklo

WPvivid ima funkcionalnost primanja backupa s drugog sitea (“send backup to site”), a to se autorizira kratkotrajnim ključem generiranim u postavkama. Kod za primitak datoteke prolazi kroz send_to_site() metodu u klasi WPvivid_Send_to_site i očekuje payload u $_POST['wpvivid_content'] koji se base64-dekodira i zatim dekriptira.

Problem nastaje u procesu dekripcije: plugin koristi RSA da dekriptira session key, a zatim taj ključ koristi za simetričnu dekripciju (Rijndael/AES preko phpseclib). Ako RSA dekripcija padne, ključ postane false, ali izvršavanje se ne prekida na način koji bi spriječio daljnju obradu.

1) Neispravno rukovanje greškama u RSA dekripciji

Prema Wordfence opisu, kada openssl_private_decrypt() ne uspije dekriptirati session key, plugin ne prekida obradu nego prosljeđuje boolean false u inicijalizaciju AES/Rijndael šifre u phpseclib biblioteci. Ključni detalj je ponašanje biblioteke: false tretira kao string null bajtova. Time napadač dobiva predvidljiv “ključ” (niz ) i može pripremiti šifrirani payload koji će se uredno dekriptirati na strani žrtve.

2) Nema sanitizacije putanje (path) kod zapisivanja datoteka

Drugi dio lanca je jednako kritičan: plugin prihvaća naziv datoteke iz dekriptiranog payloada bez adekvatne sanitizacije. To omogućuje directory traversal – izlazak iz “zaštićenog” direktorija za backupe i upis datoteke u druge lokacije, uključujući javno dostupne direktorije.

3) Nema provjere tipa/ekstenzije datoteke (u ranjivim verzijama)

Wordfence ističe da upload dio nije imao provjere tipa ili ekstenzije. Kombinacija predvidljive dekripcije + path traversal + izostanak provjere ekstenzije otvara vrata za upload npr. .php datoteka i potom RCE.

Koga to stvarno pogađa: ključna konfiguracijska stavka

Ovo nije “svaka instalacija je automatski otvorena”. Kritični scenarij je kad je u WPvivid postavkama generiran ključ koji omogućuje drugom siteu da šalje backup na tvoj site. Ta opcija je po defaultu isključena, a ključ može vrijediti maksimalno 24 sata. No ako je ključ generiran (čak i privremeno) i endpoint izložen, prozor napada postoji dok je ključ valjan.

Praktična implikacija

Ako si ikad koristio/koristila opciju primanja backupa s drugog sitea i generirao/la ključ, tretiraj ovo kao hitno: update + provjera logova i file systema.

Zakrpa u 0.9.124: što su promijenili

Developer je izdao zakrpu u verziji 0.9.124. Prema Wordfence analizi, popravak ima dva bitna dijela:

  1. U decrypt_message() dodana je provjera da je dekriptirani $key valjan. Ako je $key === false ili je prazan, funkcija vraća false i prekida lanac koji je omogućavao null-byte ključ.
  2. U send_to_site() dodana je provjera ekstenzije datoteke tako da su dopušteni samo tipični backup formati: zip, gz, tar, sql. Uz to se naziv datoteke normalizira preko basename() i dodatnog preg_replace() kako bi se uklonili nedopušteni znakovi.

Wordfence mitigacije: tko je kada dobio firewall pravilo

Wordfence je isporučio firewall pravilo za blokiranje pokušaja eksploatacije u sljedećim terminima:

  • Wordfence Premium / Wordfence Care / Wordfence Response: zaštitno firewall pravilo isporučeno 22. siječnja 2026.
  • Wordfence Free: ista zaštita se isporučuje 30 dana kasnije, tj. 21. veljače 2026.

Disclosure timeline (kronologija objave)

  • January 12, 2026 – prijava ranjivosti kroz Wordfence Bug Bounty Program.
  • January 22, 2026 – Wordfence validira prijavu i potvrđuje proof-of-concept; vendoru šalje inicijalni kontakt i poziv na korištenje Wordfence Vulnerability Management Portal.
  • January 22, 2026 – Premium/Care/Response korisnici dobivaju firewall pravilo.
  • January 23, 2026 – vendor odgovara i bira komunikaciju emailom.
  • January 23, 2026 – Wordfence šalje full disclosure; vendor potvrđuje i kreće raditi na fixu.
  • January 28, 2026 – izlazi potpuno zakrpljena verzija plugina 0.9.124.
  • February 21, 2026 – Wordfence Free korisnici dobivaju istu zaštitu.

Što napraviti odmah (checklista za developere i maintainere)

  1. Provjeri verziju WPvivid-a: ako je 0.9.123 ili niže, update na 0.9.124 je prioritet.
  2. Provjeri je li ikad generiran “send to site” ključ u postavkama (i je li opcija trenutno aktivna). Ako ti ne treba, ostavi je isključenu.
  3. Ako koristiš Wordfence, provjeri koristiš li Free ili Premium/Care/Response i u skladu s tim očekuj dostupnost firewall pravila (Premium je već imao zaštitu od 22.1.2026., Free dobiva 21.2.2026.).
  4. Ako sumnjaš na kompromitaciju: traži neočekivane .php datoteke u upload direktorijima i ostalim javnim lokacijama, te pregledaj logove prema requestovima koji uključuju wpvivid_action=send_to_site.

Zaključak

CVE-2026-1357 je primjer kako kombinacija “sitnih” propusta (neispravno rukovanje greškama u kriptografiji + izostanak sanitizacije putanje + izostanak provjere ekstenzije) može završiti kao vrlo direktan put do RCE-a. Dobra vijest je da je problem adresiran u WPvivid Backup 0.9.124, a Wordfence je relativno brzo isporučio i firewall mitigaciju.

Pridružite se HelloWP zajednici!

Razgovarajte s nama o WordPressu, web razvoju i podijelite iskustva s drugim developerima.

- članovi
- online
Pridruži se

Koristimo kolačiće kako bismo poboljšali vaše iskustvo. Nastavkom se slažete s našom Politikom kolačića.