ModSecurity di default protegge abbastanza contro XSS?

7

Sono passati alcuni anni da quando ho iniziato a trafficare con la modsecurity ...

Semplicemente installando il pacchetto con le regole predefinite fornirai una validazione sufficiente a prevenire qualsiasi (okay, siamo onesti - meglio possiamo sperare che sia il tipo "più") di XSS? La mia ipotesi è no ... e anche se consideriamo solo Type I - Reflected XSS.

E riguardo al set di regole di base ? E 'abbastanza XSS?
In caso contrario, che tipo di regole mancano e che cosa dovrei cercare di aggiungere / personalizzare, magari su una base per pagina? (uggh ...)

Ultima parte della domanda, che dire delle app pesanti per AJAX? In che modo ModSecurity e in particolare il CRS gestiscono le richieste AJAX senza bloccarle? Suppongo che sperando che in realtà riesca ad analizzare AJAX e convalidare ogni parametro separatamente sarebbe troppo molto da sperare ...

Per chiarire, correggendo il codice per rimuovere tutto l'XSS, compresa la convalida dell'input e in particolare la codifica dell'output contestuale, naturalmente è il modo migliore per andare, e davvero l'unica soluzione a lungo termine.
Tuttavia, stavo cercando una "soluzione rapida" temporanea, per far scattare qualcosa sul posto per proteggere l'app per ora , mentre vanno a riparare l'XSS nel codice, e cercare altro .. .

    
posta AviD 10.04.2011 - 12:50
fonte

4 risposte

8

Dovresti rivedere il XSS Street-Fight (con ModSecurity) Blackhat preso

Descrive le seguenti strategie di mitigazione di ModSecurity per XSS:

  1. Convalida dell'input (whitelist / filtro della lista nera)
  2. Rilevamento payload dell'attacco generico
  3. Identificazione dei difetti di manipolazione dell'output improduttivo (Propagazione dinamica dell'inquinamento)
  4. Profilo di risposta dell'applicazione (monitoraggio del numero di script / iFrame)
  5. JavaScript Sandbox Injection (Capacità dell'iniezione del contenuto di ModSecurity)
risposta data 10.04.2011 - 18:14
fonte
7

Stavo per suggerire di dare un'occhiata al lavoro di Ryan Barnett, ma ha già risposto!

La convalida dei dati non è sufficiente per prevenire XSS, anche se è una whitelist pura.

L'identificazione di una gestione errata dell'output deve avvenire su tutte le uscite. Potrebbero essere in grado di essere corretti contestualmente con ModSecurity, ma certamente questo è il posto sbagliato nell'architettura per farlo - dal momento che se qualcosa cambia in relazione a quel contenuto - la codifica / fuga sarebbe improvvisamente diventata inutile. Il contenuto Web ha un modo di cambiare molto.

La risposta corretta consiste nel monitorare i problemi di escape dell'output con ModSecurity - e in realtà rimediare ai problemi XSS altrove.

Uno degli approcci migliori che ho sentito ultimamente è Interrompi la costruzione di HTML sul server . In particolare, questo ucciderebbe due piccioni con una fava: potreste risolvere i problemi con AJAX (ad esempio XSS basato su DOM) così come i problemi XSS memorizzati e riflessi.

Tuttavia, ti consiglio vivamente di dare un'occhiata alle librerie di codifica in OWASP ESAPI e OWASP ESAPI JS . Il miglior consiglio di riparazione deriva dalla codifica dell'output contestuale. Rimediare all'XSS è molto lavoro, ma vale la pena pensare a questi problemi come più duraturi e con un impatto serio se non li risolviamo ora.

    
risposta data 10.04.2011 - 22:19
fonte
0

Mod Security è un lavoro assolutamente fantastico da parte di tutti i soggetti coinvolti. Tuttavia, non aspettarti di "impostare e dimenticare". Ci è voluto molto lavoro per mettere a punto l'installazione per eliminare i falsi positivi dal set di regole di base.

    
risposta data 11.04.2011 - 01:38
fonte
0

Probabilmente no, ma dovresti testarlo per te stesso. Sitewatch , Acunetix e W3AF sono tutti gratuiti e testeranno la tua applicazione per XSS. Oltre a ciò, un utente malintenzionato può creare un payload per XSS appositamente per ignorare mod_secuirty. Per instnace ci sono moduli di bypass Mod_Security per W3AF. Quindi usare un WAF come questo non è un approccio Difesa in profondità .

    
risposta data 11.04.2011 - 02:10
fonte

Leggi altre domande sui tag