Blog

Programadores que conquistan la seguridad: Serie de aprendizaje y recursos - Padding Oracle

January 24, 2019

Aunque Padding Oracle suena como un nombre terrible para una banda de rock alternativo, en realidad es una vulnerabilidad que los atacantes pueden utilizar para descifrar información sin conocer la clave de cifrado.

En cuanto a la dificultad general para un atacante, esta se encuentra cerca de lo más alto de la escala. No estamos hablando de un botón mágico de descifrado, sino de un proceso laborioso mediante el cual los hackers pueden examinar los mensajes de error que reciben sobre el relleno (padding) de las celdas y usar esa información para determinar dónde terminan los datos cifrados y dónde comienza el relleno. A partir de ahí, pueden deducir varios bits del cifrado y posiblemente romperlo si disponen de suficiente tiempo y datos para analizar.

Afortunadamente, existen varios pasos relativamente sencillos para eliminar la capacidad de un atacante de usar un padding oracle para descifrar datos. En este episodio, aprenderemos:

  • Cómo funciona
  • Por qué esta vulnerabilidad es tan peligrosa
  • Cómo implementar defensas para prevenirla.

¿Cómo funciona Padding Oracle?

El encadenamiento de bloques de cifrado (CBC) es una forma de crear un cifrado por bloques donde una secuencia completa de bits de información, como las celdas almacenadas en una base de datos, se cifra utilizando una clave que se aplica a toda la cadena. Al usar CBC, el cifrado de un solo bloque de texto cifrado depende de todos los bloques anteriores. En teoría, esto hace que el cifrado sea extremadamente robusto, ya que cualquier alteración, incluso el reordenamiento de los bloques, corrompería los datos.

El problema con los cifrados CBC (y con cualquier cifrado por bloques, en realidad) es que solo pueden cifrarse utilizando bloques de tamaños exactos. Normalmente, esto se hace en tamaños de 8 o 16 bytes. Entonces, ¿qué sucede cuando CBC necesita ajustar 2 bytes de datos en una unidad de texto cifrado de 16 bytes? Utiliza relleno, básicamente caracteres sin sentido, para completar los espacios y hacer que la unidad tenga el tamaño adecuado.

La mayoría de los esquemas de relleno son bien conocidos, siendo PKCS#7 uno de los más populares, por lo que los atacantes pueden saber qué tipo de relleno se está utilizando. Por ejemplo, si el CBC necesita rellenar cinco caracteres en un bloque, PKCS#7 usaría el valor de byte 0x05 repetido cinco veces después del texto plano.

Los atacantes utilizan su conocimiento tanto del CBC como de los esquemas de relleno para enviar consultas a un servidor host, también conocido como oráculo. Si tienen acceso a las herramientas adecuadas, pueden forzar al servidor a indicarles si el relleno de su consulta es incorrecto. Al lograr esto, pueden probar valores del cero al 255 para cada byte en el cifrado hasta que el servidor indique que el relleno es correcto. Luego, pasan a la siguiente unidad y repiten el proceso, registrando dónde comienza el relleno en cada caso.

Esto no les permite descifrar el mensaje ni la celda completa, pero podría permitirles mapear cada eslabón de la cadena en cuanto a dónde termina el texto plano y dónde comienza el relleno. También pueden utilizar potencialmente cálculos XOR para determinar el valor del último byte del texto plano original.

¿Por qué es tan peligroso Padding Oracle?

La razón por la que un hacker dedicaría tanto esfuerzo a romper un cifrado es por la posible recompensa. Pocas personas cifran cosas que no tienen valor. El peligro para la organización anfitriona depende de los datos comprometidos. Esto podría incluir contraseñas, cuentas de usuario, información financiera, números de tarjetas de crédito, registros de pacientes, comunicaciones confidenciales o cualquier otra información altamente valiosa y codiciada.

El uso de padding oracle también podría ser la puerta de entrada a ataques posteriores. Si un atacante puede usar padding oracle para robar contraseñas, por ejemplo, elevar sus privilegios y penetrar más profundamente en una red se convierte en una tarea secundaria sencilla.

Todo el mundo piensa en el cifrado como la defensa definitiva contra el espionaje o el compromiso de datos. Sin embargo, el tira y afloja entre la ciencia del cifrado y quienes intentan romperlo ha existido durante siglos. Padding oracle es solo un método más que da ventaja a los atacantes.

Cómo frenar los ataques de Padding Oracle

Afortunadamente, existen bastantes formas de prevenir padding oracle. Una de las mejores es utilizar modos de cifrado más robustos, como Galois/Counter Mode (GCM) u Offset Codebook Mode (OCB). Estos difieren del CBC en que utilizan un tamaño de bloque de cifrado de 128 bits. También emplean un contador para cada bloque de datos y utilizan ese número para crear el texto cifrado. En otras palabras, no son susceptibles a los ataques de padding oracle.

Implementar buenos controles de gestión de errores también puede reducir drásticamente las posibilidades de éxito de un atacante. Dado que los ataques de padding oracle dependen de la fuga de información, se deben devolver mensajes de error genéricos en lugar de errores de relleno específicos cuando falle el cifrado o descifrado.

También puede implementar un código de autenticación de mensajes (MAC). Los valores MAC protegen tanto la integridad de los datos como su autenticidad, al permitir que los verificadores detecten cualquier cambio en el contenido del mensaje mediante una clave secreta.

Por último, todos los ataques de padding oracle requieren consultas repetidas. Se pueden realizar más de 200 solicitudes para determinar el esquema de relleno en una sola celda, multiplicado por el número de unidades de información protegidas en la cadena. Al restringir la cantidad de solicitudes provenientes de la misma fuente, puede detener los ataques de padding oracle denegando el acceso al atacante antes de que realmente pueda comenzar su intento.

Estudio adicional sobre Padding Oracle

Cualquier método mediante el cual un atacante pueda descifrar información confidencial puede convertirse en una verdadera pesadilla. Pero esperamos que haya aprendido varios métodos eficaces para evitar que eso suceda en primer lugar.

Para seguir leyendo, puede consultar la definición y lista de verificación de OWASP sobre padding oracle. También puede poner a prueba sus nuevos conocimientos defensivos con la demo gratuita de la plataforma Secure Code Warrior, que entrena a equipos de ciberseguridad para convertirse en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y una galería de otras amenazas, visite el blog de Secure Code Warrior.

¿Cree que está listo para frustrar ataques de padding oracle ahora mismo? Pruébelo en la plataforma Secure Code Warrior:

Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.