Creo que será útil si agrego un comentario a esta respuesta, incluido el estado actual.
Ataques de texto cifrado elegidos adaptativamente:
Los ataques aplicados en el cifrado XML son ataques adaptativos de texto cifrado. En el caso de un ataque adaptativo con texto cifrado elegido, el atacante toma el texto cifrado original, lo modifica y lo envía al servidor. Luego evalúa la respuesta del servidor, lo que le permite decidir si el texto simple subyacente era válido o no. Repite esto varias veces, lo que le permite descifrar todo el mensaje.
Estos ataques son, por ejemplo, aplicable a los esquemas CBC (modo de operación Cipher Block Chaining), que aún está estandarizado por XML Encryption o muchos otros estándares. CBC (AES-CBC o 3DES-CBC) permite modificar los textos en el texto cifrado, sin conocer la clave de cifrado. Más específicamente, el atacante puede voltear bits específicos en el texto simple (no voy a entrar en detalles, lea el documento o la publicación de blog de Matt Green que se menciona en la primera respuesta). Si se invierten ciertos bits en el texto sin formato, el atacante produce un mensaje, que no puede ser procesado por el analizador XML. Otros bits dan como resultado plaintexts válidos.
Requisitos previos de ataque:
Hay dos requisitos previos para ejecutar el ataque. Primero, el atacante debe poder modificar los textos cifrados y forzar al servidor para que los procese. En segundo lugar, el atacante debe tener una información si el texto cifrado modificado descifrado era válido o no. Esto suele ser posible ya que el servidor responde con un mensaje de error diferente si el texto cifrado era válido y con un mensaje diferente si era inválido (también hay otras formas de distinguir los mensajes válidos o no válidos, por ejemplo, midiendo los tiempos de respuesta).
Bien, pero las firmas XML deberían garantizar la integridad ...
Sí, tenemos el estándar de firma XML que permite asegurar la integridad de los mensajes XML. Esto mitiga teóricamente los ataques, ya que los textos cifrados se pueden firmar. Esto evita la modificación del texto cifrado (el primer requisito previo de ataque).
Sin embargo, en todos los marcos probados, fue posible aplicar este ataque incluso si se aplicaran firmas XML. En resumen, una firma XML típica protege solo una parte de un mensaje XML. Pudimos colocar los textos cifrados modificados en partes que no estaban firmadas. Incluso si no estaban firmados, los marcos los procesaron y los descifraron.
Esto no fue considerado por el estándar de cifrado XML y ahora se aborda en la versión más reciente, incluido un esquema de cifrado seguro AES-GCM: enlace
Marcos que analizamos:
Analizamos algunos marcos y descubrimos que eran vulnerables a los ataques. Por ejemplo, Apache Axis2, JBossWS, Apache CXF o algunos marcos SAML. Los ataques funcionaron, incluso si se utilizaron las firmas XML.
Contramedidas:
Como se mencionó en la primera respuesta, hay varias contramedidas enumeradas en la norma más reciente. Si diseña o usa Seguridad XML, su servidor debe verificar cuidadosamente si los textos cifrados fueron firmados. Si el mensaje contiene un texto cifrado sin firmar, el mensaje debe ser rechazado. Así es como se implementó ahora en Apache CXF. Otra posibilidad es usar AES-GCM ...
Para obtener más información, puede echar un vistazo a mi tesis, que resume todos los ataques (incluidos los ataques a RSA PKCS # 1 v1.5) y proporciona varias medidas de contrarrestación: enlace
Estado actual:
Con las contramedidas presentadas, es posible implementar un sistema seguro contra ataques adaptativos de texto cifrado elegido. Hicimos varios pentests y vimos muchos sistemas, donde no pudimos aplicar estos ataques.
Creo que el cifrado XML (junto con la firma XML) es un gran estándar que soporta muchos escenarios de confidencialidad. Pero debe prestar atención a cómo configura su sistema (no estoy seguro de que los marcos estén seguros por defecto).
ACTUALIZAR
Lanzamos un complemento para nuestro marco WS-Attacker para probar las vulnerabilidades en los servicios web mediante el cifrado XML: enlace
Presentamos nuestro nuevo artículo: Cómo romper el cifrado XML - Automáticamente: enlace
Allí, analizamos también el marco WCF.