Sobelow es una herramienta de análisis estático centrada en la seguridad para Elixir y el marco de Phoenix. Para los investigadores de seguridad, es una herramienta útil para obtener una vista rápida de los puntos de interés. Para los mantenedores de proyectos, se puede utilizar para evitar la introducción de una serie de vulnerabilidades comunes.
Actualmente Sobelow detecta algunos tipos de los siguientes problemas de seguridad:
Las vulnerabilidades potenciales se marcan en diferentes colores según la confianza en su inseguridad. La alta confianza es rojo, la confianza media es amarilla y la baja confianza es verde.
Un hallazgo generalmente se marca "baja confianza" si parece que una función podría usarse inseguamente, pero no puede determinarse de manera confiable si la función acepta la entrada proporcionada por el usuario. es decir, si un hallazgo es marcado verde, puede ser críticamente inseguro, pero requerirá una mayor validación manual.
Nota: Este proyecto está en desarrollo constante, y las vulnerabilidades adicionales se marcarán a medida que pase el tiempo. Si se encuentra con un error, o desea solicitar funciones o verificaciones de seguridad adicionales, ¡abra un problema!
Para usar Sobelow, puede agregarlo a las dependencias de su aplicación.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endTambién puede instalar Sobelow a nivel mundial ejecutando lo siguiente desde la línea de comando:
$ mix escript.install hex sobelow
Para instalar desde la rama maestra, en lugar de la última versión, se puede usar el siguiente comando:
$ mix escript.install github nccgroup/sobelow
Después de la instalación, la forma más sencilla de escanear un proyecto Phoenix es ejecutar lo siguiente desde la raíz del proyecto:
$ mix sobelow
Nota: Cualquier argumento de ruta debe ser rutas absolutas, o en relación con la raíz de la aplicación.
--root o -r -Especifique el directorio raíz de la aplicación. Acepta un argumento de ruta, por ejemplo ../my_project .
--verbose o -v -imprimir fragmentos de código y detalles de búsqueda adicional.
--ignore o -i -Ignorar tipos de búsqueda dados. Acepta una lista separada por comas de nombres de módulos, por ejemplo, XSS.Raw,Traversal .
--ignore-files -Ignorar archivos. Acepta una lista separada por comas de nombres de archivos, por ejemplo config/prod.exs .
--details o -d -Obtenga detalles de tipo de búsqueda. Acepta un solo nombre del módulo, por ejemplo, Config.CSRF .
--all-details -Obtener detalles de todos los tipos de hallazgo.
--private -omita las verificaciones de actualización.
--router -Especificar la ubicación del enrutador. Esto solo debe usarse si la ubicación del enrutador no es estándar. Acepta un argumento de ruta, por ejemplo my/strange/router.ex .
--exit : devuelva el estado de salida no cero en o por encima de un umbral de confianza de low , medium o high . El valor predeterminado es false que devuelve un estado de salida cero
--threshold : retrocede los hallazgos en o por encima de un nivel de confianza de low (valor predeterminado), medium o high .
--format o -f -Especificar el formato de salida de resultados. Acepta un formato, por ejemplo txt o json .
Tenga en cuenta que opciones como --verbose no funcionarán con el formato json . Todos los hallazgos formateados json contienen un type , file y clave line . Otras claves pueden variar.
--quiet -Devuelve una sola línea que indica un número de hallazgos. De lo contrario, no devuelva la salida si no hay resultados.
--compact -Hallazgos mínimos de una sola línea con salida coloreada según la confianza.
--flycheck -Hallazgos mínimos de una sola línea que son compatibles con las herramientas a base de FlyCheck.
--save-config -genera un archivo de configuración basado en las opciones de línea de comando. Consulte los archivos de configuración para obtener más información.
--config -Ejecute Sobelow con el archivo de configuración. Consulte los archivos de configuración para obtener más información.
--mark-skip-all -Marque todos los hallazgos mostrados como omitibles.
--clear-skip -CORRE CORRACIÓN creada por --mark-skip-all .
--skip -Ignore los hallazgos que se han marcado para omitir. Ver falsos positivos para obtener más información.
--version -emite la versión actual de Sobelow. Esto es útil para los pasos de CI o la integración con otras herramientas como Salus.
Sobelow permite a los usuarios guardar opciones de uso frecuente en un archivo de configuración. Por ejemplo, si te encuentras constantemente en ejecución:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
Puede usar el indicador --save-config para crear su archivo de configuración .sobelow-conf :
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
Este comando creará el archivo .sobelow-conf en la raíz de su aplicación. Puede editar este archivo directamente para hacer cambios.
También puede ejecutar el comando sin ninguna opción:
$ mix sobelow --save-config
Cuando comience por primera vez usando este paquete: el archivo de configuración generado se poblará con los valores predeterminados para cada opción. (Esto ayuda a incorporar rápidamente este paquete en una base de código preexistente).
Ahora, si desea ejecutar Sobelow con la configuración guardada, puede ejecutar Sobelow con el indicador --config .
$ mix sobelow --config
Sobelow favorece el sobreinformado versus el subinformado. Como tal, puede encontrar una serie de falsos positivos en un escaneo típico. Estos hallazgos pueden ignorarse individualmente agregando un comentario # sobelow_skip , junto con una lista de módulos, antes de la definición de la función.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end Al integrar Sobelow en un nuevo proyecto, puede haber una gran cantidad de falsos positivos. Para marcar todos los hallazgos impresos como falsos positivos, ejecute Sobelow con el --mark-skip-all .
Una vez que haya etiquetado los hallazgos apropiados, ejecute Sobelow con la bandera --skip .
$ mix sobelow --skip
Si bien los comentarios # sobelow_skip solo pueden marcar los hallazgos de nivel de función (y, por lo tanto, no se pueden usar para omitir los problemas de configuración), el --mark-skip-all se puede usar para omitir cualquier tipo de búsqueda.
Las categorías de resultados se dividen en módulos. Estos módulos se pueden usar para ignorar las clases de hallazgos (a través de las opciones de ignore y skip ) o para obtener detalles de vulnerabilidad (a través de la opción details ).
Esta lista y otra información útil se pueden encontrar en la línea de comandos:
$ mix help sobelow
Para ejecutar Sobelow contra todas las aplicaciones infantiles dentro de una aplicación paraguas con un solo comando, puede agregar un alias para Sobelow en su archivo Root mix.exs :
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end Si desea usar archivos de configuración en una aplicación paraguas, cree un .sobelow-conf en cada aplicación infantil y use el indicador --config .
Al escanear un proyecto, Sobelow ocasionalmente verifica las actualizaciones e imprimirá una alerta si hay una nueva versión disponible. Sobelow realiza un seguimiento del último cheque de actualización creando un archivo .sobelow en la raíz del proyecto escaneado.
Si no se desea esta funcionalidad, el indicador --private se puede usar con el escaneo.