¿Cómo se puede formular OWASP a diez riesgos como requisito de software?

En primer lugar para sacar esto del camino: recuerde que el OWASP Top 10 no es el principio y el fin de la seguridad del software. Por definición, está enfocado en la web, si está construyendo algo más, por ejemplo, un proyecto de infraestructura, un proyecto móvil que puede necesitar más y diferente. Además, si no se trata de una operación de campos verdes, es posible que desee requisitos que centren la atención en la integración con sus controles de seguridad en lugar de construir desde cero, por ejemplo, detallo mi pensamiento al respecto aquí: Mitigar los 10 principales de OWASP sin ningún código

Por lo tanto, desea proporcionar el OWASP Top 10 como un requisito para un desarrollador / vendedor (externo) en un lenguaje que se pueda probar y hacer cumplir en un contrato. Para la última parte, le sugiero que se asegure de que la redacción sea revisada por un abogado de su jurisdicción, solo estoy brindando asesoramiento como profesional de seguridad.

A un nivel alto, puede ser tan simple como esto:

1) La solución no será vulnerable a ninguna de las vulnerabilidades de los 10 principales de OWASP, como lo demuestran las pruebas de seguridad independientes.

Glosario OWASP Top 10: Categoría: Proyecto OWASP Top Ten
MOSCÚ: debe

Lo anterior es probablemente suficiente para un contrato.

Para conocer los requisitos detallados, puede seguir el estándar significa que mitiga los 10 principales:

Validación / codificación de entrada y salida (que abordan la mayoría de las vulnerabilidades y específicamente)

1) La aplicación asumirá que todas las entradas son maliciosas y realizará la validación utilizando la siguiente estrategia (en orden de preferencia):
Restringir: acepta solo entradas conocidas, válidas y seguras (enfoque de lista blanca solamente)
Rechazar: los datos que no se ajustan al formato esperado se rechazan de plano
Desinfectar: ​​los datos se examinarán por entradas “peligrosas” o maliciosas, que se codificarán para que sean inofensivas para el contexto en el que se utilizarán los datos (por ejemplo, se citarán comillas simples para los datos que se enviarán a la base de datos) .

2) La implementación de validación de entrada de aplicación (rutinas y lógica) verificará si se espera:
Tipo
Longitud
Formato
Distancia
La entrada está en su forma canónica
Conjuntos de caracteres e idiomas aceptados

3) Todas las fallas de validación de entrada darán como resultado un rechazo de entrada o desinfección de entrada.

4) Se debe especificar un conjunto de caracteres, como UTF-8, para todas las fuentes de entrada

5) La aplicación no se basará únicamente en la validación de entrada del lado del cliente. La validación de entrada se realiza en el lado del servidor por la aplicación para todas las entradas

6) La validación de todos los campos obligatorios (por ejemplo, aceptación de términos y condiciones) se realizará en el sitio del servidor

7) Todos los puntos de entrada de la aplicación y los límites de confianza se identificarán y documentarán. El diseño de la aplicación minimiza activamente el volumen y la frecuencia de los datos aceptados de fuentes remotas, por ejemplo, utilizando una estrategia de “aceptar una vez, validar una vez y reutilizar el valor limpio”

8) La validación de entrada se aplicará de manera consistente cada vez que se reciba una entrada

9) Los controles de validación de entrada de la aplicación deben ser modulares, consistentes y fácilmente verificables (auditables)

10) La aplicación utilizará un único control de validación de entrada centralizado para cada tipo de datos que se acepte

11) Todos los datos no confiables que se envían a HTML (incluidos los elementos HTML, los atributos HTML, los valores de datos de JavaScript, los bloques CSS y los atributos URI) XML, LDAP, etc. se deben escapar / codificar correctamente para el contexto aplicable.

12) Todos los controles de salida de codificación / escape se implementarán en el lado del servidor

13) La aplicación utilizará un único control de escape / codificación de salida centralizada para cada tipo de salida

14) Las declaraciones preparadas o los procedimientos almacenados parametrizados se utilizarán para almacenar o proporcionar la entrada del usuario a la base de datos

15) Para aplicaciones web, se utilizará un entorno de tiempo de ejecución que no sea susceptible a desbordamientos del búfer

Autenticación y autorización (vulnerabilidad A3)

1) El acceso a la solución solo se otorgará después de la autenticación contra una identidad central y un repositorio de control de acceso (si desea integrarse con una solución existente o eliminar central si desea desarrollar / proporcionar esto)

2) Todas las cuentas de usuario serán identificables individualmente (no genéricas o compartidas)

3) Todas las cuentas del sistema tendrán un propietario identificable individualmente y se les negará la capacidad de inicio de sesión local. Los administradores deberán exigir una forma responsable de obtener la contraseña de una cuenta del sistema (por ejemplo, registrar / retirar el depósito de contraseñas)

4) Las contraseñas (donde se usen) serán:

Mínimo 8 caracteres
Complejo (aplicar caracteres alfanuméricos y especiales)
Bloqueo después de 10 intentos de inicio de sesión no válidos
Desbloqueo por rol autorizado, incluido el restablecimiento de autoservicio y automáticamente después de 30 minutos
Forzar cambio en el primer inicio de sesión después de reiniciar
Requerir la contraseña actual antes de permitir el cambio de contraseña
Caducidad 60 días
Las últimas 12 contraseñas del historial no pueden reutilizarse

(Ajuste a su política, por ejemplo, eliminaría el vencimiento y el historial de la mayoría de los sistemas)

5) Los usuarios deberán poder cerrar sesión en su sesión. Cerrar sesión terminará la sesión del lado del servidor.

6) Las cuentas de preproducción y no producción no podrán acceder a entornos de producción con las mismas credenciales

7) La autenticación de dos factores (2FA) debe estar en su lugar para todo el acceso a la solución

(ajuste según su modelo de amenaza, apetito de riesgo, política, etc.)

8) Para los que se mueven y abandonan, el acceso a la solución se eliminará en 24 horas.

9) Todos los sistemas mostrarán un mensaje de advertencia apropiado a los usuarios antes de intentar iniciar sesión con respecto al uso no autorizado del sistema

10) CAPTCHA o equivalente se utilizará cuando exista la posibilidad de que un bot o script simule usuarios reales, incluidos:

Registros
Activación de cuenta
Restablecimiento de contraseña
Desbloqueo de cuenta
Cambie el nombre de usuario
Atención al cliente e interacción: comentarios o contáctenos, funcionalidad, foros del centro de contacto, etc.

11) La funcionalidad para realizar un desbloqueo masivo de todas las cuentas bloqueadas estará en su lugar en respuesta a un ataque de Denegación de Servicio (DOS)

12) Cuando se usen preguntas de seguridad, serán:

No se puede adivinar o investigar fácilmente (seguro, por ejemplo, sin código postal, fecha de nacimiento, apellido de soltera de la madre),
No cambia con el tiempo (estable),
Memorable

13) Las preguntas de seguridad o un código de restablecimiento de contraseña por sí solo no se utilizarán para realizar una función de seguridad clave (por ejemplo, restablecimiento de contraseña, validación de Contact Center). En su lugar, se utilizarán preguntas de seguridad, además del factor “algo que tienen”, por ejemplo, el código enviado a una dirección de correo electrónico o teléfono móvil verificado

(igual que 2FA)

14) Las cuentas que no se hayan utilizado en más de 180 días se bloquearán y requerirán un restablecimiento de contraseña para desbloquear

15) Los códigos de restablecimiento de contraseña solo serán válidos durante 15 minutos

(depende de los requisitos comerciales, mecanismo de entrega aceptable, etc.)

16) Todo el acceso de los usuarios se gestionará mediante roles y el sistema central de gestión de identidades y accesos (IDM)

(según la autenticación)

17) Se definirán los roles comerciales y técnicos de menor privilegio y se asignará al personal interno a puestos dentro de la estructura organizativa

18) Se requerirá autorización para realizar todas las funciones, incluidas la actualización de las reglas comerciales, los datos estáticos, los cambios en el contenido público, el acceso a URL y archivos de datos no públicos protegidos, leer o modificar registros

19) Cualquier referencia directa a objetos debe estar protegida de modo que solo los objetos autorizados sean accesibles para cada usuario

20) Cualquier separación de conflictos de deberes y otras combinaciones tóxicas se definirán para garantizar que se eviten o marquen para un proceso de excepción

21) Ningún usuario individual o cuenta del sistema tendrá la autoridad para aumentar su propia autoridad o privilegios de acceso en un sistema.

22) No habrá acceso privilegiado permanente en el entorno de producción. Cuando se requiera acceso privilegiado, será a través de un mecanismo de bombero que esté vinculado a un boleto de cambio o soporte aprobado y acciones completamente registradas

23) El acceso administrativo se limitará a la cantidad mínima de personal que lo requiera para fines comerciales

24) Será posible crear múltiples cuentas con permisos específicamente y solo para realizar la administración de usuarios.

25) Las aplicaciones no se configurarán para ejecutarse bajo cuentas de servicio o sistema operativo genérico. Las cuentas personalizadas y con privilegios mínimos deben crearse específicamente para el uso de la aplicación. Esta configuración permitirá el aprovisionamiento granular de permisos y la facilidad de registro y la capacidad de auditoría de los eventos de la aplicación.

26) Cuando los códigos de activación se utilizan para confirmar la dirección de correo electrónico o el móvil, se generarán de forma aleatoria y se aplicarán bloqueos en caso de entrada fallida:

Mínimo 8 caracteres
Alfanumérico y mínimo 1 carácter especial
Bloqueo después de 3 intentos fallidos de entrada

Gestión de sesiones (A3 y A5)

1) Se utilizará un marco de gestión de sesión aceptado por la industria. El identificador de sesión utilizado deberá contener al menos 128 bits de datos aleatorios (de una fuente confiable de entropía).

2) Cada formulario donde los usuarios puedan proporcionar información (incluida la selección de un menú desplegable) incluirá un token impredecible como parte de cada transacción. Dichos tokens deben, como mínimo, ser únicos por sesión de usuario e incluirse en un campo oculto enviado como parte de la solicitud http. El envío del formulario solo se aceptará si este token está validado. Los métodos aceptados por la industria, como la protección CSRF, se pueden utilizar para proporcionar esto

3) Las sesiones deberán tener un tiempo de espera configurable tanto para inactividad como absoluta (independientemente de la actividad). El tiempo de espera predeterminado para inactividad será de 15 minutos. El tiempo de espera absoluto predeterminado será de 24 horas.

4) El número de sesiones concurrentes que acceden a una cuenta será configurable y predeterminado a 1. La creación de una nueva sesión (es decir, iniciar sesión) terminará cualquier sesión previa

5) Una sesión autenticada permanecerá segura durante toda la sesión. Si por alguna razón la sesión se interrumpe, debe realizarse una nueva autenticación para reanudar la sesión.

6) Cualquier dato cargado o creado en las instalaciones del usuario final (es decir, navegador, computadora de escritorio, teléfono inteligente) será transitorio, es decir, se borrará de la memoria después de que finalice la sesión, o cuando haya cesado el requisito de residencia de memoria, lo que ocurra antes.

7) Las identificaciones de sesión nunca se revelarán excepto en los encabezados de cookies; particularmente en URL, mensajes de error o registros. Esto incluye verificar que la aplicación no admite la reescritura de URL de las cookies de sesión.

8) Solo los identificadores de sesión generados por la aplicación serán reconocidos como válidos por la aplicación.

9) Los tokens de sesión emitidos para usuarios no autenticados serán destruidos y reeditados por la aplicación web después de una autenticación de usuario exitosa y en cualquier reautenticación

10) Las cookies que contienen tokens / identificadores de sesión autenticados deben tener su dominio y ruta configurados en un valor restrictivo apropiado para el sitio

11) Las cookies que contienen tokens / identificadores de sesión autenticados solo se establecerán a través de transporte cifrado (por ejemplo, HTTPS)

Criptografía (A7) (estas fechas están mal, así que verifique qué está actualizado o su política)

1) RSA 4096 y superior se utilizarán para certificados TLS / SSL y cifrado asimétrico. AES 512 y superior se utilizarán para el cifrado simétrico. SHA 512 o superior se utilizará para el hash

2) Solo se admitirán cifrados TLS 1.0 y superiores

3) Las contraseñas se deben cifrar con SHA512 o superior y se salan

4) Todas las claves privadas y las claves de cifrado simétrico se almacenarán en un dispositivo certificado FIPS-140-2 (por ejemplo, HSM). Todos los demás módulos criptográficos se validarán con FIPS-140-2

5) Deben existir herramientas y procesos seguros y centralizados de administración de claves para generar, distribuir, proteger, cambiar, almacenar y retirar / reemplazar de manera segura las claves de cifrado

6) Todas las funciones criptográficas utilizadas para proteger los secretos del usuario de la aplicación se implementarán en el lado del servidor

Configuración, parches y pruebas (A6 y todo realmente)

1) Se definirán e implementarán estándares de configuración de seguridad (por ejemplo, plataforma, base de datos, aplicación, hipervisor de virtualización, middleware, estándares de dispositivos de red). Esto garantizará que todas las contraseñas predeterminadas se cambien y las cuentas predeterminadas se bloqueen donde no se usen. Los componentes y servicios de software que no son necesarios se eliminarán y se aplicarán los permisos con menos privilegios. Solo se utilizarán servicios seguros, por ejemplo, no TFTP o SNMP v2

2) Se debe implementar una herramienta y un proceso de cumplimiento de la configuración para garantizar que todos los componentes cumplan con los estándares de configuración reforzados

3) Se establecerá un proceso para identificar, priorizar en función del riesgo, verificar la integridad de, probar y aplicar parches de seguridad en al menos un ciclo de 1 mes con la capacidad de aplicar un parche de seguridad de emergencia dentro de los 5 días a toda la producción accesible por Internet ambientes

(los tiempos dependen del modelo de amenaza, apetito de riesgo, política)

4) Para cualquier desarrollo o personalización a medida, se seguirán los estándares de codificación segura y las convenciones de nomenclatura

5) Todas las plataformas deben ejecutar productos antimalware aprobados y una verificación de una firma actualizada y la definición del motor con el proveedor antimalware realizado al menos cada 3 horas. Cuando haya una actualización disponible, se implementará por completo dentro de las 24 horas.

6) Se realizarán pruebas de penetración de seguridad y se corregirán las vulnerabilidades de calificación alta y media antes de la puesta en marcha a partir de entonces al menos seis veces al mes

7) El análisis del código fuente de seguridad se realizará en todo el código y en cualquier vulnerabilidad de calificación alta y media remediada antes de la puesta en marcha a partir de entonces en cada cambio de código

8) El escaneo de vulnerabilidades de seguridad se realizará en todos los componentes del sistema y cualquier vulnerabilidad de calificación alta y media remediada antes de la puesta en marcha de allí en adelante al menos semanalmente.

9) Se proporcionará un paquete de prueba de regresión de seguridad automatizado dedicado para permitir a los evaluadores verificar fácilmente qué cambios en el código de impacto en la seguridad pueden haber tenido para la operación del sistema en su conjunto.

More Interesting

¿Cómo es Linux más seguro que cualquier otro sistema operativo a pesar de que su código fuente está abierto a todos?

Cómo comenzar en Infosec

¿Qué tipo de trabajos puede obtener con una certificación CompTIA Security +?

¿Por qué no se puede descubrir la clave privada mirando dentro de la clave pública en criptografía?

Cómo obtener un archivo de clave de WhatsApp sin rootear

¿Por qué los sitios web supuestamente seguros (https) aparecen en mi computadora portátil de trabajo como inseguros en todos los navegadores?

¿Cuáles son algunas de las mejores prácticas de seguridad / patrones de arquitectura para una intranet que tiene un área pública para acceder a parte de la información? Por ejemplo, una base de datos de la escuela con información confidencial de un niño, con la capacidad de un padre para iniciar sesión y recuperar asistencia, informes, etc.

¿Cuáles son los porcentajes entre los hackers sensatos y sensatos frente a los sensatos pero en el "lado oscuro" frente a los equivocados y sin saber lo que están haciendo en grupo?

¿La edad de la contraseña ha llegado a su fin? ¿Qué los reemplazará eventualmente?

¿Cuál es un buen sitio que enumera los archivos del sistema Windows / Linux y proporciona descripciones?

¿Cuál es el mejor antivirus para teléfonos Android?

¿Cuáles son las principales preocupaciones de los expertos en seguridad durante los ciberataques?

PlayStation (consola de videojuegos): ¿Cómo reaccionó la administración de Sony al hack de PSN? ¿Sony rediseñó PSN después del ataque?

¿Hay alguna otra forma de compartir una clave secreta entre dos entidades sin utilizar la criptografía de clave pública?

¿Por qué no puedo desinstalar Norton 360 de mi computadora portátil?