Insecure Object Serialization
Serialización de objetos insegura
Descripción
La aplicación utiliza un esquema de deserialización inseguro a partir de datos no confiables.
La deserialización de objetos insegura puede resultar en:
- Ejecución remota de código (RCE) arbitraria
- Modificación de la lógica de la aplicación
- Manipulación de datos, como la evasión del control de acceso
La explotación de vulnerabilidades de deserialización es difícil debido a la ausencia de exploits listos para usar y la necesidad de ajustarlos para el exploit objetivo.
Recomendación
Para prevenir las vulnerabilidades de serialización de objetos, la aplicación debe:
- Aceptar objetos serializados únicamente de fuentes de confianza.
- Utilizar únicamente tipos de datos primitivos de serialización.
Si estas medidas no son posibles, considere lo siguiente:
- Implementar controles de integridad, como firmas digitales en cualquier objeto serializado, para evitar la creación de objetos hostiles o la manipulación de datos.
- Hacer cumplir restricciones de tipo estrictas durante la deserialización antes de la creación del objeto, ya que el código generalmente espera un conjunto definible de clases. Sin embargo, se han demostrado evasiones a esta técnica, por lo que no es aconsejable depender únicamente de ella.
- Aislar y ejecutar el código que deserializa en entornos de bajos privilegios cuando sea posible.
- Registrar (log) las excepciones y fallos de deserialización, como cuando el tipo entrante no es el tipo esperado o la deserialización lanza excepciones.
- Restringir o monitorear la conectividad de red entrante y saliente de los contenedores o servidores que deserializan.
- Monitorear la deserialización, alertando si un usuario deserializa constantemente.
Enlaces
- Java unmarsheller security
- Deserialization of untrusted data (OWASP)
- Java deserialization cheat sheet
- CWE-502: Deserialization of Untrusted Data
Estándares
- CWE_TOP_25:
- CWE_502
- OWASP_ASVS_L1:
- V5_5_1
- V5_5_3
- OWASP_ASVS_L2:
- V1_5_2
- V5_5_1
- V5_5_3
- OWASP_ASVS_L3:
- V1_5_2
- V5_5_1
- V5_5_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255
- SECURITY258
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5