
يحتوي هذا على ملف Dockerfile لبناء وإعادة إنتاج shellshock
CVSS 10.0. يقوم Bash بتحليل الأوامر التالية بشكل غير صحيح بعد تعريف دالة مخزنة في متغير بيئة، ويقوم بتنفيذها أثناء تهيئة الصدفة.
يمكن لمتغيرات بيئة Bash أن تشفر تعريفات الدوال: x='() { :; }' عندما يستورد Bash هذا كمتغير بيئة ويقوم بالتهيئة، فإنه يحلل جسم الدالة لكنه يفشل في التوقف عن التحليل بعد القوس المغلق، وينفذ أي نص يليه كأمر.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[ملف Dockerfile المُصحح / الناتج هنا]
نصوص CGI التي تستدعي bash مع رؤوس يتحكم فيها المهاجم (مثل User-Agent) تجعل تلك الرؤوس تُعيّن كمتغيرات بيئة — متغير البيئة الذي يتحكم فيه المهاجم والذي يصل إلى تهيئة bash هو سطح الهجوم الفعلي، وليس مجرد استخدام الصدفة التفاعلية.
التصحيح الرسمي يفرض أن التحليل يتوقف عند القوس المغلق لتعريف الدالة. يغطي CVE-2014-7169 تجاوزًا لاحقًا لإصلاح غير مكتمل.