
يستغل ثغرة CVE-2026-21005 عبر تسميم بيانات Docker Registry V2 Schema 1 باستخدام عمليات دفع غير مصادق عليها، مما يتيح استبدال العلامات (tags) والتسبب في اختراق سلسلة التوريد.
# 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.