Pāriet uz saturu
Kritiska WPvivid Backup ievainojamība: līdz 800 000 WordPress instalāciju riskā, ja aktivizēta “send backup to this site” atslēga
Līga Bērziņa
Līga Bērziņa 2026. gpmdpm 11. February · 9 min lasīšana

Kritiska WPvivid Backup ievainojamība: līdz 800 000 WordPress instalāciju riskā, ja aktivizēta “send backup to this site” atslēga

WordPress drošības ziņās ir ļoti konkrēts gadījums, kur “it kā nišas funkcija” pēkšņi kļūst par kritisku risku lielam instalāciju skaitam. Wordfence komanda ziņoja par neautentificētu Arbitrary File Upload ievainojamību WPvivid Backup & Migration spraudnī (WordPress.org slugs: wpvivid-backuprestore), kuram ir vairāk nekā 800 000 aktīvu instalāciju.

Sliktā ziņa: ievainojamība ļauj uzbrucējam augšupielādēt patvaļīgus failus un praktiski nonākt līdz Remote Code Execution (RCE) – t.i., palaist ļaunprātīgu kodu uz servera, kas bieži beidzas ar pilnu vietnes pārņemšanu (webshell, backdoor u.c.). Labā ziņa: pēc Wordfence informācijas, kritiskais risks attiecas tikai uz tām vietnēm, kur spraudņa iestatījumos ir ģenerēta atslēga, lai ļautu citai vietnei nosūtīt rezerves kopiju uz jūsu vietni (šī iespēja ir izslēgta pēc noklusējuma, un atslēgas derīguma termiņu var uzstādīt maksimums uz 24 stundām).

Kas tieši ir atklāts (kopsavilkums)

  • Ievainojamība: Unauthenticated Arbitrary File Upload (neautentificēts patvaļīgu failu augšupielādes caurums).
  • Ietekmētais spraudnis: Migration, Backup, Staging – WPvivid Backup & Migration (wpvivid-backuprestore).
  • Ietekmētās versijas: ≤ 0.9.123.
  • Salabotā versija: 0.9.124.
  • CVE: CVE-2026-1357.
  • Smagums: CVSS 9.8 (Critical).
  • Ekspluatācijas rezultāts: iespējams augšupielādēt ļaunprātīgu PHP failu publiski pieejamā direktorijā un panākt RCE.
  • Kritiskā ietekme praksē: galvenokārt vietnēm, kur iestatījumos ir izveidota atslēga “saņemt backup no citas vietnes” (funkcija pēc noklusējuma atslēgta, atslēga der max 24h).

Aizsardzība un termiņi: Wordfence ugunsmūra noteikumi

Wordfence norāda, ka aizsardzība ar ugunsmūra (WAF) noteikumu tika izplatīta šādos termiņos:

  • Wordfence Premium, Wordfence Care un Wordfence Response lietotāji ugunsmūra noteikumu saņēma 2026. gada 22. janvārī.
  • Wordfence Free lietotāji to pašu aizsardzību saņems 30 dienas vēlāk – 2026. gada 21. februārī.

Svarīgi

Pat ja tev ir Wordfence, primārais labojums ir atjaunināt WPvivid uz salaboto versiju. Ugunsmūris ir papildu aizsardzības slānis, nevis iemesls atlikt atjauninājumu.

Ko darīt tūlīt (īpaši, ja izmanto “Send backup to this site” funkciju)

  1. Pārbaudi WPvivid Backup & Migration versiju: ja tā ir 0.9.123 vai vecāka, plāno steidzamu atjauninājumu.
  2. Atjaunini spraudni uz 0.9.124 (Wordfence publikācijas brīdī tā ir versija ar pilnu ielāpu).
  3. WPvivid iestatījumos pārbaudi, vai ir ģenerēta atslēga, kas ļauj citai vietnei sūtīt backup uz tavu vietni. Ja funkcija nav nepieciešama, atstāj to izslēgtu pēc noklusējuma pieejā un neveido atslēgas bez vajadzības.
  4. Ja atslēgu izmanto, ņem vērā, ka atslēgas derīguma termiņu var uzstādīt maksimums uz 24 stundām – tas jau pēc dizaina ierobežo ekspozīcijas laiku, bet ievainojamības gadījumā kritiska ir tieši aktīvas atslēgas klātbūtne.
  5. Ja ir aizdomas par kompromitāciju (nezināmi PHP faili uploads direktorijās, dīvaini cron, jauni admin lietotāji), veic incidenta izmeklēšanu un tīrīšanu, jo šāda klase ievainojamību bieži tiek izmantota webshell ievietošanai.

Tehniskā analīze: kāpēc šis caurums strādā

WPvivid ir funkcija, kas ļauj saņemt rezerves kopiju no citas vietnes. Lai to izdarītu, spraudnis izmanto īstermiņa ģenerētu atslēgu. Wordfence analīzē minēts, ka rezerves kopiju saņemšanu apstrādā send_to_site() funkcija klasē WPvivid_Send_to_site (ieejas punkts ar parametru wpvivid_action=send_to_site).

Plūsma ir aptuveni šāda: no $_POST['wpvivid_content'] tiek saņemts base64 kodēts saturs, tas tiek atkodēts un nodots atšifrēšanai (decrypt_message()), izmantojot spraudņa iestatījumos saglabāto atslēgu materiālu. Problēma rodas kriptogrāfijas posmā un pēc tam faila pierakstīšanā uz diska.

1) Nepareiza kļūdu apstrāde RSA atšifrēšanā → paredzama AES/Rijndael atslēga

Ievainojamības aprakstā ir divas kombinētas problēmas. Pirmā: ja sesijas atslēgas RSA atšifrēšana neizdodas (Wordfence piemin openssl_private_decrypt() neveiksmi un to, ka izpilde netiek apturēta), rezultāts var būt false. Šis false nonāk tālāk līdz AES/Rijndael šifra inicializācijai (phpseclib), un bibliotēka false vērtību interpretē kā virkni no null-baitiem (null bytes).

No uzbrucēja skatpunkta tas ir kritiski: ja šifrēšanas atslēga kļūst paredzama (praktiski “null-baitu atslēga”), uzbrucējs var sagatavot šifrētu payload, kas tiks korekti “atšifrēts” ar šo paredzamo atslēgu. Rezultātā iespējams kontrolēt tālāk apstrādājamo saturu, neesot autentificētam.

2) Faila ceļa sanitizācijas trūkums + failu tipu/ekstenziju kontroles trūkums

Otrā problēma: spraudnis pieņem faila nosaukumu no atšifrētā payload bez pietiekamas sanitizācijas, kas ļauj directory traversal (izkļūt ārpus aizsargātā backup direktorija). Kombinācijā ar to, ka augšupielādes funkcijā sākotnēji nebija faila tipa vai ekstenzijas ierobežojumu, uzbrucējs var mēģināt augšupielādēt, piemēram, PHP failu kādā publiski sasniedzamā direktorijā un pēc tam to izsaukt caur pārlūku, lai panāktu Remote Code Execution.

Kāpēc Arbitrary File Upload gandrīz vienmēr ir “game over”

Ja uzbrucējs var augšupielādēt PHP failu webroot zonā un to izsaukt, tālāk parasti seko webshell, jaunu admin kontu izveide, spraudņu/tēmu aizvietošana, datu eksfiltrācija un persistences mehānismi.

Ielāps 0.9.124: kas tika mainīts

Wordfence apraksta divus būtiskus labojumus, ko ieviesa WPvivid izstrādātāji.

1) decrypt_message() pārtrauc darbu, ja RSA atslēga ir nederīga

Ielāpā pievienota pārbaude uz $key vērtību: ja pēc RSA atšifrēšanas atslēga ir false vai tukša, funkcija atgriež false un tālāk netiek inicializēts Rijndael šifrs ar “null-baitu” atslēgu.

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

// Patch: terminate decryption path when key is invalid
if ($key === false || empty($key))
{
    return false;
}

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

2) send_to_site() pievieno drošu faila nosaukumu apstrādi un atļauto ekstenziju sarakstu

Papildus kriptogrāfijas labojumam, spraudnis pievienoja failu ekstenziju pārbaudi, lai augšupielādei caur šo ceļu tiktu pieļauti tikai rezerves kopijām raksturīgi formāti. Wordfence piemērā redzams, ka tiek normalizēts faila nosaukums ar basename() un preg_replace(), un atļauto ekstenziju sarakstā ir zip, gz, tar, sql. Ja ekstenzija neatbilst, atgriežas kļūda un izpilde tiek apturēta.

$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();
}

Atklāšanas laika skala (Disclosure Timeline)

  • 2026. gada 12. janvāris – Wordfence saņēma ziņojumu par Arbitrary File Upload ievainojamību WPvivid Backup, izmantojot Wordfence Bug Bounty Program.
  • 2026. gada 22. janvāris – ziņojums tika validēts, apstiprināts proof-of-concept ekspluatācijas scenārijs; vendoram nosūtīts pirmais kontakts ar aicinājumu izmantot Wordfence Vulnerability Management Portal ievainojamības atklāšanas procesa vadībai.
  • 2026. gada 22. janvāris – Wordfence Premium/Care/Response lietotāji saņēma ugunsmūra noteikumu papildu aizsardzībai.
  • 2026. gada 23. janvāris – vendors atbildēja un izvēlējās komunikāciju pa e-pastu.
  • 2026. gada 23. janvāris – Wordfence nosūtīja vendoram pilnas atklāšanas detaļas; vendors apstiprināja un sāka labojuma izstrādi.
  • 2026. gada 28. janvāris – publicēta pilnībā salabotā spraudņa versija 0.9.124.
  • 2026. gada 21. februāris – Wordfence Free lietotāji saņems identisku ugunsmūra aizsardzību.

Pētnieks un Wordfence Bug Bounty programmas konteksts

Ievainojamību atklāja un atbildīgi ziņoja Lucas Montes (NiRoX) caur Wordfence Bug Bounty Program. Wordfence norāda, ka ziņojums programmā nonāca tikai piecas dienas pēc ievainojamības ieviešanas, un par atklājumu pētnieks saņēma $2,145.00 atlīdzību.

Wordfence arī uzsver, ka viņu Bug Bounty programma ir pieejama WordPress spraudņiem un tēmām bez maksas no vendoru puses, un pētnieki var nopelnīt līdz $31,200 par ievainojamību (atkarībā no apjoma un kritiskuma), iesniedzot atbilstošus ziņojumus.

Noslēgums

Šis ir klasisks piemērs, kur vairākas šķietami “mazas” lietas (kļūdu apstrāde kriptogrāfijā, failu ceļu sanitizācija, ekstenziju kontrole) kopā noved pie kritiskas klases ievainojamības. WPvivid Backup & Migration gadījumā (CVE-2026-1357) uzbrukums ir neautentificēts un var beigties ar RCE, kas ir viens no sliktākajiem scenārijiem WordPress servera pusē.

Ja tavā infrastruktūrā ir WPvivid, īpaši, ja tiek izmantota rezerves kopiju saņemšana no citas vietnes ar ģenerētu atslēgu, drošākais solis ir vienkāršs: atjaunini uz 0.9.124 un pārliecinies, ka šī funkcija ir ieslēgta tikai tad, ja tā tiešām ir nepieciešama.

Pievienojieties HelloWP kopienai!

Tērzējiet ar mums par WordPress, tīmekļa izstrādi un dalieties pieredzē ar citiem izstrādātājiem.

- biedri
- tiešsaistē
Pievienoties

Mēs izmantojam sīkdatnes, lai uzlabotu jūsu pieredzi. Turpinot, jūs piekrītat mūsu Sīkdatņu politikai.