Escanee el código base para las contraseñas de nombre de usuario

2

¿Cuál sería la mejor manera de escanear una base de código para asegurarse de que no haya credenciales de nivel de producción incluidas en la base de código? Hemos intentado realizar análisis estáticos a través de algunas herramientas importantes, pero aún veo algunas credenciales que aún persisten y posiblemente más.

¿Cuál sería la mejor manera de hacer esto?

    
pregunta pal4life 15.10.2016 - 01:08
fuente

5 respuestas

3

Voy a salir de la tangente aquí y responderé al problema real en lugar de a su solución presupuesta .

La forma de evitar que las credenciales de producción se verifiquen en el repositorio de códigos es no permitir que los desarrolladores tengan credenciales de producción en primer lugar durante el desarrollo. Tenga credenciales de desarrollo y producción por separado y posiblemente un equipo de desarrollo y operaciones por separado. Los desarrolladores tienen la capacidad de verificar el código pero no tienen acceso al entorno de producción y no conocen las credenciales de producción; las operaciones tienen acceso al entorno de producción y las credenciales de producción, pero solo acceso de lectura al repositorio de código. Las pocas personas que deben actuar como desarrollador y como operaciones, deben estar debidamente capacitadas para separar las funciones de desarrollo y operaciones.

Para facilitar esta separación, nunca debe registrar el archivo de configuración para codificar el repositorio. En su lugar, tenga una configuración de ejemplo y, al implementar en un nuevo entorno, las operaciones deberían copiar este archivo y modificarlo. Los desarrolladores deben recibir capacitación para copiar sobre los cambios de configuración (por ejemplo, nuevas entradas de configuración) a la configuración de ejemplo para hacer un ejemplo en la configuración de ejemplo.

    
respondido por el Lie Ryan 15.10.2016 - 05:27
fuente
2

Para ser honesto, si permite que los desarrolladores de un proyecto de tamaño significativo tengan credenciales de código físico y empujen ese código a un repositorio de desarrollo, entonces tiene un problema de calidad de código grave , y su código probablemente Necesita completar, manual, revisar antes de que pueda ir a producción.

De todos modos, simplemente use todas las credenciales potenciales y grep para ellos. Encuentra el lugar donde se usan. Tenga una charla severa con quienquiera que los codificó en el código fuente en primer lugar. Esto es realmente un tutorial del primer día.

    
respondido por el Marcus Müller 15.10.2016 - 03:12
fuente
0

El enfoque más común es grep la base del código que busca cuando se asignan los secretos. Por ejemplo, la siguiente expresión regular coincidirá con una verdad de código que puede contener valores interesantes:

egrep "(secret|password|hmac|access.*key)\s*[:=>]" -iRn .

El grep anterior encontrará secretos comunes codificados en los archivos de configuración o en cualquier otra parte del código, por ejemplo:

aws_secret_key = "..."

<mysqlPassword>...</mysqlPassword>

El único producto comercial que puede encontrar secretos codificados es Checksmarx. Esta es una herramienta de análisis de código fuente con muchas opciones y toneladas de reglas personalizadas para hacer coincidir el mal comportamiento.

    
respondido por el rook 15.10.2016 - 01:58
fuente
0

Deberías considerar revisar el camino difícil. Ingrese el código y grep para la interfaz utilizada para enviar las credenciales para la autorización. Examina cada instancia que encuentres. Camina hacia atrás de cada uno, buscando variables que contengan los parámetros de credenciales. Grep para cada uno de esos nombres de variables, y cada lugar al que se accede.

Asegúrese de que no haya rutas ocultas u ocultas, como buffers construidos de forma extraña que se incorporen a la API. Asegúrese de que este código no utilice variables globales o estadísticas que puedan ser inyectadas (o desviadas por) otras partes del programa.

Debido a que se trata de credenciales, el código que las transporta debe ser muy simple para que pueda revisarlo fácilmente. Cualquier código complejo que los rodea debe ser refactorizado y simplificado hasta que sea transparente y legible.

    
respondido por el John Deters 15.10.2016 - 04:48
fuente
0

Como una variedad de nombres de variables se pueden usar para almacenar el valor de la clave, es difícil verificar automáticamente las credenciales.

Una cosa que puedes probar es ejecutar el comando de linux cadenas para imprimir todas las cadenas almacenadas en los archivos . Luego puedes verificar si alguna de estas son tus credenciales

    
respondido por el Limit 15.10.2016 - 06:02
fuente

Lea otras preguntas en las etiquetas