
Escáner de vulnerabilidades de código fuente basado en web

Raptor es un escáner de vulnerabilidades de código fuente centrado en GitHub, basado en web (servicio web + interfaz de usuario), es decir, escanea un repositorio con solo la URL del repositorio de GitHub. Puedes configurar webhooks para garantizar escaneos automáticos cada vez que realizas un commit o fusionas una solicitud de pull. El escaneo se realiza de forma asíncrona y los resultados están disponibles solo para el usuario que inició el escaneo.
Algunas de las características de Raptor:
Esta herramienta es un intento de ayudar a la comunidad y a las empresas emergentes a enfatizar la codificación segura. Esta herramienta puede o no igualar las características/calidad de las alternativas comerciales, no se garantiza nada y se le ha advertido. Esta herramienta está dirigida a ser utilizada por revisores de seguridad de código y/o desarrolladores con experiencia en codificación segura para encontrar puntos de entrada de vulnerabilidades durante auditorías de código o revisiones entre pares. Por favor, NO confíe ciegamente en la salida de la herramienta. Es mejor usarla si integra Raptor en su canal de CI/CD.
0.1 beta
Complementos integrados:
Nota: La mayoría de las siguientes herramientas/módulos/bibliotecas han sido modificados considerablemente para integrarse bien en el marco.
Paquetes de reglas disponibles:
Video de instalación: Instalación en YouTube
$ wget https://github.com/dpnishant/raptor/archive/master.zip -O raptor.zip
$ unzip raptor.zip
$ cd raptor-master
$ sudo sh install.sh
Video de instalación: Uso en YouTube
cd raptor-master
sudo sh start.sh # inicia el servicio web backend
Ahora apunte su navegador a Página de inicio de Raptor (http://localhost/raptor/)
Inicie sesión con el nombre de usuario registrado en el servidor de GitHub correspondiente al que está conectado y cualquier contraseña (pero recuerde el nombre de usuario para ver el historial de escaneo)
Por ejemplo:
Si está registrado como foobar en https://github.com, use el mismo nombre de usuario al escanear repositorios en https://github.com. Sin embargo, si está registrado como foobar_corp en su GitHub personal/corporativo (por ejemplo, https://github.corp.company.com), use ese mismo nombre de usuario si tiene la intención de escanear repositorios en https://github.corp.company.com
Sin embargo, por ahora la contraseña puede ser cualquier cosa, ya que NO hemos implementado una base de datos en la versión de desarrollo.
Puede usar el editor de reglas ligero del lado del cliente incluido para agregar cualquier regla nueva o personalizada para sus requisitos específicos, o cualquier otro editor de texto plano, ya que los archivos de paquetes de reglas son simplemente estructuras JSON simples. Use su navegador para abrir las reglas ubicadas en 'backend/rules'. Cuando termine, guarde su archivo de reglas nuevo/modificado en el mismo directorio, es decir, 'backend/rules'. Todo lo que necesita hacer ahora es una edición menor, aquí: Script de inicio. Agregue el nombre de su nuevo archivo de paquete de reglas a este arreglo sin la extensión '.rulepack' y reinicie el servidor backend. ¡Listo! 👍
Puede acceder aquí: Editor de reglas (http://localhost/raptor/editrules.php)
Agregue un patrón de nombre de archivo o nombre de directorio para excluir del escaneo. Esto es útil para ignorar cualquier archivo conocido como jquery.min.js o, por ejemplo, todo el directorio /test/. Por ejemplo, en el contenido de muestra a continuación, jquery significa jquery y distingue entre mayúsculas y minúsculas, por lo tanto, tenga cuidado. En la sección plugins, name del complemento es el nombre del archivo de paquete de reglas sin la extensión ".rulepack" según lo disponible en el directorio rules/. El campo issue es el ID del problema mencionado en cada regla de los archivos de paquete de reglas: Ejemplo #1, Ejemplo #2. El valor del campo match_type puede ser regex, start o end. El campo value es la cadena exacta que se va a comparar en caso de que match_type sea o . En caso de que el campo sea , debe contener el patrón de RegEx sin procesar que debe estar codificado en Base64 para evitar problemas relacionados con el escape de sintaxis JSON. es una coincidencia basada en Expresiones Regulares, coincidirá al comienzo del fragmento y coincidirá al final del fragmento.
La forma en que funciona es que cuando el escáner ha terminado de escanear en busca de problemas, iterará a través de todos los problemas encontrados y eliminará aquellos que coincidan con los patrones (según el tipo de coincidencia) de cada complemento mencionado en el archivo ignore_list.rulepack.
(contenido de muestra a continuación)
{
"files": [
"/.",
"bootstrap",
"jquery",
"uglify",
"knockout",
"angular",
"backbone",
"ember",
"yui",
"mocha",
"express",
"yql",
"dataTables"
],
"directories": [
"/node_modules/",
"/test/"
],
"plugins": [
{
"name": "common", <----- Nombre del complemento
"issue": "HARD_CRED1", <----- ID del problema
"patterns": [
{
"match_type": "start", <----- El tipo de coincidencia puede ser "regex", "start" o "end"
"value": "foreach" <----- La cadena real a coincidir. Codifique en Base64 este patrón si match_type es "regex"
},
{
"match_type": "start",
"value": "for"
},
{
"match_type": "start",
"value": "elseif"
}
]
}
]
}
Puede crear un paquete de reglas completamente nuevo y agregarlo al escáner, o puede escribir su propio complemento de escáner y agregarlo al marco. Un archivo de paquete de reglas de ejemplo es una estructura JSON muy simple.
{
"plugin_type": "plugin_name", <-- Asígnele un nombre (cualquier cadena)
"file_types": [
".java", <-- Agregue tantas extensiones de archivo como desee que el escáner recoja durante el escaneo
".js"
],
"rules": [
{
"id": "HARD_CRED1", <-- Un IssueID único, sea creativo.
"severity": "High", <-- Puede ser High, Medium o Low. Esto se mostrará en consecuencia en los gráficos de la IU.
"title": "Title of the Issue", <-- El título del problema.
"description": "Este texto aquí se reflejará en la IU como descripción del problema.", <-- La descripción del problema, esto es opcional.
"remediation": "El texto aquí se reflejará en la IU como los pasos para remediar el problema", <-- La remediación del problema, esto es opcional.
"link": "Cualquier URL que tenga más recursos sobre el problema.", <-- URL del problema. Esto es opcional
"example_insecure": "Coloque la versión insegura del fragmento de código con fines educativos.", <-- Esto es opcional
"example_secure": "Coloque la versión segura del fragmento de código con fines educativos.", <-- Esto es opcional
"platform_version": "all", <-- Déjelo así
"enabled": "true", <-- Este valor habilita o deshabilita la regla durante el escaneo. Puede ser "true" o "false".
"logic": "Explique la lógica detrás de esta regla para futuras actualizaciones o personalización", <-- Esto es opcional
"signature": "base64encode(regexp)" <-- Escriba la Expresión Regular de su patrón y luego codifíquela en base64 para colocarla aquí.
}
]
}
Si desea más control o agregar más inteligencia a su escáner en lugar de una simple búsqueda RegExp, puede escribir un complemento de escáner rápido como este e integrar el script aquí y agregar el nombre del script aquí. Eso es todo. Es bastante sencillo para cualquier persona con habilidades básicas de scripting en Python.
Puede usar Raptor para escanear las instancias públicas y privadas de GitHub de su organización especificando los puntos finales del servidor correctos aquí y aquí.











¿Quieres contribuir? ¡Genial! Ponte en contacto conmigo si tienes una idea o siéntete libre de bifurcar y mejorar. 😊
GNU GPL v2.0
Software Libre, ¡Claro que sí!
startendmatch_typeregexvalueregexstartend