Liigu sisu juurde
Elementor Pro kriitiline failiuploadi viga nõuab kiiret uuendust
Liisa Tamm
Liisa Tamm 20. August 2026 · 5 min lugemist

Elementor Pro kriitiline failiuploadi viga nõuab kiiret uuendust

Elementor Pro kriitiline turvanõrkus CVE-2026-32475 lubab autentimata ründajal laadida haavatavale WordPressi saidile suvalisi faile, sealhulgas käivitatavaid PHP-faile. See võib viia serveris koodi kaugkäivituseni ja kogu saidi ülevõtmiseni. Viga mõjutab Elementor Pro kõiki versioone kuni versioonini 4.2.1 (kaasa arvatud); parandatud väljalase on 4.2.2.

Uuenda Elementor Pro kohe

Kontrolli, et kõigis hallatavates saitides töötaks Elementor Pro vähemalt versioonil 4.2.2. Risk tekib siis, kui saidil on avaldatud Elementor Pro Form widgeti vorm, milles leidub vähemalt üks kohustuslikuks märkimata File Upload väli.

Keda viga mõjutab ja miks selle mõju on kriitiline

Elementor Pro on premium-plugin, mis laiendab Elementor page builderit lisavidinatega. Nende hulgas on Form widget, mille File Upload väljad võtavad vastu kasutaja üles laaditud faile. Haavatavas konfiguratsioonis saab iga veebikülastaja vormi endpointi kaudu esitada pahatahtliku üleslaadimise, sest vormi töötlemine ei nõua sisselogimist.

Turvanõrkuse CVSS-i skoor on 9,8/10 ehk kriitiline. Ründaja peab leidma avaliku lehe, mille vormis on mittekohustuslik failiväli. Seejärel saab ta ära kasutada failide massiivi valideerimise viga, et mööduda failitüübi ja faili suuruse kontrollidest.

Valideerimine katkeb esimese tühja faili juures

Vormi saadab töötlema Ajax_Handler klassi funktsioon ajax_send_form(). See tee on kättesaadav ka autentimata külastajale. Üles laaditud failid liiguvad Form_Record objekti kaudu klassi ElementorProModulesFormsFieldsUpload, kus validation() peaks kontrollima nii faililaiendit kui ka faili suurust.

Probleem peitub mittekohustusliku välja tühja faili käsitluses. Kui failimassiivi esimese elemendi veakood on UPLOAD_ERR_NO_FILE, lõpetab kood funktsiooni käsuga return. Õige käsk oleks olnud continue, mis jätaks ainult tühja elemendi vahele ja kontrolliks massiivi järgmisi faile.

foreach ( $files[ $id ] as $file ) {
    // Haavatav loogika: katkestab kogu ülejäänud valideerimise.
    if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
        return;
    }

    if ( ! $this->is_file_type_valid( $field, $file ) ) {
        $ajax_handler->add_error( $id, 'This file type is not allowed.' );
    }

    if ( ! $this->is_file_size_valid( $field, $file ) ) {
        $ajax_handler->add_error( $id, 'This file exceeds the maximum allowed size.' );
    }
}

Ründaja saab saata sama failivälja massiivina, kus esimene kirje on tühi ja järgmine sisaldab pahatahtlikku faili. Esimene kirje käivitab enneaegse return-i ning ülejäänud kirjed ei jõua failitüübi ega suuruse kontrolli. Nii jääb näiteks PHP-faili laiend kontrollimata.

Töötlemine salvestab kontrollimata faili

Valideerimise enneaegsest lõppemisest hoolimata liigub fail edasi process_field() funktsiooni. Seal kasutab kood tühja faili korral korrektselt continue-käsku, jätab esimese kirje vahele ja töötleb järgmist faili. Faililaiend võetakse otse kliendi saadetud failinimest ning fail salvestatakse unikaalse nimega.

foreach ( $files[ $id ] as $file ) {
    if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
        continue; // Jätab tühja kirje vahele.
    }

    $file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
    $filename = uniqid() . '.' . $file_extension;
    $new_file = trailingslashit( $uploads_dir ) . $filename;

    Plugin::instance()->php_api->move_uploaded_file(
        $file['tmp_name'],
        $new_file
    );
}

Seetõttu võib server kirjutada ründaja valitud .php-laiendiga faili kataloogi /wp-content/uploads/elementor/forms/. Kui ründaja küsib selle URL-i kaudu välja, võib server PHP-payloadi käivitada. Suvalise faili üleslaadimise vead võimaldavad sageli kasutada webshelli või muid meetodeid, et kompromiteerida kogu sait.

Mida pead nüüd tegema

  1. Ava iga Elementor Pro-d kasutava WordPressi saidi pluginate haldus ja kontrolli paigaldatud versiooni.
  2. Uuenda Elementor Pro vähemalt versioonile 4.2.2. Avaldamise ajal on see esimene parandusega versioon.
  3. Kontrolli eriti kiiresti saite, mille avalikel lehtedel on Elementor Pro Form widget ning selles mittekohustuslik File Upload väli.
  4. Vaata üle kataloog /wp-content/uploads/elementor/forms/, kui sait töötas enne uuendust haavataval versioonil ja vastas riskitingimustele. Otsi sealt ootamatuid või tundmatuid PHP-faile.
  5. Ära käsitle vormivälja kohustuslikuks märkimist paranduse asendusena: see piirab kirjeldatud ründeteed, kuid tegelik lahendus on plugina uuendamine.

Avalikustamise ajajoon

  • 24. juuli 2026: Wordfence sai turvanõrkuse raporti oma veatasu programmi kaudu.
  • 27. juuli 2026: raport valideeriti, proof-of-concept kinnitati ja haavatavusest teavitati Elementor Pro arendajat.
  • 2. august 2026: arendaja teatas, et sama turvanõrkuse oli raporteerinud ka teine uurija ning parandus on töös.
  • 19. august 2026: avaldati Elementor Pro versioon 4.2.2, mis vea täielikult parandab.

Algselt sellele leiule määratud CVE jäeti kõrvale, sest arendajale oli haavatavusest teatanud ka teine osapool. Kasutusele jäi selle raportiga seotud identifikaator CVE-2026-32475. Kui haldad Elementor Pro-ga saite, sea versiooni 4.2.2 või uuema paigaldamine prioriteediks.

Liisa Tamm

Liisa Tamm

Eesti meeskonna peatoimetaja, e-valitsuse ja digitaalse identiteedi ekspert. Turvaline autentimine ja digital-first lahendused on minu valdkond.

Kõik postitused

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.