Deja de escribir código como una víctima: adopta la mentalidad de un hacker ético
La mayoría de los desarrolladores ven la seguridad como un trámite que hay que cumplir antes del lanzamiento. En cambio, los hackers éticos deberían considerar la seguridad como un principio fundamental de diseño al crear sistemas que sean capaces de defenderse.
Adoptar la mentalidad de un hacker ético no significa pasar las noches en sudaderas con capucha y máscaras de encaje, con Kali Linux en tu computadora portátil, buscando vulnerabilidades de día cero para venderlas en la web oscura. Significa desarrollar una paranoia saludable y el instinto de cuestionar cada característica bien diseñada desde el punto de vista de un atacante.
Cuando un desarrollador promedio observa el punto final del perfil de usuario, ve una característica. Cuando un hacker ético observa el mismo punto final, ve una vulnerabilidad de «referencia directa a objeto insegura» que puede ser explotada en cualquier momento si la aplicación no verifica que la variable ID en la URL pertenezca al usuario actual.
En el mundo de DevSecOps, no hay presupuesto para una prueba de penetración de terceros al final del sprint. Tenemos que pensar como pentesters y «desplazarnos hacia la izquierda» para diseñar de manera proactiva nuestro código de modo que sea resistente a los ataques.
Así es como puedes empezar de inmediato: revisa la siguiente solicitud de incorporación de cambios (Pull Request) en tu fila de revisión de código con la mirada de un posible atacante. Por cada método o función que veas, intenta imaginar cómo lo aprovecharías. ¿Sería posible eludir la autorización en esta parte del código? ¿Se puede utilizar este método de API con fines maliciosos?
¿Qué pasaría si recibiera una entrada inesperada, como 10 MB de JSON o un entero negativo que se suponía que debía ser positivo? ¿Se agotaría el tiempo de espera de la conexión a la base de datos, dejando potencialmente a la aplicación en un estado inconsistente? ¿Estás seguro de que estos datos de información de identificación personal (PII) están debidamente enmascarados para que no puedan utilizarse con fines no autorizados, como el robo de identidad? Al hacerte estas preguntas, no solo haces que tu código sea más seguro. Te conviertes, al mismo tiempo, en un mejor desarrollador y en un mejor profesional de la seguridad.
La seguridad consiste en diseñar la arquitectura de tal manera que, incluso si el atacante logra entrar, no pueda alcanzar sus objetivos. Esto significa que debes pensar en las formas en que tu código puede fallar y asegurarte de que lo haga de manera controlada. Debes utilizar la limitación de tasa para prevenir ataques de denegación de servicio y sanitizar todas las entradas de los usuarios para evitar cosas como la inyección de SQL y las vulnerabilidades XSS. Pero el aspecto más importante para defender tu aplicación es asumir que el perímetro siempre está comprometido y construir tus defensas en torno a esta idea.
Top comments (0)