Liigu sisu juurde
WPvivid Backup pistikprogrammis avastati kriitiline suvalise faili üleslaadimise auk (CVE-2026-1357) – ohus on võtmega „send to site” kasutajad
Martin Kask
Martin Kask 11. February 2026 · 5 min lugemist

WPvivid Backup pistikprogrammis avastati kriitiline suvalise faili üleslaadimise auk (CVE-2026-1357) – ohus on võtmega „send to site” kasutajad

WordPressi varundus- ja migreerimispistikud on ebamugavalt kõrge väärtusega sihtmärk: neil on ligipääs failisüsteemile, tihti ka andmebaasile, ning varukoopiate liigutamine tähendab paratamatult üleslaadimist/alla­laadimist. 2026. aasta jaanuaris raporteeriti WPvivid Backup & Migrationi (WordPress.org slug wpvivid-backuprestore, üle 800 000 aktiivse paigalduse) kohta kriitiline haavatavus, mis võimaldab teatud seadistuse korral autentimata suvaliste failide üleslaadimist ja seeläbi kaugkoodi käivitamist (Remote Code Execution, RCE).

Oluline täpsustus: rünne muutub kriitiliseks ainult nendele saitidele, kus WPvividis on seadistatud funktsioon, mis lubab teisel saidil saata varukoopia sinu saidile (st pistikprogrammis on genereeritud võti). See funktsioon on vaikimisi välja lülitatud ning võtme aegumine on seadistatav maksimaalselt 24 tunni peale.

Kiire kokkuvõte: mida täpselt parandada?

  • Kui kasutad WPvivid Backup & Migrationit, uuenda kohe versioonile 0.9.124 (või uuemale).
  • Kui sul on sisse lülitatud „receive backup from another site”/„send to site” stiilis funktsioon ja loodud API-võti, käsitle olukorda kui kõrgeimat prioriteeti.
  • Kui kasutad Wordfence’i: Premium/Care/Response saidid said kaitsvad tulemüürireeglid 22.01.2026, Wordfence Free puhul jõuab sama kaitse 21.02.2026 (30 päeva hiljem).

Haavatavuse kokkuvõte (Wordfence Intelligence andmetel)

  • Nimi: Migration, Backup, Staging <= 0.9.123 - Unauthenticated Arbitrary File Upload
  • CVSS: 9.8 (Critical)
  • CVE: CVE-2026-1357
  • Mõjutatud versioonid: <= 0.9.123
  • Parandatud versioon: 0.9.124
  • Mõjutatud tarkvara: Migration, Backup, Staging – WPvivid Backup & Migration
  • Plugin slug: wpvivid-backuprestore
  • Leidja: Lucas Montes (NiRoX) (raporteeritud Wordfence Bug Bounty Program kaudu)
  • Bounty: $2,145.00

Miks see auk on ohtlik: autentimata fail upload → RCE → täielik ülevõtt

„Arbitrary File Upload” tähendab praktikas, et ründaja suudab serverisse kirjutada faili, mille sisu ja asukoha ta ise kontrollib. Kui see fail saab olla näiteks PHP skript ning see kirjutatakse veebist ligipääsetavasse kataloogi, on järgmine samm trivialne: ründaja avab URL-i ja käivitab serveris oma koodi. Reaalses maailmas kasutatakse selleks tihti webshell’e, mis annavad püsiva kontrolli saidi ja serveri üle.

Selle konkreetse juhtumi puhul rõhutatakse, et ründevektor on seotud WPvivid Backupis oleva võimalusega vastu võtta varukoopia teisest WordPressi saidist, mida kaitstakse lühiajalise genereeritud võtmega. Kui seda funktsiooni ei kasutata (võtit pole loodud), ei ole ründe eeldused täidetud.

Tehniline taust: mis kooditeel valesti läks?

Wordfence’i analüüsi järgi on keskne kooditee seotud klassiga WPvivid_Send_to_site ja selle meetodiga send_to_site(), mis tegeleb teiselt saidilt tuleva varukoopia vastuvõtmisega. Sisend tuleb $_POST['wpvivid_content'] väljal, mis base64-dekodeeritakse ning dekrüpteeritakse.

Probleem oli kahes osas, mis koos tegid ründe eriti ebameeldivaks:

  1. Krüptograafiline tõrkehaldus: RSA dekrüpteerimine võib ebaõnnestuda. Kui sessioonivõtme dekrüpteerimine ei õnnestu ja tulemuseks on false, ei lõpetatud protsessi korrektselt. See false väärtus anti edasi AES/Rijndael initsialiseerimisele.
  2. Failitee ja nime ebapiisav valideerimine: üleslaetava faili nimi võeti dekrüpteeritud payload’ist ning seda ei sanitiseeritud piisavalt. See avas tee directory traversal’ile (kataloogist „välja ronimine”), et kirjutada fail kaitstud backup-kataloogist välja veebist loetavatesse asukohtadesse.

Krüptopoolsest vaatenurgast on tähelepanuväärne nüanss see, et kui openssl_private_decrypt()/RSA dekrüpteerimine annab false, siis phpseclib’i AES/Rijndael initsialiseerimine käsitleb seda sisuliselt kui nullbaitidest koosnevat etteaimatavat võtmematerjali. Tulemus: ründaja saab koostada krüpteeritud payload’i, mis „sobib” selle etteaimatava null-bait võtmega, ja seeläbi mööda minna ideest, et ainult õigesti dekrüpteeritav sisu jõuab failikirjutamiseni.

RCE saavutati Wordfence’i kirjelduse järgi suunaga, kus ründaja kasutab parameetrit wpvivid_action=send_to_site, et jõuda failide üleslaadimiseni ning kirjutada näiteks pahatahtlik PHP fail avalikku kataloogi.

Mida tarnija muutis: parandus 0.9.124-s

Parandus koosnes kahest täiendavast turvakihist, mis on selles kontekstis mõlemad loogilised ja vajalikud.

1) Krüptovõtme kontroll: katkesta, kui RSA dekrüpteerimine ebaõnnestub

decrypt_message() funktsioonis lisati kontroll, mis lõpetab dekrüpteerimisvoo, kui $key on false või tühi. Sisuliselt eemaldatakse võimalus, et false väärtus jõuab Rijndael/AES võtmena kasutusse.

$key = $rsa->decrypt($key);

// Patch: ära luba false/tühja võtmega edasi minna
if ($key === false || empty($key)) {
    return false;
}

$rij = new Crypt_Rijndael();
$rij->setKey($key);
return $rij->decrypt($data);

2) Faililaiendi ja failinime karmim kontroll send_to_site()-s

Lisaks lisati faililaiendi kontroll, et lubada ainult varukoopiaga seotud failitüüpe, ning failinime töötlemine turvalisemaks: kasutatakse basename() ning eemaldatakse mitte-lubatud märgid regexiga. Lubatud laiendid: zip, gz, tar, sql.

$safe_name = basename($params['name']);
$safe_name = preg_replace('/[^a-zA-Z0-9._-]/', '', $safe_name);

$allowed_extensions = array('zip', 'gz', 'tar', 'sql');
$file_ext = strtolower(pathinfo($safe_name, PATHINFO_EXTENSION));

if (!in_array($file_ext, $allowed_extensions, true)) {
    $ret['result'] = WPVIVID_FAILED;
    $ret['error']  = 'Invalid file type - only backup files allowed.';
    echo wp_json_encode($ret);
    die();
}

Miks ainult laiendikontroll ei ole kunagi „piisav”

Faililaiendi whitelist on vajalik, aga üksi see ei peaks olema ainus kaitse. Selles konkreetses paranduses on oluline just kombinatsioon: krüptovoo korrektne katkestamine + failinime normaliseerimine + laiendite whitelist. (Wordfence’i kirjeldus keskendub nendele muudatustele.)

Keda see reaalselt mõjutab?

Haavatavus puudutab WPvivid Backup & Migrationi versioone 0.9.123 ja varasemaid. Kuid kriitiline ründepind tekib siis, kui oled pistikprogrammi seadetes genereerinud võtme, mis lubab teisel saidil sinu saidile varukoopiat saata. Funktsioon on vaikimisi välja lülitatud ning võtme aegumine on piiratud maksimaalselt 24 tunniga.

Praktiliselt tähendab see, et suur osa 800 000 paigaldusest ei pruugi olla otseselt exploitatavad, kui võtmega „send to site” pole kunagi sisse lülitatud. Samas organisatsioonides ja agentuurides, kus tehakse keskkondadevahelist migratsiooni või keskset varundust, on just see funktsionaalsus tõenäolisemalt kasutusel.

Ajajoon: raporteerimisest patch’ini ja tulemüürireegliteni

  • 12.01.2026 – Wordfence sai rapordi (Bug Bounty Program kaudu) suvalise faili üleslaadimise haavatavuse kohta WPvivid Backupis.
  • 22.01.2026 – Raport valideeriti ja kinnitati proof-of-concept. Tarnijale saadeti esmane kontakt ning kutse kasutada Wordfence Vulnerability Management Portal.
  • 22.01.2026 – Wordfence Premium, Care ja Response kasutajad said tulemüürireegli, mis aitab blokeerida selle haavatavuse sihtimise katseid.
  • 23.01.2026 – Tarnija vastas ning eelistas edasist koordineerimist e-posti teel.
  • 23.01.2026 – Tarnijale edastati täielikud avalikustamise detailid; tarnija kinnitas rapordi ja alustas parandusega.
  • 28.01.2026 – Avaldati täielikult parandatud pistikprogrammi versioon 0.9.124.
  • 21.02.2026 – Wordfence Free kasutajad saavad sama tulemüürikaitse.

Mida teha oma WordPressi saitidega (kontrollnimekiri)

  1. Kontrolli WPvivid versiooni: kui see on <= 0.9.123, planeeri kohene uuendus.
  2. Uuenda WPvivid Backup & Migration versioonile 0.9.124 (või uuemale).
  3. Kontrolli, kas „send to site / receive backup from another site” funktsioon on kasutusel: kui oled kunagi genereerinud võtme, eelda, et risk on oluliselt kõrgem.
  4. Kui kasutad Wordfence’i, arvesta ajastusega: Premium/Care/Response said kaitse juba 22.01.2026; Free saab kaitse 21.02.2026. (See ei asenda patch’i – see on lisakiht.)
  5. Hinda kompromiteerimise märke, kui võti oli aktiivne ja sait oli internetist kättesaadav: suvalised PHP failid avalikes kataloogides, tundmatud admin-kontod, kahtlased cron’id, ootamatud muudetud failid. (Allikas kirjeldab, et sellist tüüpi haavatavused viivad tihti webshell’ide kaudu täieliku ülevõtuni.)

Kokkuvõte

WPvivid Backup & Migrationi (slug wpvivid-backuprestore) versioonides kuni 0.9.123 oli kriitiline autentimata suvalise faili üleslaadimise haavatavus (CVE-2026-1357, CVSS 9.8), mis teatud seadistuse korral võimaldas jõuda RCE-ni ja sisuliselt täieliku saidi ülevõtuni. Ründe eeldus on, et pistikprogrammis on aktiveeritud teiselt saidilt varukoopia vastuvõtmise võimekus ehk seadetes on loodud genereeritud võti; see funktsioon on vaikimisi väljas ja võtme eluiga on piiratud (max 24h).

Parandus on väljas versioonis 0.9.124, kus lisati krüptovoo korrektne katkestamine ebaõnnestunud RSA dekrüpteerimisel ning send_to_site() teekonnale failinime normaliseerimine ja lubatud varufailide laiendite whitelist. Kui WPvivid on sinu stack’is, on see uuendus sisuliselt kohustuslik.

Liitu HelloWP kogukonnaga!

Vestle meiega WordPressist ja veebiarendusest ning jaga kogemusi teiste arendajatega.

- liiget
- võrgus
Liitu

Kasutame küpsiseid teie kogemuse parandamiseks. Jätkates nõustute meie Küpsiste poliitikaga.