Siirry sisältöön
WPvivid Backup & Migration -lisäosasta löytyi kriittinen tiedostonlataushaavoittuvuus (CVE-2026-1357): näin tarkistat riskin ja paikkaat oikein
Hannah Turing
Hannah Turing 11. February 2026 · 4 min lukuaika

WPvivid Backup & Migration -lisäosasta löytyi kriittinen tiedostonlataushaavoittuvuus (CVE-2026-1357): näin tarkistat riskin ja paikkaat oikein

Wordfence raportoi helmikuussa 2026 kriittisestä haavoittuvuudesta WPvivid Backup & Migration -lisäosassa (WordPress.org-slug: wpvivid-backuprestore). Lisäosalla on yli 800 000 aktiivista asennusta, ja kyseessä on luokkaa “unauthenticated arbitrary file upload” eli kirjautumaton hyökkääjä voi tietyissä olosuhteissa ladata palvelimelle mielivaltaisen tiedoston. Käytännössä tämä tarkoittaa usein etäkoodin suoritusta (Remote Code Execution, RCE) ja pahimmillaan koko sivuston haltuunottoa.

Oleellinen rajaus: kaikki asennukset eivät ole yhtä lailla kriittisessä riskissä

Wordfencen mukaan haavoittuvuus osuu kriittisesti niihin sivustoihin, joissa WPvividin asetuksista on luotu “generated key” toisen sivuston varmuuskopion vastaanottamiseen. Ominaisuus on oletuksena pois päältä, ja avaimen voimassaolo voidaan asettaa enintään 24 tuntiin.

Mikä on haavoittuvuuden ydin (CVE-2026-1357)?

Wordfence Intelligence -tietojen mukaan WPvivid Backup & Migration (haavoittuvuusotsikolla “Migration, Backup, Staging <= 0.9.123 - Unauthenticated Arbitrary File Upload”) on haavoittuva versioihin 0.9.123 asti. CVSS-luokitus on 9.8 (Critical) ja CVE-tunnus on CVE-2026-1357. Korjattu versio on 0.9.124.

  • Vaikutus: kirjautumaton hyökkääjä voi ladata mielivaltaisia tiedostoja ja saavuttaa etäkoodin suorituksen (RCE), mikä on tyypillinen reitti täydelliseen sivuston kompromissiin (esim. webshell).
  • Vaikuttavat versiot: <= 0.9.123
  • Korjattu versio: 0.9.124
  • CVE: CVE-2026-1357
  • CVSS: 9.8 (Critical)
  • Erityisehto kriittiselle hyödyntämiselle: sivustossa on oltava WPvividissä luotu vastaanottoavain (“generated key”), jolla toinen sivusto voi lähettää varmuuskopion tähän sivustoon.

Miksi tämä on mahdollinen: virheenkäsittely, salausavaimen nolla-avaimeksi “putoaminen” ja polun puhdistuksen puute

Wordfencen tekninen analyysi kuvaa ketjun, jossa useampi ongelma yhdessä mahdollistaa hyödyntämisen. WPvividissä on ominaisuus, jossa sivusto voi vastaanottaa varmuuskopion toiselta sivustolta lyhytikäisellä avaimella. Tätä vastaanottoa käsitellään WPvivid_Send_to_site-luokan send_to_site()-funktiossa, jossa wpvivid_content-POST-parametri base64-dekoodataan ja puretaan WPvivid_crypt-luokan decrypt_message()-metodilla.

Kriittinen kohta on RSA-purku ja sen virheenkäsittely: jos RSA-dekryptaus epäonnistuu (Wordfencen yhteenvedossa mainitaan tilanne, jossa openssl_private_decrypt() ei onnistu), avainarvo voi päätyä boolean false -tilaan. Wordfencen mukaan suoritus ei tällöin pysähdy, vaan false syötetään seuraavaan vaiheeseen (phpseclibin AES-/Rijndael-salauksen alustus). Kirjaston tulkinta johtaa käytännössä ennustettavaan “null byte” -avaimeen (nollatavuja), jolloin hyökkääjä voi muodostaa hyötykuorman, joka on salattu tällä ennustettavalla avaimella.

Toinen osa ketjua liittyy tiedoston kirjoittamiseen: Wordfencen mukaan lisäosa hyväksyy puretusta hyötykuormasta tulevan tiedostonimen ilman riittävää polun sanitointia. Tämä mahdollistaa directory traversal -tyyppisen polkumanipuloinnin, jolla voidaan karata suojatusta varmuuskopiohakemistosta ja kirjoittaa tiedosto julkisesti paljastettuun hakemistoon (esim. webrootin alle). Kun lisäksi tiedoston latauksessa ei ollut tiedostotyypin tai päätteen tarkastusta, hyökkääjä pystyi latamaan esimerkiksi PHP-tiedoston ja suorittamaan sen.

Hyökkäysvektori Wordfencen mukaan

Wordfence kuvaa, että hyödyntäminen on mahdollista parametrin wpvivid_action=send_to_site kautta, jolloin kirjautumaton hyökkääjä voi saada haitallisen PHP-tiedoston palvelimelle ja ajaa etäkoodia.

Mitä WPvivid korjasi versiossa 0.9.124?

Wordfencen mukaan korjaus koostuu kahdesta keskeisestä muutoksesta:

  1. decrypt_message()-metodiin lisättiin tarkistus, joka pysäyttää prosessin, jos RSA-purun tuloksena saatava $key on false tai tyhjä. Käytännössä tämä estää tilanteen, jossa salauksen avain “putoaa” ennustettavaan nolla-avaimeen.
  2. send_to_site()-polkuun lisättiin tiedostopäätteen tarkistus ja nimen turvallistaminen: tiedostonimi otetaan basename()-käsittelyn kautta, siitä poistetaan sallitun merkkijoukon ulkopuoliset merkit (preg_replace('/[^a-zA-Z0-9._-]/', '', ...)), ja sallittujen päätteiden listaksi asetetaan zip, gz, tar, sql. Jos pääte ei ole sallittu, pyyntö hylätään virheellä “Invalid file type – only backup files allowed.”

Korjauksen kannalta kiinnostavat koodimuutokset (lähteen mukaisesti)

public function decrypt_message($message)
{
    $len = substr($message, 0, 3);
    $len = hexdec($len);

    $key = substr($message, 3, $len);

    $cipherlen = substr($message, ($len + 3), 16);
    $cipherlen = hexdec($cipherlen);

    $data = substr($message, ($len + 19), $cipherlen);

    $rsa = new Crypt_RSA();
    $rsa->loadKey($this->public_key);
    $key = $rsa->decrypt($key);

    // Patch: stop if key decrypt fails or empty
    if ($key === false || empty($key))
    {
        return false;
    }

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

    return $rij->decrypt($data);
}
$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();
}

Kenelle tämä on oikeasti kiireellinen? (WPvividin “send backup to this site” -avain)

Jos käytät WPvivid Backup & Migration -lisäosaa vain “perinteiseen” varmuuskopiointiin ja palautukseen ilman, että olet ottanut käyttöön ominaisuutta, jossa toinen sivusto lähettää backupin sinun sivustollesi, riski on Wordfencen kuvauksen mukaan olennaisesti pienempi. Kriittinen hyödyntämisskenaario edellyttää nimenomaan sitä, että WPvividin asetuksissa on luotu vastaanottoavain (ja ominaisuus on siten kytketty päälle).

Huomio avaimen voimassaolosta

Wordfence korostaa, että ominaisuus on oletuksena pois päältä ja avaimen vanheneminen voidaan asettaa enintään 24 tuntiin. Tämä vähentää riskiä, jos avainta käytetään vain hetkellisesti ja sen jälkeen annetaan vanhentua.

Toimenpiteet: mitä teet nyt tuotantosivustolla

  1. Tarkista WPvivid Backup & Migration -lisäosan versio. Jos se on 0.9.123 tai vanhempi, sivusto on haavoittuva lähteen kuvauksen mukaan.
  2. Päivitä lisäosa välittömästi korjattuun versioon 0.9.124 (julkaisutilanteen mukaan tämä on paikkaava versio).
  3. Jos olet käyttänyt “receive a backup from another site” / “send to site” -ominaisuutta: tarkista, onko vastaanottoavain (generated key) yhä aktiivinen, ja varmista että avain vanhenee lyhyessä ajassa (enintään 24h) tai poista se käytöstä, jos et tarvitse ominaisuutta.
  4. Varmista, että suojauskerros on kunnossa: Wordfencen palomuuri (endpoint firewall) voi estää exploit-yrityksiä, mutta ensisijainen korjaus on aina lisäosan päivitys.

Wordfence-suojaus: milloin palomuurisääntö tuli saataville?

Wordfencen mukaan palomuurisääntö, joka suojaa haavoittuvuuteen kohdistuvilta hyökkäyksiltä, toimitettiin 22.1.2026 käyttäjille, joilla on Wordfence Premium, Wordfence Care tai Wordfence Response. Wordfence Free -käyttäjille sama suojaus tulee 30 päivää myöhemmin, eli Wordfencen ilmoituksen mukaan 21.2.2026.

Disclosure timeline (lähteen aikajana)

  • January 12, 2026 – Haavoittuvuusraportti saapui Wordfencen Bug Bounty Programin kautta.
  • January 22, 2026 – Wordfence validoi raportin ja vahvisti proof-of-concept -hyödyntämisen. Samana päivänä Wordfence otti yhteyttä toimittajaan ja ehdotti Wordfence Vulnerability Management Portal -palvelun käyttöä haavoittuvuuden käsittelyyn: https://www.wordfence.com/threat-intel/vendor/vulnerability-management-portal/
  • January 22, 2026 – Wordfence Premium/Care/Response -asiakkaille julkaistiin palomuurisääntö lisäsuojaksi.
  • January 23, 2026 – Toimittaja vastasi ja valitsi viestintäkanavaksi sähköpostin.
  • January 23, 2026 – Wordfence toimitti täydet yksityiskohdat, toimittaja kuittasi ja aloitti korjauksen.
  • January 28, 2026 – Korjattu lisäosaversio 0.9.124 julkaistiin.
  • February 21, 2026 – Wordfence Free -käyttäjille palomuurisääntö tulee saataville.

Tutkija ja palkkio

Haavoittuvuuden löysi ja raportoi vastuullisesti Lucas Montes (NiRoX) Wordfencen Bug Bounty Programin kautta. Wordfencen mukaan raportti tuli ohjelmaan viisi päivää sen jälkeen, kun haavoittuvuus oli ylipäätään ehtinyt tulla mukaan koodiin. Löydöstä maksettu bounty oli 2 145 USD.

Yhteenveto

WPvivid Backup & Migration -lisäosan versioissa <= 0.9.123 oli kriittinen “unauthenticated arbitrary file upload” -haavoittuvuus (CVE-2026-1357), joka voi mahdollistaa etäkoodin suorituksen ja sivuston haltuunoton. Wordfencen mukaan pahin riski koskee niitä asennuksia, joissa on luotu vastaanottoavain toisen sivuston varmuuskopion vastaanottamiseen. Korjaus on julkaistu versiossa 0.9.124, joten tärkein ja käytännöllisin toimenpide on päivittää lisäosa heti.

Hannah Turing

Hannah Turing

WordPress-kehittäjä ja tekninen kirjoittaja HelloWP:llä. Autan kehittäjiä rakentamaan parempia verkkosivustoja moderneilla työkaluilla kuten Laravel, Tailwind CSS ja WordPress-ekosysteemi. Intohimona puhdas koodi ja kehittäjäkokemus.

Kaikki julkaisut

Liity HelloWP-yhteisöön!

Keskustele kanssamme WordPressistä ja web-kehityksestä sekä jaa kokemuksia muiden kehittäjien kanssa.

- jäsentä
- paikalla
Liity

Käytämme evästeitä parantaaksemme käyttökokemustasi. Jatkamalla hyväksyt Evästekäytäntömme.