Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dasel-melange-apko — dasel v3.3.1 empaqueté avec Melange et distribué comme une image apko minimale, corrigé pour CVE-2026-33320 | Kitploit
Outils/GitHubGitHub/rotavori/dasel-melange-apko
Utilitaires GénérauxSécurité des ConteneursAnalyse des VulnérabilitésScripting et AutomatisationDevSecOpsSécurité de la Chaîne Logistique
GitHubrotavori/dasel-melange-apko

dasel-melange-apko

dasel v3.3.1 empaqueté avec Melange et distribué comme une image apko minimale, corrigé pour CVE-2026-33320

Voir le dépôt
il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

dasel v3.3.1 — Construction Melange + apko, patché pour CVE-2026-33320

Ce dépôt empaquette l'outil CLI dasel (v3.3.1) en un APK avec Melange, construit une image conteneur minimale avec apko, et applique un correctif pour CVE-2026-33320 tout en restant sur le codebase v3.3.1 (un patch, pas une mise à jour de version).

Le résultat est une image d'environ 4 Mo contenant uniquement le binaire statique dasel — pas de shell, pas de gestionnaire de paquets, pas de libc — qui s'exécute en tant qu'utilisateur non root.

Structure du dépôt

root@kitploit:~
melange/
  dasel.yaml              # melange recipe: fetch v3.3.1, apply the patch, build the .apk
apko/
  dasel.yaml              # apko recipe: assemble a minimal image from the local .apk
patches/
  cve-2026-33320.patch    # the CVE fix (minimal backport of upstream 282943b onto v3.3.1)
  NOTES.md                # what the CVE is, severity, and how the fix works
tests/
  test.sh                 # runs the built IMAGE and asserts real behavior + the CVE fix
README.md

Prérequis

  • Linux ou WSL2 Ubuntu (développé sous WSL2 sur Windows 10).
  • Docker — utilisé comme exécuteur du bac à sable de construction de Melange et pour charger/exécuter l'image finale.
  • melange et apko dans le PATH.

Versions utilisées lors du développement :

OutilVersion
melange0.50.8
apko1.2.14
Docker29.5.2

Toutes les commandes ci-dessous sont exécutées depuis la racine du dépôt.

Construction & test — commandes exactes

1. Générer une clé de signature (unique)

root@kitploit:~
melange keygen

Produit melange.rsa (privée) et melange.rsa.pub (publique). Les deux sont dans .gitignore — les clés sont régénérées par quiconque reproduit la construction, jamais commitées.

2. Construire le paquet

root@kitploit:~
melange build melange/dasel.yaml \
  --source-dir patches \
  --signing-key melange.rsa \
  --arch x86_64 \
  --runner docker

--source-dir patches rend patches/cve-2026-33320.patch disponible dans le bac à sable de construction, où l'étape patch de la recette l'applique. Sortie : packages/x86_64/dasel-3.3.1-r0.apk (signé) et packages/x86_64/APKINDEX.tar.gz.

3. Tester le paquet

melange test installe le .apk fraîchement construit dans un environnement propre et exécute le bloc test: de la recette. Il a besoin du dépôt Wolfi (pour busybox) et de notre dépôt local packages/ (pour dasel), chacun avec sa clé de signature :

root@kitploit:~
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

Vérifications : dasel version rapporte 3.3.1 ; une requête JSON réelle ; une conversion JSON→YAML ; et qu'une bombe YAML "billion laughs" est rejetée par le garde d'expansion (CVE-2026-33320 corrigé).

4. Construire l'image

root@kitploit:~
apko build apko/dasel.yaml dasel:test dasel.tar --arch x86_64
docker load < dasel.tar

Sortie : dasel.tar (une image OCI chargeable) plus un SBOM (SPDX JSON). apko ajoute l'architecture au tag, donc l'image chargée est dasel:test-amd64.

Comment l'image consomme le paquet construit localement (la contrainte clé). apko/dasel.yaml liste ./packages comme dépôt et ./melange.rsa.pub comme trousseau. Ainsi apko installe exactement l'APK dasel que melange build a écrit dans packages/x86_64/ — vérifié avec notre propre clé de signature — et non un paquet pré-construit en amont. (Exécutez apko build depuis la racine du dépôt pour que ces chemins relatifs soient résolus.) C'est ce qui relie la construction du paquet à la construction de l'image.

5. Exécuter le test de l'image

root@kitploit:~
./tests/test.sh

Exécute l'image via docker run et vérifie (5 contrôles) : dasel est présent et rapporte v3.3.1, une requête JSON imbriquée, une conversion JSON→YAML, une requête par index de tableau, et la bombe YAML rejetée. Le script se termine avec un code non nul si un contrôle échoue (permettant ainsi de bloquer CI). Remplacez le tag avec IMAGE=<tag> ./tests/test.sh.

Le correctif CVE-2026-33320

CVE-2026-33320 est un déni de service (CWE-674, récursion non contrôlée) dans le lecteur YAML de dasel : une attaque "billion laughs" via une expansion d'alias YAML sans limite. dasel a implémenté son propre UnmarshalYAML et résolu les nœuds d'alias de manière récursive sans limite, contournant la protection intégrée de la bibliothèque sous-jacente.

Nous rétroportons uniquement le correctif amont (commit 282943b, livré dans v3.3.2) sur la source v3.3.1 sous forme de patches/cve-2026-33320.patch. Il limite l'expansion avec une limite de profondeur (32) et un budget partagé (1000), renvoyant une erreur au lieu de s'étendre sans limite. Nous excluons délibérément les corrections de bogues non liées également livrées dans v3.3.2, gardant le changement minimal et vérifiable. Voir patches/NOTES.md pour tous les détails.

Décisions de conception

  • Source épinglée. git-checkout épingle expected-commit au SHA du commit v3.3.1, donc la construction échoue si le tag est un jour redirigé vers un code différent (sécurité de la chaîne d'approvisionnement).
  • Patch minimal. Seul le correctif CVE est appliqué — rien d'autre — pour la vérifiabilité.
  • Binaire statique. Construit avec CGO_ENABLED=0 (défini dans l'environnement de construction de la recette), donc le binaire n'a pas de cgo ni de dépendances de bibliothèques partagées — ce qui permet à l'image d'être livrée sans libc/shell/gestionnaire de paquets.
  • Image minimale. La liste packages: d'apko est juste dasel ; l'image installe uniquement notre paquet construit localement (vérifié avec notre melange.rsa.pub).
  • Non-root. L'image s'exécute en tant qu'uid 65532 (nonroot) pour une défense en profondeur.
  • Signé. Le paquet et l'index des paquets sont signés ; apko vérifie les signatures.

Hypothèses

  • Construction uniquement pour x86_64 (l'architecture de la machine de développement).
  • Utilisation de docker comme exécuteur de Melange (bubblewrap fonctionnerait aussi sur Linux natif).
  • L'image ne contient aucun paquet de base (donc pas de /etc/os-release) ; rien dans l'image n'en a besoin. C'est un choix délibéré de minimalisme, facilement réversible en ajoutant wolfi-baselayout.
  • La construction utilise les versions roulantes go et busybox de Wolfi plutôt que des instantanés épinglés, donc elle suppose que Wolfi continue de fournir un Go ≥ 1.25 (exigence de go.mod de dasel). La source de dasel est épinglée par commit ; épingler aussi la chaîne d'outils de construction rendrait la construction entièrement hermétique (voir ci-dessous).

Ce que j'améliorerais avec plus de temps

  • Porter les tests unitaires de limites exacts de l'amont (profondeur 32 vs 33, budget 1000 vs 1001, réinitialisation du budget multi-document) pour une couverture plus fine que nos tests de bombe budget/profondeur en boîte noire.
  • Épingler la chaîne d'outils de construction (instantanés spécifiques Wolfi go/busybox) et une date de construction fixe pour une construction entièrement hermétique et reproductible bit à bit (la source est déjà épinglée par commit).
  • Construction multi-architecture (aarch64) pour les machines ARM.
  • Signature d'image avec cosign, et vérification des signatures des binaires de version de melange/apko.
  • Un workflow CI (GitHub Actions) pour reconstruire et exécuter les deux suites de tests à chaque push.

Notes de soumission

  • Toutes les commandes ci-dessus ont été exécutées et réussissent sur WSL2 Ubuntu avec Docker Desktop.
  • melange build + melange test : le paquet se construit, le patch s'applique proprement (tous les 7 hunks — 1 dans parsing/yaml/yaml.go, 6 dans parsing/yaml/yaml_reader.go), tous les tests du paquet sont verts y compris le test de bombe CVE.
  • apko build + tests/test.sh : l'image se construit (~4 Mo de contenu), tous les 5 tests d'image sont verts.
  • La section "Ce que j'améliorerais avec plus de temps" ci-dessus liste les prochaines étapes que je prendrais avec plus de temps.
Télécharger l’outil