
Sean's Surf & Skate Co. — Tienda en línea Spring Boot con una dependencia SnakeYAML vulnerable (CVE-2022-1471) para demostraciones de Seal Security
Una pequeña pero realista tienda de comercio electrónico ("Sean's Surf & Skate Co.") construida con Spring Boot. Viene con dependencias de código abierto con vulnerabilidades conocidas para que pueda usarse para demostrar cómo Seal Security remedia CVEs con parches "sellados" retroportados — sin actualizar ni una sola versión de paquete.
El formulario de suscripción al boletín / "Alertas de ofertas" de la tienda ejecuta el valor enviado a través de Yaml.load() de SnakeYAML:
Yaml yaml = new Yaml();
Object parsed = yaml.load(name); // untrusted input
org.yaml:snakeyaml:1.33 es vulnerable a CVE-2022-1471 (instanciación arbitraria de objetos en entradas no confiables). Pegar un payload de SnakeYAML manipulado en el campo de suscripción logra la ejecución remota de código y reemplaza la tienda con una página "You've Been PWNED". El payload de exploit reside en el repositorio complementario yaml-payload.
El pom.xml también fija varias otras bibliotecas intencionalmente vulnerables (jackson-databind, commons-text / Text4Shell, log4j-core / Log4Shell, spring-core y más) para que un escaneo muestre hallazgos reales.
mvn clean package
java -jar target/seans-surf-and-skate-1.0.0.jar
# open http://localhost:8080
Para acceder desde un navegador a través de una URL pública (por ejemplo, para una demostración grabada), exponga el puerto 8080 con ngrok: ngrok http 8080.
Este repositorio se ha confirmado deliberadamente en su estado vulnerable y previo a la remediación — aún no hay un paso de Seal en CI. En la demostración, la integración de GitHub de Seal abre una solicitud de extracción (pull request) que añade el flujo de trabajo de remediación; una vez fusionado (y SEAL_TOKEN configurado como secreto de Actions), la compilación aplica parches sellados (por ejemplo, snakeyaml 1.33 → 1.33+sp1) en tiempo de compilación. Las mismas versiones en apariencia, las mismas pruebas que pasan — los CVEs desaparecieron.
| Secreto | Propósito |
|---|---|
SEAL_TOKEN | Token de acceso al servidor de artefactos / CLI de Seal (Producción) |
NGROK_TOKEN | Token de autenticación de ngrok, para exponer la aplicación en ejecución desde CI |
NGROK_DOMAIN |
Tu dominio ngrok reservado (por ejemplo, your-name.ngrok-free.dev) |