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
dasel-hardened-container — Paquete e imagen reforzados de dasel v3.3.1 construidos mediante Melange y apko. Parcheando CVE-2026-33320. | Kitploit
Herramientas/GitHubGitHub/nedlir/dasel-hardened-container
Utilidades de Propósito GeneralSeguridad de ContenedoresAnálisis de VulnerabilidadesAuditoría de ConfiguraciónDevSecOpsDetección de SecretosSeguridad de Cadena de Suministro
GitHubnedlir/dasel-hardened-container

dasel-hardened-container

Paquete e imagen reforzados de dasel v3.3.1 construidos mediante Melange y apko. Parcheando CVE-2026-33320.

Ver Repositorio
hace 2 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

dasel v3.3.1 contenedor endurecido

Este es un paquete melange y una imagen de contenedor apko para dasel v3.3.1 con un parche en tiempo de compilación para CVE-2026-33320 (expansión ilimitada de alias YAML). La imagen se construye enteramente a partir de un APK producido localmente; no se utiliza ninguna imagen upstream preconstruida.

Requisitos previos

HerramientaVersión probadaPropósito
Docker29.3.1Runtime de contenedores; ejecuta melange/apko mediante compose.yaml
melange0.50.5 (imagen Docker cgr.dev/chainguard/melange@sha256:b6f11bb45a6090c182986028fd2249fb1a18dcb6e173c4ce001dd3fb4cb1dd71)Constructor de paquetes APK
apko1.2.10 (imagen Docker cgr.dev/chainguard/apko@sha256:20dfc1f5e3461b5eaf3279f762cd4bf86c7f3635d2a9642f905cf583525f9ee6)Constructor de imágenes OCI
  • Arquitectura: solo x86_64
  • Se requiere acceso a Internet para la compilación inicial (descarga el tarball fuente, los módulos Go y los paquetes Wolfi)

Requisitos de Windows

Todos los comandos de compilación y carga funcionan desde cualquier terminal (PowerShell, CMD o bash). Un paso todavía requiere un shell Unix:

  • bash tests/test.sh — el script de pruebas usa bash y coreutils (timeout, grep, sed)

Instale Git Bash (se incluye con Git for Windows) antes de ejecutar las pruebas de la imagen.

Estructura del Proyecto

root@kitploit:~
.
├── .github/
├── melange/
│   ├── dasel.yaml
│   └── CVE-2026-33320.patch
├── apko/
│   └── dasel.yaml
├── tests/
│   └── test.sh
├── Makefile
├── compose.yaml
├── keys/                       # Generated, gitignored
│   ├── melange.rsa
│   └── melange.rsa.pub
├── sbom/                       # Generated, gitignored
│   ├── sbom-x86_64.spdx.json
│   └── sbom-index.spdx.json
├── packages/                   # Generated, gitignored
│   └── x86_64/
│       ├── dasel-3.3.1-r0.apk
│       └── APKINDEX.tar.gz
└── README.md

Construcción

Con Make

root@kitploit:~
make build        # keygen (if needed) + package + image
make test         # package tests + image tests
make all          # build + test
make clean        # remove all generated artifacts
make help         # list all targets and variables

Comandos manuales

root@kitploit:~
# 1. Generate signing keys (one-time)
docker compose run --rm melange keygen keys/melange.rsa

# 2. Build the APK package (fetches source, applies CVE patch, compiles)
docker compose run --rm melange build melange/dasel.yaml --arch x86_64 --signing-key keys/melange.rsa

# 3. Build the OCI image (consumes the local APK)
docker compose run --rm apko build apko/dasel.yaml dasel:3.3.1 dasel.tar --arch x86_64 --sbom-path sbom/

El paso 2 genera y firma automáticamente packages/x86_64/APKINDEX.tar.gz.

Ejecución

Después de cargar la imagen, ejecute dasel:

root@kitploit:~
docker load --input dasel.tar

# Example: query a JSON file
echo '{"name": "dasel"}' | docker run --rm \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  -i dasel:3.3.1-amd64 \
  -i json 'name'

Estas opciones aplican la capa de tiempo de ejecución de la estrategia de defensa en profundidad descrita en Endurecimiento de la imagen: un sistema de archivos raíz inmutable, cero capacidades de Linux y ninguna vía de escalada de privilegios.

Pruebas

Con Make

root@kitploit:~
make test          # all tests (package + image)
make package-test  # melange package tests only
make image-test    # image tests only (requires bash)

Comandos manuales

root@kitploit:~
# Package tests
docker compose run --rm melange test melange/dasel.yaml --arch x86_64

# Image tests (requires Git Bash on Windows)
docker load --input dasel.tar
bash tests/test.sh

El script de pruebas verifica:

  • La imagen se carga y dasel version reporta v3.3.1
  • Extracción de claves JSON (-i json 'test')
  • Conversión de JSON a YAML (-i json -o yaml --root)
  • Parche CVE: un YAML malicioso de tipo "billion laughs" provoca "yaml expansion budget exceeded" en lugar de colgarse

Corrección de CVE-2026-33320

La vulnerabilidad permite un consumo ilimitado de CPU/memoria mediante alias YAML anidados exponencialmente (ataque billion laughs). El parche en melange/CVE-2026-33320.patch añade dos salvaguardas al lector YAML de dasel: un límite de profundidad de expansión (32) que limita el anidamiento recursivo de alias, y un presupuesto de expansión (1000) que limita el total de desreferencias de alias por documento. Cuando se alcanza cualquiera de los límites, la decodificación devuelve un error de inmediato.

Seguridad, Reproducibilidad y Minimalidad

  • Seguridad: CVE-2026-33320 parcheado en tiempo de compilación. Todos los paquetes están firmados. La imagen contiene solo 3 paquetes APK (wolfi-baselayout, ca-certificates-bundle, dasel)
  • Reproducibilidad: YAML declarativo tanto para el paquete como para la imagen. El tarball fuente está anclado por SHA256. Todas las versiones de herramientas están documentadas. El binario Go se compila con -trimpath para eliminar las rutas de compilación locales
  • Minimalidad: No hay shell ni gestor de paquetes en la imagen final; solo el binario dasel, los certificados CA y baselayout

Endurecimiento de la imagen

La imagen aplica defensa en profundidad más allá del empaquetado mínimo:

Escaneo de vulnerabilidades

La imagen construida (dasel.tar) se escaneó con herramientas estándar de la industria para validar la postura de seguridad más allá del propio parche de CVE.

Syft (generación de SBOM)

Syft extrajo 36 paquetes de la imagen inspeccionando los metadatos de módulos del binario Go:

  • 3 paquetes APK: wolfi-baselayout 20230201-r29, ca-certificates-bundle 20260413-r0, dasel 3.3.1-r0
  • 32 módulos Go: incluidos go.yaml.in/yaml/v4, github.com/hashicorp/hcl/v2, github.com/pelletier/go-toml/v2, github.com/goccy/go-json, github.com/charmbracelet/bubbletea, golang.org/x/sys, golang.org/x/text, stdlib go1.25.9 y 25 más
  • 19 archivos inventariados: /usr/bin/dasel, /etc/ssl/certs/ca-certificates.crt, base de datos APK, SBOM por paquete y archivos de configuración de baselayout

Grype (escáner de vulnerabilidades)

El SBOM que generé fue inspeccionado con Grype y no se encontraron otras vulnerabilidades en ninguno de los 32 módulos Go ni en los 3 paquetes APK.

Entrega

Supuestos

  • Solo x86_64 - construcción de una sola arquitectura. La arquitectura múltiple requeriría opciones --arch adicionales
  • Claves de firma desechables - generadas localmente e ignoradas por Git. En un entorno de producción, las claves de firma privadas deben almacenarse en un gestor de secretos, no en el sistema de archivos local. Aunque los archivos ignorados por Git pueden quedar expuestos mediante herramientas de respaldo, montajes de volúmenes de contenedores o una estación de trabajo comprometida.
  • Dependencia de Wolfi OS - la compilación y la imagen final dependen de paquetes Wolfi (busybox, go, ca-certificates-bundle). Si se descubre una vulnerabilidad en cualquiera de esos paquetes upstream, también afectaría a esta imagen. Mantener los paquetes Wolfi actualizados o suscribirse a sus avisos de seguridad sería necesario en producción
  • Wrappers de Docker Compose - melange y apko se ejecutan como contenedores Docker mediante compose.yaml. Esto se desarrolló en Kali 2025.3 y se verificó en Windows 10 con Docker Desktop 29.3.1
  • El script de pruebas requiere bash - tests/test.sh usa timeout (coreutils) y la CLI de Docker. Todos los demás comandos son docker puros y funcionan desde PowerShell o CMD. En Windows, ejecute el script de pruebas desde Git Bash (consulte Requisitos de Windows)

Brecha de cobertura del SBOM

apko genera automáticamente SBOM SPDX en tiempo de compilación en la carpeta sbom/ (sbom/sbom-x86_64.spdx.json, sbom/sbom-index.spdx.json). Estos registran los 3 paquetes APK instalados con versiones, CPE, procedencia de las fuentes y referencias a las definiciones de compilación de Melange. Sin embargo, no incluyen las dependencias de módulos Go compiladas en el binario dasel. Decidí escanearlos y usé Syft para cerrar esta brecha extrayendo los 32 módulos Go de los metadatos integrados del binario.

Para un entorno de producción debería existir cierta automatización de la extracción del SBOM que consulte periódicamente. Luego tal vez adjuntar los resultados del SBOM con algo como https://github.com/nedlir/CVEnotifier, que escribí en Golang para encontrar vulnerabilidades novedosas en la cadena de suministro.

Comandos ejecutados y resultados

Mejoras futuras

  • Compilaciones multiarquitectura - soportar múltiples arquitecturas para compilar este contenedor.

  • Pipeline de CI/CD - automatizar la compilación y las pruebas en GitHub Actions con acciones de contenedor para melange/apko

  • SBOM a nivel de Go en melange - ejecutar syft durante el pipeline de compilación de melange e incrustar el SBOM de módulos Go junto al APK

Descargar herramienta
CapaMedidaEfecto
ConstrucciónUsuario no root (UID 65532)El proceso del contenedor nunca se ejecuta como root
Construcción-s -w ldflags + -trimpath automáticoBinario sin símbolos, sin fugas de rutas locales
ConstrucciónSolo 3 paquetesSuperficie de ataque mínima, sin shell ni gestor de paquetes
Tiempo de ejecución--read-onlySistema de archivos raíz inmutable
Tiempo de ejecución--cap-drop=ALLCero capacidades de Linux
Tiempo de ejecución--no-new-privilegesEvita la escalada de privilegios mediante setuid/setgid
ComandoResultado
docker compose run --rm melange keygen keys/melange.rsaCorrecto
docker compose run --rm melange build melange/dasel.yaml --arch x86_64 --signing-key keys/melange.rsaCorrecto: parche aplicado (7/7 hunks), APK generado
docker compose run --rm melange test melange/dasel.yaml --arch x86_64Correcto: versión, extracción de claves JSON, acceso a arreglos JSON
docker compose run --rm apko build apko/dasel.yaml dasel:3.3.1 dasel.tar --arch x86_64 --sbom-path sbom/Correcto: 3 paquetes instalados, tarball OCI generado
docker load --input dasel.tarCorrecto: dasel:3.3.1-amd64 cargado
bash tests/test.shCorrecto: todas las pruebas (versión, extracción de claves, conversión de formato, alias YAML, parche CVE)
docker run --rm -v ... anchore/grype:latest /work/dasel.tarCorrecto: 1 hallazgo (falso positivo esperado para el CVE parcheado)
docker run --rm -v ... anchore/syft:latest /work/dasel.tarCorrecto: 36 paquetes catalogados (3 APK + 32 Go + 1 stdlib)