SEOPress 7.9: correzione di una vulnerabilità di Object Injection che consentiva accesso non autorizzato
Object Injection vulnerabilità risolta in SEOPress 7.9
Durante un audit di routine su diversi plugin WordPress, è stata individuata una vulnerabilità di tipo Object Injection in SEOPress (più di 300.000 installazioni attive). L’errore consisteva in un bug di autenticazione che permetteva a un aggressore di accedere a determinate rotte REST API protette senza possedere alcun account sul sito target.
Analizzando le potenzialità di tale accesso, è stato riscontrato un ulteriore problema nella gestione dei metadati dei post da parte del plugin. In particolare, il plugin serializzava e deserializzava oggetti in modo non sicuro, consentendo a un attaccante di eseguire Object Injection, una tecnica che può portare a Remote Code Execution (RCE) tramite catene di oggetti serializzati (POP chains).
La vulnerabilità è stata corretta con la versione 7.9, pubblicata il 18 giugno 2024.
Fonti
Fonte: WPScan – https://wpscan.com/vulnerability/28507376-ded0-4e1a-b2fc-2182895aa14c/
Approfondimento
Il plugin SEOPress espone diverse rotte REST API, alcune pubbliche e altre riservate. Per un sottoinsieme di rotte riservate, la verifica di autenticazione era errata: la funzione di callback di permesso controllava il nonce e le credenziali di applicazione, ma passava un oggetto WP_User ottenuto direttamente dal nome utente fornito dall’utente. Poiché la funzione wp_authenticate_application_password() è collegata al filtro “authenticate”, l’oggetto WP_User veniva accettato come autenticato, consentendo l’accesso non autorizzato.
Inoltre, il plugin gestiva i metadati dei post in tabelle personalizzate. Il metodo getContentAnalysis() recuperava i dati e li passava a maybe_unserialize(), mentre la funzione di formattazione dei valori serializzava solo array non vuoti. Se un stringa contenente un oggetto serializzato veniva salvata, sarebbe stata deserializzata senza controllo, permettendo l’iniezione di oggetti controllati dall’attaccante.
Dati principali
| Versione corretta | 7.9 |
| Fixed Version | 7.8.1 |
| CVE ID | CVE-2024-5488 |
| WPVDB-ID | 28507376-ded0-4e1a-b2fc-2182895aa14c |
| CVSSv3.1 | 8.1 |
Possibili Conseguenze
Con l’autenticazione bypassata, un aggressore può:
- Modificare i metadati dei post, inserendo oggetti serializzati controllati.
- Eseguire catene di oggetti (POP chains) che possono portare a Remote Code Execution.
- Avviare campagne di spam SEO sfruttando i metadati alterati.
Opinione
La correzione tempestiva della vulnerabilità dimostra l’importanza di testare accuratamente le funzioni di autenticazione e la serializzazione nei plugin WordPress. La comunità di sviluppatori dovrebbe adottare pratiche di codifica sicura per evitare simili falle.
Analisi Critica (dei Fatti)
Il bug di autenticazione è stato causato da una logica di verifica duplicata e da un passaggio improprio di un oggetto WP_User al filtro “authenticate”. La serializzazione non sicura è un problema noto nei sistemi PHP; in questo caso, la mancanza di controllo sul contenuto serializzato ha permesso l’iniezione di oggetti. La soluzione corretta ha consistito nell’aggiornare la logica di autenticazione e nel rimuovere la serializzazione non necessaria.
Relazioni (con altri fatti)
La vulnerabilità è simile a quelle riscontrate in altri plugin WordPress che gestiscono metadati personalizzati, come plugin X (CVE-2023-XXXX) e plugin Y (CVE-2022-YYYY). Tutti questi casi evidenziano la necessità di controlli rigorosi sulla serializzazione e sull’autenticazione.
Contesto (oggettivo)
SEOPress è un plugin WordPress molto diffuso, con oltre 300.000 installazioni attive. La sua funzione principale è l’ottimizzazione SEO, ma include anche funzionalità avanzate di analisi dei contenuti e gestione dei metadati. Le vulnerabilità di tipo Object Injection sono particolarmente pericolose in PHP, poiché possono trasformarsi in RCE se la catena di oggetti è ben costruita.
Domande Frequenti
1. Che cosa è un Object Injection?
È una vulnerabilità che permette a un aggressore di serializzare oggetti controllati e di farli deserializzare dal software, potenzialmente eseguendo codice arbitrario.
2. Come è stato risolto il problema in SEOPress?
La versione 7.9 ha corretto la logica di autenticazione e ha rimosso la serializzazione non necessaria dei metadati, impedendo l’iniezione di oggetti.
3. Quali sono le conseguenze di non aggiornare SEOPress?
Il sito rimane vulnerabile a accessi non autorizzati, a modifiche dei metadati e a potenziali attacchi di Remote Code Execution.
4. Quando è stato pubblicato l’aggiornamento?
L’aggiornamento 7.9 è stato rilasciato il 18 giugno 2024.
5. Come posso verificare se il mio sito è stato compromesso?
Controllare i log di accesso, verificare eventuali modifiche sospette ai metadati dei post e utilizzare strumenti di scansione di sicurezza come WPScan.



Commento all'articolo