
बिना प्रमाणीकरण के पुश के माध्यम से Docker Registry V2 Schema 1 मैनिफेस्ट को पॉइज़न करके CVE-2026-21005 का शोषण करता है, जिससे टैग अधिलेखन और सप्लाई-चेन समझौता संभव होता है।
# 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)
एक निजी डॉकर रजिस्ट्री बिना प्रमाणीकरण के push अनुरोध स्वीकार करती है और Schema 1 manifests का उपयोग करती है, जिनमें content-addressable configuration digest शामिल नहीं होता। एक हमलावर किसी मौजूदा tag को दुर्भावनापूर्ण इमेज से अधिलेखित कर सकता है, और उस tag को pull करने वाले क्लाइंट हमलावर का कोड चलाएँगे।
pip install flask
python docker_registry_sim.py
bash exploit_registry_poison.sh
Tag latest अधिलेखित कर दिया जाता है।