
CVE-2026-21005を悪用し、未認証のプッシュを介してDocker Registry V2 Schema 1マニフェストを汚染することで、タグの上書きとサプライチェーンへの侵害を可能にします。
# 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)
プライベート Docker レジストリが、認証なしでプッシュリクエストを受け入れ、コンテンツアドレス可能な構成ダイジェストを含まない Schema 1 マニフェストを使用しています。攻撃者は既存のタグを悪意のあるイメージで上書きでき、そのタグをプルしたクライアントは攻撃者のコードを実行します。
pip install flask
python docker_registry_sim.py
bash exploit_registry_poison.sh
タグ latest は上書きされます。