
Exploite la CVE-2026-21005 en empoisonnant des manifests Docker Registry V2 Schema 1 via des pushs non authentifiés, permettant l'écrasement de tags et la compromission de la chaîne d'approvisionnement.
# docker_registry_sim.py - Simulated registry that serves schema1 manifests
from flask import Flask, request, jsonify
app = Flask(__name__)
images = {
'myapp': {
'v1': {'layers': ['sha256:abc', 'sha256:def'], 'config': {}},
}
}
@app.route('/v2/<name>/manifests/<tag>', methods=['GET', 'PUT'])
def manifest(name, tag):
if request.method == 'PUT':
images[name][tag] = request.json
return jsonify({}), 201
return jsonify(images[name].get(tag, {}))
if __name__ == '__main__':
app.run(port=5000)
Un registre Docker privé accepte les requêtes push sans authentification et utilise des manifestes Schema 1, qui n'incluent pas de digest de configuration adressable par contenu. Un attaquant peut écraser un tag existant avec une image malveillante, et les clients qui récupèrent ce tag exécuteront le code de l'attaquant.
pip install flask
python docker_registry_sim.py
bash exploit_registry_poison.sh
Le tag latest est écrasé.