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 usa Object.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.