Tutoriales

Código frágil: herramientas para unir y correlacionar bases de datos vulnerables

VulnerableCode es una saco de datos abierta y gratuita de vulnerabilidades en el paquete de software FOSS y las herramientas para crear y sostener los datos. Fue desarrollado por la comunidad de software franco para mejorar y afianzar el ecosistema de software de código amplio.

Codigo vulnerable herramientas para agregar y correlacionar bases de datos
Código frágil: herramientas para unir y correlacionar bases de datos vulnerables 3

¿Por qué?

Las soluciones existentes son bases de datos comerciales de vulnerabilidad propietarias, lo que en sí mismo no tiene sentido ya que los datos son FOSS (software franco y de código amplio).

La saco de datos doméstico de vulnerabilidades, una fuente principal centralizada de datos para vulnerabilidades conocidas, no es particularmente adecuada para solucionar problemas de seguridad de software franco porque:

  1. Precede a la ataque del software FOSS
  2. El formato de datos refleja una visión comercial centrada en el proveedor, en parte oportuno al uso de CPE para mapear vulnerabilidades en paquetes existentes.
  3. Conveniente a su semántica orientada al producto del fabricante, los CPE simplemente no están diseñados para asignar vulnerabilidades al software franco. Esto hace que sea en realidad difícil reponer a las preguntas básicas: «¿Es el paquete foo frágil?» Y «¿Es el paquete foo frágil a las vulnerabilidades de seguridad?»

Cómo?

VulnerableCode agrega de forma independiente muchas fuentes de datos para detectar vulnerabilidades de software y respalda la creación descentralizada de nuevos datos. Estas fuentes de datos (consulte la relación completa aquí) incluyen avisos de seguridad publicados por distribuciones de Linux y BSD, administradores de paquetes de software de aplicación y repositorios de paquetes, proyectos FOSS, GitHub y más. Gracias a este enfoque, los datos se centran en ecosistemas específicos, pero se agrupan en una sola saco de datos para que se pueda consultar un diagrama más completo de las relaciones entre múltiples encarnaciones de un paquete. Ser específico aumenta la precisión y validez de los datos porque la misma lectura de un paquete antecedente en diferentes ecosistemas puede o no ser frágil a la misma vulnerabilidad.

Los paquetes se identifican utilizando la URL del paquete PURL como identificadores principales en extensión de CPE. Esto proporciona respuestas a preguntas como «¿Es el paquete foo frágil a vulnerabilidades?» mucho más preciso y claro de interpretar.

El llegada principal a los datos es a través de una API REST.

Adicionalmente, un nuevo objetivo de la interfaz web es respaldar la exploración y la búsqueda de datos de vulnerabilidad y permitir gradualmente la curación de los datos por parte de la comunidad mediante la complemento de nuevos paquetes y vulnerabilidades y la revisión y puesta al día de sus relaciones.

Todavía planeamos apañarse vulnerabilidades que no se hayan gastado comprometidas por una variedad de razones, como: B. oportuno al complicado proceso de obtener el CVE-ID o no clasificar un error como un compromiso de seguridad.

Presentaciones actuales:

Configurar VulnerableCode

Primero clona el código fuente:

Clon de Git https://github.com/nexB/vulnerablecode.git
CD Vulnercode

Uso de Docker Compose

Una forma sencilla de configurar VulnerableCode es crear Docker Containers y Docker Compose. Para ello, se debe instalar lo subsiguiente.

  • Motor Docker. Las instrucciones de instalación se pueden encontrar aquí.
  • Docker Compose. Las instrucciones de instalación se pueden encontrar aquí.

Utilice sudo docker-compose up para iniciar VulnerableCode. Luego acceda a VulnerableCode en http: // localhost: 8000 / o en http://127.0.0.1:8000/.

Importante: No olvide ejecutar sudo docker-compose up -d –no-deps –build web para sincronizar su instancia a posteriori de cada cuna de Git.

Utilice sudo docker-compose exec web bash para ingresar al contenedor VulnerableCode. Desde aquí puede ingresar a manage.py y ejecutar comandos administrativos para importar datos como se muestra a continuación.

Sin Docker Compose

Requisitos del sistema

  • Python 3.8+
  • PostgreSQL 9+
  • Prisión de herramientas del compilador y archivos de ampliación para Python y PostgreSQL

En las distribuciones basadas en Debian, estas se pueden instalar con:

sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential

Configuración de la saco de datos

  • Crea un becario llamado vulnerablecode. Usar vulnerablecode como contraseña cuando se le solicite:

sudo -u postgres createuser –no-createrole –no-superuser –login
–Eerben –createdb –pwprompt código frágil «

  • Crea una saco de datos citación vulnerablecode::

createdb –encoding = utf-8 –owner = frágil code –user = frágil code
–Password –host = localhost –port = 5432 código frágil

Dependencias de la aplicación

  • Cree un entorno aparente, instale dependencias, genere archivos estáticos y ejecute las migraciones de la saco de datos:

python3 -m venv venv
Activar fuente venv / bin /
pip install -r requirements.txt
DJANGO_DEV = 1 python manage.py collectstatic
DJANGO_DEV = 1 python manage.py portar

La variable de entorno DJANGO_DEV se utiliza para cargar configuraciones apropiadas para el ampliación que se definen en vulnerablecode/dev.py. Si no quiere escribirlo todo el tiempo, use export DJANGO_DEV=1 en extensión de. No utilice DJANGO_DEV en un entorno de producción.

Para un modo de producción, una variable de entorno con el nombre SECRET_KEY se debe establecer. La forma recomendada de gestar esta secreto es usar el código que Django tiene para este propósito:

SECRET_KEY = $ (python -c «de las utilidades de importación de django.core.management; print (utils.get_random_secret_key ())»)

Todavía debe configurar la variable de entorno VC_ALLOWED_HOSTS para que coincida con el nombre de host en el que se implementa la aplicación:

VC_ALLOWED_HOSTS = código frágil.tu.dominio.example.com

Puede especificar varios hosts separándolos con dos puntos:

Sin carencia

Puede instalar VulnerableCode con Nix (se requiere compatibilidad con Flake):

cd etc / carencia
nix-shell -p nixFlakes –run “nix –print-build-logs flake check” # Construir y ejecutar pruebas

Hay varias formas de utilizar la lectura de Nix:

# Ingrese a un entorno interactivo con todas las dependencias configuradas.
cd etc / carencia
no desarrollar carencia
> ../../manage.py… # Tachar a la caja registradora nave
> Pasivo Code-manage.py… # Llame a manage.py como está instalado en la tienda nix

# Pruebe el procedimiento de importación con la lectura Nix.
etc / nix / test-import-using-nix.sh –all # importar todo
# Pruebe la importación en la caja nave.
INSTALL_DIR =. etc / nix / test-import-using-nix.sh ruby ​​# solo importar ruby

Mantenga la configuración de Nix sincronizada

La instalación de nix usa nix-n-a-thing para manejar las dependencias de Python, ya que algunas dependencias no están disponibles actualmente como paquetes nix. Todas las dependencias de Python se recuperan automáticamente de ./requirements.txt. Si la instalación basada en no hacer carencia falta, es posible que deba desempolvar no hacer carencia usted mismo y la lectura de pypi-deps-db que está utilizando (consulte etc / nix / flake.nix: inputs.machnix y machnixFor.pypiDataRev).

Las dependencias que no son de Python están seleccionadas en:

etc / nix / flake.nix: Vulnercode.propagatedBuildInputs

Ejecutar pruebas

Utilice estos comandos para ejecutar comprobaciones de estilo de código y el conjunto de pruebas:

infausto -l 100 -check.
DJANGO_DEV = 1 prueba de Python-m

Importación de datos

Algunos importadores de datos usan las API de GitHub. Para hacer esto, exporte el GH_TOKEN Variable de entorno con:

exportar GH_TOKEN = yourgithubtoken

Para obtener instrucciones sobre cómo obtener su token de GitHub, consulte los documentos de GitHub.

Para ejecutar todos los importadores de datos, utilice:

DJANGO_DEV = 1 importación de python manage.py –todos

Para enumerar los importadores disponibles, utilice:

DJANGO_DEV = 1 python manage.py import –list

Para ejecutar importadores específicos:

DJANGO_DEV = 1 python manage.py importa rust npm

Comunicación a la API REST

Inicie el servidor web:

DJANGO_DEV = 1 python manage.py runserver

Para obtener la documentación completa sobre los puntos finales de la API, utilice esta URL:

http://127.0.0.1:8000/api/docs

Importación de datos periódica continua

Si desea ejecutar la importación con regularidad, puede usar un temporizador systemd:

$ cat ~ / .config / systemd / user / vulnerablecode.service

[Unit]Descripción = Modernizar la saco de datos de vulnerabilidades

[Service]Tipo = OneShot
Entorno = «DJANGO_DEV = 1»
ExecStart = / ruta / a / venv / bin / python /path/to/vulnerablecode/manage.py importar –todos

$ cat ~ / .config / systemd / user / vulnerablecode.timer

[Unit]Descripción = Actualice la saco de datos de vulnerabilidades con regularidad

[Timer]OnCalendar = diario

[Install]WantedBy = multi-user.target

Inicie este «temporizador» con:

systemctl –user daemon-reload
systemctl –becario inicia vulnerablecode.timer

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba