Penso che sarà utile aggiungere un commento a questa risposta, incluso lo stato corrente.
Attacchi cifratici adattati eletti:
Gli attacchi applicati su XML Encryption sono attacchi a testo cifrato adattivi scelti. In uno scenario di attacco con testo cifrato adattativo scelto, l'utente malintenzionato prende il testo cifrato originale, lo modifica e lo invia al server. Quindi valuta la risposta del server, che gli consente di decidere se il testo in chiaro sottostante è valido o meno. Ripete più volte ciò che gli consente di decifrare l'intero messaggio.
Questi attacchi sono ad es. applicabile agli schemi CBC (modalità operativa Cipher Block Chaining), che è ancora standardizzata da XML Encryption o da molti altri standard. CBC (AES-CBC o 3DES-CBC) consente di modificare i plaintext nel testo cifrato, senza conoscere la chiave di crittografia. Più specificamente, l'attaccante è in grado di capovolgere i bit specifici nel testo in chiaro (non sto entrando nei dettagli, per favore leggi la carta o il post sul blog di Matt Green menzionato nella prima risposta). Se alcuni bit nel testo in chiaro vengono capovolti, l'utente malintenzionato genera un messaggio che non può essere elaborato dal parser XML. Altri bit generano testi in chiaro validi.
Prerequisiti di attacco:
Ci sono due prerequisiti per l'esecuzione dell'attacco. Innanzitutto, l'utente malintenzionato deve essere in grado di modificare i testi cifrati e imporre al server di elaborarli. Secondo, l'attaccante deve avere un'informazione se il testo cifrato decrittografato è valido o meno. Ciò è in genere possibile poiché il server risponde con un diverso messaggio di errore se il testo cifrato modificato era valido e con un messaggio diverso se non era valido (esistono anche altri modi per distinguere i messaggi validi o non validi, ad esempio misurando i tempi di risposta).
Ok, ma le firme XML dovrebbero garantire l'integrità ...
Sì, abbiamo lo standard XML Signature che consente di proteggere l'integrità dei messaggi XML. Ciò mitiga teoricamente gli attacchi dal momento che i testi cifrati possono essere firmati. Ciò impedisce la modifica del testo cifrato (il primo prerequisito di attacco).
Tuttavia, in tutti i framework testati, è stato possibile applicare questo attacco anche se sono state applicate le firme XML. In breve, una tipica firma XML protegge solo una parte di un messaggio XML. Siamo stati in grado di posizionare i testi cifrati modificati in parti, che non erano firmate. Anche se non sono stati firmati, i framework sono stati elaborati e decodificati.
Questo non è stato considerato dallo standard XML Encryption e ora viene indirizzato nella versione più recente, incluso uno schema di crittografia sicuro AES-GCM: link
Framework che abbiamo analizzato:
Abbiamo analizzato alcuni framework e scoperto che erano vulnerabili agli attacchi. Ad esempio Apache Axis2, JBossWS, Apache CXF o alcuni framework SAML. Gli attacchi hanno funzionato, anche se sono state utilizzate le firme XML.
Contromisure:
Come menzionato nella prima risposta, ci sono diverse contromisure elencate nel nuovo standard. Se si progetta o si utilizza XML Security, il server deve controllare attentamente se i testi cifrati sono stati firmati. Se il messaggio contiene un testo cifrato senza segno, il messaggio dovrebbe essere rifiutato. Ecco come è stato implementato ora in Apache CXF. Un'altra possibilità è usare AES-GCM ...
Per ulteriori informazioni, puoi dare un'occhiata alla mia tesi, che riassume tutti gli attacchi (compresi gli attacchi su RSA PKCS # 1 v1.5) e fornisce diversi contromisure: link
Stato attuale:
Con le contromisure presentate, è possibile implementare un sistema sicuro contro gli attacchi adattati al testo cifrato. Abbiamo fatto diversi pentests e abbiamo visto molti sistemi, dove non siamo stati in grado di applicare questi attacchi.
Penso che XML Encryption (insieme a XML Signature) sia un ottimo standard che supporta così tanti scenari di riservatezza. Ma devi prestare attenzione a come configuri il tuo sistema (non sono sicuro che i framework siano sicuri per impostazione predefinita).
Aggiorna
Abbiamo rilasciato un plug-in per il nostro framework WS-Attacker per testare le vulnerabilità nei servizi Web utilizzando XML Encryption: link
Abbiamo presentato il nostro nuovo articolo: Come rompere la crittografia XML - Automaticamente: link
Lì, abbiamo analizzato anche il framework WCF.