Puff y pentest



Un enfoque moderno de la seguridad de la información



Me encanta la seguridad de la información. Por un lado, una empresa a menudo requiere el despliegue de prototipos a medias, desplegados una vez por hora. Por otro lado, es el bastión duro e inaccesible de los oficiales de seguridad de la información. Todo depende de ellos. E incluso los desarrollos en el campo de IoT, donde S es seguridad, se vuelven aún más confiables bajo su supervisión.



La cuestión clave en la estimación del agujero de diámetro de unagujero de proceso en su producto es el tiempo. Quiero volver a hablar un poco sobre la pirámide de pruebas clásica, pero en el contexto de la seguridad de la información. Y también intentaré compartir mi experiencia en la organización de la construcción de un proceso conveniente, cuando los desarrolladores no esperen durante semanas la aprobación de la seguridad de la información y el software no brille con todas las posibles vulnerabilidades al mundo exterior.Spoiler: se puede implementar sin aprobación.



Y una lista. Todo el mundo ama las listas. Daré mi pequeño conjunto de software necesario, que ilumina enormemente mi vida diaria.



Si algo es aburrido, necesita automatizar





La pirámide de pruebas clásica. En la parte inferior, hay numerosas pruebas unitarias que cubren todo tipo de pequeñas cosas, como asegurarse de que la aplicación no se bloquee si el usuario ingresa su contraseña en hindi. O envió algo más extraño. Y luego hubo precedentes con "لُلُصّبُلُلصّبُررً ॣ ॣ h ॣ ॣ 冗" en ​​el iPhone, si lo recuerdas. Este tipo de prueba es excelente para su automatización, pero solo cubre casos estrechos, que a menudo no brindan una imagen completa y la confianza de que la aplicación no fluirá en un lugar inesperado.



En la parte superior, ya es una prueba completamente manual. Además de comprobar casos estándar, puede proporcionar "creatividad libre", cuando a un especialista se le encomienda la tarea de romper algo de cualquier forma exótica a su gusto. Como siempre, este tipo de enfoque creativo lleva al hecho de que este tipo de prueba también es el más caro. No solo en términos de dinero, sino también del notorio tiempo de comercialización, cuando necesita implementar nuevas funciones justo ayer en una reunión ya prometida.



Un problema tradicional al que se enfrentan muchas empresas es la larga y triste coordinación con la seguridad de la información en cada elemento. No porque estén tan enojados y sean tan antipáticos. Es solo que su tarea es minimizar los riesgos. Así que minimizan tanto como pueden, deteniendo simultáneamente la mitad de los procesos en el cuello de botella de sus controles. En realidad, en tiempos previos a la cárcel, cuando podías pulir lentamente tu código, esto funcionó. Y ahora 47 prototipos a medias de competidores con codificadores mono ya se lanzarán a su solución pulida de la primera versión. Y eso es todo. Ya has perdido el mercado, todos los usuarios están atrapados en otro Tick-Tock.



Pipeline para todo



De hecho, la mayoría de las veces el problema es la mala integración de los procesos de seguridad de la información en las canalizaciones que ya conocen los desarrolladores. Por alguna razón, cada impulso va acompañado de muchas comprobaciones del mismo flake8 y mypy, se ensambla en un paquete, se carga en el contenedor del corredor de GitLab y se aleja felizmente probado en Artifactory. O falla una etapa y regresa para revisión.



Y solo la seguridad de la información a menudo está bajo una lupa con sus manos en cada lanzamiento, hojeando el código y metiendo un palo en los puertos abiertos de la aplicación. Me parece que una de las mejores soluciones es trasladar la parte principal de los controles de seguridad a un proceso automático y limitar las pruebas manuales a tiempo. IB se reserva el derecho de veto si encuentra una vulnerabilidad crítica, pero, de forma predeterminada, la aplicación entra en producción si no hay objeciones por su parte. Suena aterrador a primera vista, pero tal estructura de proceso motiva a automatizar todos los procedimientos de rutina tanto como sea posible y dedicar tiempo solo a cosas realmente complicadas.



Estas abreviaturas como DevSecOps y otros TriCeraTops me asustan un poco, pero esto es exactamente lo que más a menudo necesita organizarse para reducir los costos de tiempo. Echemos un vistazo a un ejemplo de Python. Vale la pena comenzar con linters. Creo que casi todo el mundo ha apostado por algunas variantes de linters básicos como flake8 y mypy. Todavía recomendaría la versión extendida de flake8 - wemake-python-styleguide.



Se instala y se inicia tradicionalmente:



pip install wemake-python-styleguide
flake8 your_module.py


El principal problema con este linter es que al principio puede hacer que quieras romper el monitor con el teclado. Especialmente en proyectos antiguos heredados, es más fácil grabar que arreglar. No obstante, si excluye las comprobaciones innecesarias, obtendrá un control bastante estricto sobre la calidad del código subyacente.



Una vez que hayamos verificado el código en sí mismo en busca de construcciones torcidas, escasa legibilidad y alta complejidad ciclomática, deberíamos ejecutar el linter de seguridad estática. Sí, en los lenguajes con tipos poco estrictos, estos linters no son tan buenos, pero le permiten identificar problemas típicos como contraseña = 'qwerty123' en el código. Puedes usar el mismo bandido aquí .



Todo esto funciona muy bien, pero el problema con las soluciones gratuitas suele estar en las bases de datos de vulnerabilidades menos actualizadas. La mayoría de las veces tiene sentido agregar algo más comoseguridad .



imagen


Fuente



Las opciones de pago similares generalmente se integran perfectamente con el mismo GitLab corporativo.

Dicho esto, suele haber una buena salida informativa en la consola:



safety check --full-report





Idealmente, después de todas las manipulaciones, debería tener un pipeline completo, donde paso a paso verifique todos los requisitos de seguridad para su aplicación.



imagen






Verificaciones típicas de la fuente :



git secret check : verifique la ausencia de secretos abiertos en el código

SCA ; verifique que las dependencias externas y las bibliotecas estén libres de vulnerabilidades. Es importante si está congelando la versión anterior de la biblioteca

SAST (análisis de código estático para detectar vulnerabilidades)

Auditoría de contenedores : auditoría de la imagen del contenedor que se utilizará para la implementación. También ellos suelen estar llenos de agujeros. Especialmente si está usando sándwiches exóticos de muchas capas variadas.

DAST : implementación de aplicaciones, registro, inicio de sesión como usuario legítimo y realización de ataques típicos en el front-end



Que queda por la seguridad de la información



Ahora que hemos descargado las inútiles criaturas de carne de los humanos del trabajo rutinario, podemos transferirles aquellas tareas que requieren un enfoque verdaderamente creativo.



Habrá el mismo arsenal eterno de herramientas para análisis, pruebas de red y adivinación de contraseñas. Wireshark, hashcat, Hydra y otras utilidades nunca se han retirado.



Pero incluso entre las herramientas familiares, aparece algo nuevo y, a veces, bastante útil. Sugeriré prestar atención a algunos de ellos.



Nikto2



github.com/sullo/nikto

Nikto es un escáner de servidor web de código abierto. No está callado en absoluto. En serio, si lo lanzó desde su lugar de trabajo y durante 15 minutos aún no se acuesta boca abajo en el piso rodeado de personal de seguridad, entonces tiene problemas con la detección de intrusos.



El software realiza pruebas complejas en servidores web para muchos elementos, incluidos más de 6700 archivos / programas potencialmente peligrosos. También comprueba los elementos de configuración del servidor, como la configuración del servidor HTTP, e intenta identificar los servidores web y el software instalados. Los elementos de escaneo y los complementos se actualizan con frecuencia y pueden actualizarse automáticamente.



Fuzzdb



También es una herramienta muy interesante para un ataque automatizado a aplicaciones web utilizando patrones y vulnerabilidades típicos. Felizmente bombardeará su aplicación con un montón de ataques estándar y al mismo tiempo verificará si olvidó cubrir el acceso al panel de administración y los archivos de registro con derechos reducidos. Le permite aliviar muchos dolores de cabeza y controles de rutina.



Nmap + Vulners





Vulners es un agregador de todo tipo de CVE, boletines de seguridad de proveedores, exploits en Metasploit y simplemente el resultado de la captura manual de vulnerabilidades en foros temáticos. Básicamente, proporcionan una API para consultar su base de datos. Simplemente me cautivó su complemento para el conocido nmap, que inmediatamente da un fanático de los vectores de ataque listos para usar para un servicio web. Recomiendo encarecidamente echar un vistazo más de cerca.



Algo como salida





Muerte a los humanos, ¡gloria a los robots!



Pero en serio, trata de minimizar la rutina y pásala a quien realmente debería hacerlo: guiones y pipelines sin alma. Y deje que la gente se dedique a la creatividad. Esto es más correcto.










All Articles