Mitigar los riesgos asociados con la contaminación de prototipos es crucial tanto para los pentesters como para los desarrolladores. Aquí algunas medidas de mitigación para:
Pentesters
- Manipulación y Fuzzeo de Input: Interactúa con el input del usuario y fuzzéalos con una variedad de payloads. Busca escenarios donde información no confiable pueda llevar a PP.
- Análisis de Contexto e Inyección de Payloads: Analiza el código de la aplicación para entender cómo el input del usuario se usa en las estructuras. Inyecta payloads en estos contextos para comprobar vulnerabilidades de PP.
- Bypasseo CSP e Inyección de Payloads: Evalúa la efectividad de los headers de seguridad como CSP (Cloud Service Provider). Intenta bypassear las restricciones del CSP e inyecta payloads para manipular prototipos.
- Análisis y Explotación de Dependencias: Realiza un análisis exhaustivo de librerías de terceros y dependencias usadas por la aplicación. Identifica librerías anticuadas que puedan introducir vulnerabilidades PP y explótalas.
- Análisis Estático de Código: Usa herramientas de análisis de código estático para identificar vulnerabilidades durante la fase de desarrollo.
Secure Code Developers
- Evitar Usar proto: Restringe el uso de
__proto__en la medida de lo posible ya que es susceptible de PP. En su lugar usaObject.getPrototypeOf()para acceder al prototipo de un objeto de forma más segura. - Objetos Inmutables: Diseña objetos inmutables cuando sea posible. Este previene modificaciones no intencionadas del prototipo.
- Encapsulación: Encapsula objetos y sus funcionalidades, exponiendo sólo interfaces necesarias.
- Usar Valores por Defecto Seguros: Al crear objetos, establece valores seguros por defecto y evita confiar en el input del usuario para configurar propiedades del prototipo.
- Sanitizar el Input: Sanitiza y valida el input del usuario exhaustivamente.
- Gestión de Dependencias: Actualiza y monitoriza regularmente las dependencias. Elige librerías no deprecadas.
- Headers de Seguridad: Implementa headers de seguridad como CSP (Content Security Policy) para controlar las fuentes desde las cuales se cargan.
