Nell'ambito del progetto un modulo per l'integrazione con l'interprete PHP7, destinato a migliorare la sicurezza dell'ambiente e a bloccarsi errori comuni che portano a vulnerabilità nelle applicazioni PHP eseguite. Il modulo consente anche di creare patch virtuali per risolvere specifici problemi senza modificare i testi sorgente delle applicazioni vulnerabili, il che è utile nei sistemi di hosting condiviso, dove non è possibile mantenere tutte le applicazioni degli utenti aggiornate. Il modulo è scritto in C, si integra come libreria condivisa ("extension=snuffleupagus.so" in php.ini) e è sotto licenza LGPL 3.0.
Snuffleupagus offre un sistema di regole che consente di utilizzare sia modelli predefiniti per migliorare la protezione, sia di creare regole personalizzate per controllare i dati in ingresso e i parametri delle funzioni. Ad esempio, la regola «sp.disable_function.function(«system»).param(«command»).value_r(«[$|;&`\n]»).drop();» permette di limitare l'uso dei caratteri speciali negli argomenti della funzione system() senza modificare le applicazioni. Analogamente, è possibile creare per bloccare vulnerabilità note.
Secondo i test condotti dagli sviluppatori, Snuffleupagus riduce quasi a zero le prestazioni. Per garantire la propria sicurezza (le vulnerabilità potenziali nella layer di protezione possono fungere da ulteriore vettore per attacchi), nel progetto è applicato un rigoroso testing di ogni commit su diverse distribuzioni, utilizzando sistemi di analisi statica e svolgendo una documentazione accurata del codice per semplificare l'audit.
Sono forniti metodi integrati per bloccare classi di vulnerabilità come problemi, alla serializzazione dei dati, utilizzando la funzione PHP mail(), perdite di contenuto dei Cookie durante attacchi XSS, problemi derivanti dal caricamento di file con codice eseguibile (ad esempio, in formato ), generazione inadeguata di numeri casuali e di costruzioni XML non valide.
Tra le modalità per aumentare la sicurezza PHP ci sono:
- L'attivazione automatica dei flag «secure» e «samesite» (protezione contro CSRF) per i Cookie, dei Cookie;
- Un set integrato di regole per rilevare tracce di attacchi e compromissioni delle applicazioni;
- Forzatura dell'attivazione globale della modalità «» (ad esempio, blocca il tentativo di specificare una stringa quando ci si aspetta un valore intero come argomento) e protezione da ;
- Blocco predefinito (ad esempio, divieto di «phar://») con il loro esplicito permesso tramite una lista bianca;
- Divieto di eseguire file che sono accessibili in scrittura;
- Liste nere e bianche per eval;
- Attivazione obbligatoria del controllo dei certificati TLS durante l'utilizzo di
curl; - Aggiunta di HMAC agli oggetti serializzati per garantire che durante la deserializzazione i dati siano quelli salvati dall'applicazione originale;
- Modalità di registrazione delle richieste;
- Blocco del caricamento di file esterni in libxml tramite collegamenti in documenti XML;
- Possibilità di collegare gestori esterni (upload_validation) per controllare e scansionare i file caricati;
Il progetto è stato creato e utilizzato per proteggere gli utenti nell'infrastruttura di uno dei principali operatori di hosting francesi. , che semplicemente connettere Snuffleupagus consentirebbe di proteggere da molte pericolose vulnerabilità emerse quest'anno in Drupal, WordPress e phpBB. Le vulnerabilità in Magento e Horde potrebbero essere bloccate attivando la modalità
«sp.readonly_exec.enable()».
Fonte: opennet.ru
