Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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-melange-apko — dasel v3.3.1 empaquetado con Melange y distribuido como una imagen apko mínima, parcheado para CVE-2026-33320 | Kitploit
Herramientas/GitHubGitHub/rotavori/dasel-melange-apko
Utilidades de Propósito GeneralSeguridad de ContenedoresAnálisis de VulnerabilidadesScripting y AutomatizaciónDevSecOpsSeguridad de Cadena de Suministro
GitHubrotavori/dasel-melange-apko

dasel-melange-apko

dasel v3.3.1 empaquetado con Melange y distribuido como una imagen apko mínima, parcheado para CVE-2026-33320

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

dasel v3.3.1 — Compilación con Melange + apko, parcheado para CVE-2026-33320

Este repositorio empaqueta la CLI dasel (v3.3.1) como un APK con Melange, construye una imagen de contenedor mínima con apko, y aplica una corrección para CVE-2026-33320 manteniéndose en el código base v3.3.1 (un parche, no un salto de versión).

El resultado es una imagen de ~4 MB que contiene únicamente el binario estático dasel — sin shell, sin gestor de paquetes, sin libc — que se ejecuta como un usuario no root.

Estructura del repositorio

melange/
  dasel.yaml              # receta de melange: descargar v3.3.1, aplicar el parche, compilar el .apk
apko/
  dasel.yaml              # receta de apko: ensamblar una imagen mínima desde el .apk local
patches/
  cve-2026-33320.patch    # la corrección del CVE (backport mínimo de upstream 282943b sobre v3.3.1)
  NOTES.md                # qué es el CVE, gravedad y cómo funciona la corrección
tests/
  test.sh                 # ejecuta la IMAGEN compilada y verifica comportamiento real + la corrección del CVE
README.md

Requisitos previos

  • Linux o WSL2 Ubuntu (desarrollado en WSL2 en Windows 10).
  • Docker — usado como ejecutor del entorno sandbox de Melange y para cargar/ejecutar la imagen final.
  • melange y apko en el PATH.

Versiones utilizadas durante el desarrollo:

HerramientaVersión
melange0.50.8
apko1.2.14
Docker29.5.2

Todos los comandos siguientes se ejecutan desde la raíz del repositorio.

Compilación y pruebas — comandos exactos

1. Generar una clave de firma (una sola vez)

melange keygen

Produce melange.rsa (privada) y melange.rsa.pub (pública). Ambas están en .gitignore — las claves son regeneradas por quien reproduzca la compilación, nunca se confirman.

2. Compilar el paquete

melange build melange/dasel.yaml \
  --source-dir patches \
  --signing-key melange.rsa \
  --arch x86_64 \
  --runner docker

--source-dir patches hace que patches/cve-2026-33320.patch esté disponible dentro del entorno sandbox de compilación, donde el paso patch de la receta lo aplica. Salida: packages/x86_64/dasel-3.3.1-r0.apk (firmado) y packages/x86_64/APKINDEX.tar.gz.

3. Probar el paquete

melange test instala el .apk recién compilado en un entorno limpio y ejecuta el bloque test: de la receta. Necesita el repositorio Wolfi (para busybox) y nuestro repositorio local packages/ (para dasel), cada uno con su clave de firma:

melange test melange/dasel.yaml dasel \
  --arch x86_64 --runner docker \
  --repository-append https://packages.wolfi.dev/os \
  --keyring-append https://packages.wolfi.dev/os/wolfi-signing.rsa.pub \
  --repository-append "$(pwd)/packages" \
  --keyring-append melange.rsa.pub

Verifica: dasel version reporta 3.3.1; una consulta JSON real; una conversión JSON→YAML; y que una bomba YAML de mil millones de risas es rechazada por el guardián de expansión (CVE-2026-33320 corregido).

4. Compilar la imagen

apko build apko/dasel.yaml dasel:test dasel.tar --arch x86_64
docker load < dasel.tar

Salida: dasel.tar (imagen OCI cargable) más un SBOM (JSON SPDX). apko añade la arquitectura a la etiqueta, por lo que la imagen cargada es dasel:test-amd64.

Cómo consume la imagen el paquete compilado localmente (la restricción clave). apko/dasel.yaml lista ./packages como repositorio y ./melange.rsa.pub como llavero. Así que apko instala el APK dasel exacto que melange build escribió en packages/x86_64/ — verificado con nuestra propia clave de firma — y no un paquete precompilado de upstream. (Ejecute apko build desde la raíz del repositorio para que esas rutas relativas se resuelvan). Esto es lo que conecta la compilación del paquete con la compilación de la imagen.

5. Ejecutar la prueba de imagen

./tests/test.sh

Ejecuta la imagen mediante docker run y verifica (5 comprobaciones): dasel está presente y reporta v3.3.1, una consulta JSON anidada, una conversión JSON→YAML, una consulta por índice de arreglo, y la bomba YAML rechazada. El script sale con código distinto de cero si falla alguna comprobación (por lo que puede servir como puerta en CI). Sobrescriba la etiqueta con IMAGE=<tag> ./tests/test.sh.

La corrección de CVE-2026-33320

CVE-2026-33320 es una denegación de servicio (CWE-674, recursión no controlada) en el lector YAML de dasel: un ataque de "mil millones de risas" mediante expansión de alias YAML sin límite. dasel implementó su propio UnmarshalYAML y resolvía nodos de alias recursivamente sin límite, eludiendo la protección incorporada de la biblioteca subyacente.

Hacemos backport solo de la corrección de upstream (commit 282943b, incluido en v3.3.2) sobre el código fuente v3.3.1 como patches/cve-2026-33320.patch. Limita la expansión con un límite de profundidad (32) y un presupuesto compartido (1000), devolviendo un error en lugar de expandir sin límite. Excluimos deliberadamente las correcciones de errores no relacionadas que también se incluyeron en v3.3.2, manteniendo el cambio mínimo y auditable. Consulte patches/NOTES.md para más detalles.

Decisiones de diseño

  • Fuente fijada. git-checkout fija expected-commit al SHA del commit v3.3.1, por lo que la compilación falla si la etiqueta se reasigna a código diferente (seguridad de cadena de suministro).
  • Parche mínimo. Solo se aplica la corrección del CVE — nada más — por auditabilidad.
  • Binario estático. Compilado con CGO_ENABLED=0 (definido en el entorno de compilación de la receta), por lo que el binario no tiene cgo ni dependencias de bibliotecas compartidas — que es lo que permite que la imagen funcione sin libc/shell/gestor de paquetes.
  • Imagen mínima. La lista packages: de apko es solo dasel; la imagen instala únicamente nuestro paquete compilado localmente (verificado con nuestra melange.rsa.pub).
  • No root. La imagen se ejecuta como uid 65532 (nonroot) para defensa en profundidad.
  • Firmado. Tanto el paquete como el índice de paquetes están firmados; apko verifica las firmas.

Suposiciones

  • Compilación solo para x86_64 (la arquitectura de la máquina de desarrollo).
  • Uso de docker como ejecutor de Melange (bubblewrap también funcionaría en Linux nativo).
  • La imagen no incluye el paquete base-layout (por lo tanto no hay /etc/os-release); nada en la imagen lo necesita. Es una elección deliberada de minimalismo, fácilmente reversible añadiendo wolfi-baselayout.
  • La compilación obtiene las versiones rodantes de go y busybox de Wolfi en lugar de instantáneas fijadas, por lo que asume que Wolfi sigue sirviendo Go ≥ 1.25 (requisito de go.mod de dasel). La fuente de dasel está fijada por commit; fijar también la cadena de herramientas de compilación haría la compilación completamente hermética (ver abajo).

Qué mejoraría con más tiempo

  • Portar las pruebas unitarias exactas de límites de upstream (profundidad 32 vs 33, presupuesto 1000 vs 1001, reinicio de presupuesto en documentos múltiples) para una cobertura más fina que nuestras pruebas de bomba de presupuesto/profundidad de caja negra.
  • Fijar la cadena de herramientas de compilación (instantáneas específicas de go/busybox de Wolfi) y una fecha de compilación fija para una compilación completamente hermética y bit a bit reproducible (la fuente ya está fijada por commit).
  • Compilación multi-arquitectura (aarch64) para máquinas ARM.
  • Firma de imágenes con cosign y verificación de las firmas de los binarios de melange/apko.
  • Un flujo de trabajo de CI (GitHub Actions) para recompilar y ejecutar ambas suites de pruebas en cada push.

Notas de envío

Descargar herramienta