
Introduzione
Il 7 maggio 2024, WP-Firewall, un'organizzazione leader nella consulenza sulla sicurezza, ha pubblicato un rapporto dettagliato sulle vulnerabilità critiche scoperte nel plugin Uncode Core. Se sei un utente Uncode, è fondamentale aggiornare il tuo plugin core almeno alla versione 2.8.9 per proteggere il tuo sito WordPress da potenziali attacchi. Questo post approfondirà le specifiche di queste vulnerabilità, le loro implicazioni e i passaggi intrapresi per mitigarle.
Informazioni sul plugin Uncode Core
Il plugin Uncode Core, sviluppato da Undsgn, è un componente essenziale del tema Uncode, un tema premium molto popolare per i siti WooCommerce, con oltre 110.000 vendite su ThemeForest. Il tema Uncode è rinomato per il suo design pixel-perfect, che lo rende ideale per vari siti web, tra cui portfolio, agenzie, freelance, blog e negozi online.
Le vulnerabilità della sicurezza
I ricercatori di sicurezza di WP-Firewall hanno identificato due vulnerabilità significative nel plugin Uncode Core:
1. Eliminazione arbitraria autenticata di file e directory
Descrizione: Questa vulnerabilità consente a qualsiasi utente autenticato con almeno un ruolo di Subscriber di eliminare directory arbitrarie sul server. Il problema risiede nella funzione `delete_download`, che non dispone di controlli appropriati di autorizzazione e nonce. Questa funzione è associata all'azione `wp_ajax_uncodefont_delete_download`, rendendo possibile agli utenti autenticati di sfruttarla.
Dettagli tecnici:
funzione delete_download() {
se (isset($_REQUEST['font_family'])) {
$font_family = $_REQUEST['font_family'];
$font_dir = trailingslashit($this->font_directory).$font_family;
$fontkit_zip = $font_dir.'.zip';
se (@file_exists($fontkit_zip)) {
se (!@unlink($fontkit_zip)) {
echo json_encode(array(
'errore' => sprintf( esc_html__( 'Impossibile eliminare @fontface kit zip %1$s.', 'uncode-core' ), $fontkit_zip )
));
morire();
}
}
// Impossibile eliminare la directory, perché unzip_file, che l'ha creata, usa WP_Filesystem. Quindi usiamo WP_Filesystem per eliminarla.
$this->setup_wp_filesystem();
filesystem globale $wp;
se (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, true);
se (!$delete_dir) {
echo json_encode(array('errore' => $delete_dir['errore']));
morire();
}
}
echo json_encode(array('success' => "Download eliminato"));
}
morire();
}
include/font-system/font-system.php, funzione delete_download()
La funzione costruisce la variabile `$font_dir` dall'input dell'utente (`$_REQUEST['font_family']`) senza sanificazione, consentendo l'attraversamento delle directory e l'eliminazione arbitraria.
2. Escalation dei privilegi autenticati
Descrizione: Questa vulnerabilità consente a qualsiasi utente autenticato con un minimo di ruolo di Subscriber di aumentare i propri privilegi a qualsiasi ruolo sul sito WordPress. Ciò è dovuto a un aggiornamento non sicuro di WP Option nella funzione `save_option`, che non dispone di controlli di autorizzazione appropriati.
Dettagli tecnici:
funzione pubblica save_option() {
se ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'impostazioni-uncode-core-nonce' ) ) {
se ( isset( $_POST['valore'] ) && $_POST['valore'] && isset( $_POST['option_id'] ) && $_POST['option_id'] ) {
$autoload = isset( $_POST['autoload'] ) && $_POST['autoload'] === 'vero' ? vero : falso;
update_option( $_POST['option_id'], $_POST['value'], $autoload );
---------- TAGLIA QUI ----------
include/core-settings/class-core-settings.php, funzione save_option()
Il nonce utilizzato in questa funzione può essere recuperato da qualsiasi utente autenticato con accesso all'area wp-admin, consentendo aggiornamenti non autorizzati alle opzioni e l'escalation dei privilegi.
La toppa
Per risolvere queste vulnerabilità, gli sviluppatori del plugin Uncode Core hanno rilasciato la versione 2.8.9, che include le seguenti correzioni:
– Eliminazione arbitraria autenticata di file e directory: Implementati i controlli dei permessi e del nonce nella funzione `delete_download`.
– Escalation dei privilegi autenticata: Sono stati applicati controlli di autorizzazione e nonce nella funzione `save_option` e aggiunto un controllo di whitelist per le chiavi di opzione.
Conclusione
Garantire la sicurezza del tuo sito WordPress implica rimanere aggiornato con le ultime patch e avvisi di sicurezza. Le vulnerabilità nel plugin Uncode Core sottolineano l'importanza di implementare controlli appropriati di autorizzazione e nonce per qualsiasi azione sensibile. Sanifica sempre gli input degli utenti e limita l'ambito di ciò che può essere aggiornato o eliminato tramite azioni degli utenti.
Per informazioni più dettagliate, puoi leggere l'avviso di sicurezza completo sul sito web di WP-Firewall Qui.
Rimani al sicuro
WP-Firewall offre varie soluzioni per la sicurezza di WordPress, tra cui auditing dei plugin, monitoraggio e risposta alle vulnerabilità e servizi di sicurezza WordPress gestiti. Se sei uno sviluppatore di plugin o un ricercatore di sicurezza, prendi in considerazione l'idea di unirti a WP-Firewall.