Elementor Pro 4.2.2 korjaa kriittisen tiedostolataushaavoittuvuuden
Elementor Prossa on korjattu kriittinen haavoittuvuus, joka koskee kaikkia versioita 4.2.1:een asti. Haavoittuva sivusto voi hyväksyä kirjautumattoman hyökkääjän lähettämän mielivaltaisen tiedoston, myös suoritettavan PHP-tiedoston. Se voi johtaa etäkoodin suoritukseen palvelimella ja koko WordPress-sivuston haltuunottoon.
Päivitä Elementor Pro heti
Asenna Elementor Pro 4.2.2 tai uudempi versio. Haavoittuvuus on korjattu versiossa 4.2.2, kun taas kaikki versiot 4.2.1:een asti ovat alttiita.
Ketä haavoittuvuus koskee
Haavoittuvuus koskee Elementor Prota, jolla on arviolta 6 000 000 aktiivista asennusta. Sen CVE-tunnus on CVE-2026-32475, ja haavoittuvuuden CVSS-pistemäärä on 9,8/10 eli kriittinen.
Hyökkäys onnistuu vain, jos sivustolla on julkaistu sivu, jossa Elementor Pron Form-widget sisältää vähintään yhden File Upload -kentän. Kenttää ei myöskään saa olla merkitty pakolliseksi. Hyökkääjä ei tarvitse WordPress-tunnusta eikä muuta autentikointia.
Virhe syntyy tiedostotaulukon validoinnissa
Form-widget käsittelee lomakkeen lähetyksen Ajax_Handler-luokan ajax_send_form()-funktion kautta, johon myös kirjautumaton kävijä pääsee käsiksi. Lisäosa pakkaa hyökkääjän lähettämän datan ja ladatut tiedostot Form_Record-objektiin, minkä jälkeen ElementorProModulesFormsFieldsUpload-luokka validoi ja käsittelee File Upload -kentät funktioilla validation() ja process_field().
Virhe on Upload::validation()-funktion silmukassa. Kun valinnainen tiedostokenttä kohtaa ensimmäisenä tyhjän latauspaikan, PHP asettaa sille virhekoodin UPLOAD_ERR_NO_FILE. Koodin pitäisi ohittaa tämä yksittäinen kohta continue-lauseella, mutta se käyttää return-lausetta ja lopettaa siten koko kentän kaikkien jäljellä olevien tiedostojen validoinnin.
foreach ( $files[ $id ] as $index => $file ) {
// Valinnaisen kentän tyhjä ensimmäinen latauspaikka lopettaa validoinnin.
if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
return;
}
if ( ! $this->is_file_type_valid( $field, $file ) ) {
$ajax_handler->add_error(
$id,
esc_html__( 'This file type is not allowed.', 'elementor-pro' )
);
}
if ( ! $this->is_file_size_valid( $field, $file ) ) {
$ajax_handler->add_error(
$id,
esc_html__( 'This file exceeds the maximum allowed size.', 'elementor-pro' )
);
}
}Tämän ennenaikaisen paluun vuoksi lisäosa ei tarkista kentän myöhempien tiedostojen tiedostopäätettä eikä kokoa. Hyökkääjä voi lähettää kentän taulukkona, jossa ensimmäinen osa on tyhjä ja toinen sisältää PHP-payloadin hyökkääjän valitsemalla tiedostopäätteellä. Tyhjä ensimmäinen osa ohittaa koko validoinnin.
Käsittely tallentaa validoimattoman PHP-tiedoston
Vaikka validation() lopettaa työnsä liian aikaisin, process_field() käyttää tyhjälle latauspaikalle oikein continue-lausetta. Se siis ohittaa tyhjän ensimmäisen osan, mutta käsittelee silti toisen, validoimatta jääneen tiedoston. Funktio ottaa tiedostopäätteen suoraan asiakkaan toimittamasta tiedostonimestä, muodostaa yksilöllisen nimen ja kirjoittaa tiedoston levylle.
foreach ( $files[ $id ] as $index => $file ) {
if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
continue;
}
$uploads_dir = $this->get_ensure_upload_dir();
$file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
$filename = uniqid() . '.' . $file_extension;
$filename = wp_unique_filename( $uploads_dir, $filename );
$new_file = trailingslashit( $uploads_dir ) . $filename;
$move_new_file = Plugin::instance()->php_api->move_uploaded_file(
$file['tmp_name'],
$new_file
);
}Näin esimerkiksi .php-päätteinen tiedosto päätyy /wp-content/uploads/elementor/forms/-hakemistoon. Hyökkääjä voi tämän jälkeen pyytää ladatun tiedoston URL-osoitetta ja suorittaa sen sisältämän PHP-koodin palvelimella. Mielivaltainen tiedostolataus voi mahdollistaa esimerkiksi webshellin asentamisen ja sivuston täydellisen kompromettoinnin.
Toimi näin
- Tarkista, onko sivustollasi Elementor Pro käytössä.
- Päivitä lisäosa välittömästi versioon 4.2.2 tai sitä uudempaan versioon.
- Varmista päivityksen jälkeen, ettei käytössä ole versio 4.2.1 tai sitä vanhempi julkaisu.
- Kiinnitä erityistä huomiota julkaistuihin sivuihin, joiden Form-widgetissä on valinnainen File Upload -kenttä, sillä tämä kokoonpano altistaa sivuston hyökkäykselle ennen päivitystä.
Korjauksen aikajana
- 24.7.2026: Haavoittuvuudesta toimitettiin ilmoitus Wordfencelle sen bug bounty -ohjelman kautta.
- 27.7.2026: Ilmoitus ja proof of concept -hyökkäys vahvistettiin, minkä jälkeen haavoittuvuudesta ilmoitettiin Elementorille.
- 2.8.2026: Elementor kertoi, että myös toinen tutkija oli ilmoittanut samasta haavoittuvuudesta ja että korjausta valmistellaan.
- 19.8.2026: Elementor Pro 4.2.2 julkaistiin täysin korjattuna versiona.
Alun perin tälle löydökselle varattu CVE-tunnus hylättiin, koska toinen taho oli ilmoittanut samasta virheestä Elementorille. Käyttöön otettiin tämän toisen ilmoituksen CVE-tunnus CVE-2026-32475. Jos ylläpidät Elementor Pro -sivustoa, varmista nyt lisäosan versio ja päivitä se korjattuun julkaisuun.
Mikko Virtanen
Avoimen lähdekoodin ylläpitäjä ja Linux-ytimen kontribuuttori. Avoin lähdekoodi ja yhteisöllinen kehitys ovat intohimoni. Koodin tulee olla vapaata!
Kaikki julkaisut