
VULCONHUB يوفر إمكانية الوصول إلى الملفات لبناء صورة حاوية ضعيفة بنفسك بهدف تعلم وممارسة الأمن.
توجد العديد من المستودعات التي توفر بيئات ضعيفة مثل تطبيقات الويب أو الحاويات أو الآلات الافتراضية لمن يرغب في تعلم الأمان، حيث يساعد ذلك ليس فقط الطلاب أو الوافدين الجدد إلى المجال على تعلم تقنيات الأمان ذات الصلة، بل أيضًا محترفي الأمان على البقاء على اتصال عملي.
من بين الأساليب، الطريقة الأسهل في الوقت الحالي هي استخدام الحاويات (مثل docker أو podman).
تشغيل الحاويات بأمر واحد مثل docker run أو docker compose up يبدو رائعًا!
المشكلة هي أنه لا يمكنك معرفة ما تفعله الحاوية بالضبط (خاصةً مع الأخذ في الاعتبار أنها حاوية ضعيفة)، عند تشغيل حاوية إذا قمت ببساطة بتشغيلها دون معرفة كيف تم بناؤها.
يوفر ملف Dockerfile هذه المعلومات.
على الرغم من أن ملف Dockerfile متاح أحيانًا في خدمة السجل مثل hub.docker.com أو quay.io أو يمكن استخلاص بعض المعلومات حول الأوامر المستخدمة من docker history أو طبقات الصورة (IMAGE LAYERS)، إلا أنه من الصعب العثور على معلومات مهمة مثل الصورة الأساسية التي استُخدمت لبناء الصورة (مثل المحددة بـ FROM في Dockerfile).
الموقف الأكثر خطورة هو عندما يُطلب من المستخدم تشغيل docker مع الخيار -v أو docker-compose الذي يحتوي ملف تكوينه على إعدادات وحدة التخزين (volumes). إذا لم ينتبه المستخدم، فقد يشمل سيناريو محتمل سرقة ملفاته على المضيف من قبل مستخدمين ضارين. إذا طُلب من المستخدم تشغيل حاوية مع --privileged أو --user=root، فقد يكون الأمر أكثر خطورة، حيث يوجد خطر أن يتمكن المهاجم من تثبيت موطئ قدم في الحاوية والهروب إلى المضيف.
راجع Docker Security - OWASP Cheat Sheet Series لمزيد من المعلومات حول أمان Docker.
لذلك، يجب على المستخدم الذي يرغب في التعلم أو إعداد بيئات اختبار أن يكون حذرًا عند تشغيل صورة حاوية ضعيفة. توفير إمكانية الوصول إلى Dockerfile والوثائق للمستخدم سيساعد في تقليل هذه المخاطر، إن لم نقل إزالتها بالكامل، حتى يتمكن المستخدم من الاستمتاع بتعلم وممارسة الأمان بأمان.
مشروع محور الحاويات الضعيفة OWASP (VULCONHUB) هو مشروع يوفر:
الملفات المقدمة في المستودع تتيح للمستخدمين بناء صور حاويات ضعيفة، بحيث يمكنهم بحرية وبأمان التعلم واللعب والممارسة وإجراء إثباتات مفاهيم سريعة لثغرات CVE أو استخدامها للتحضير لتحديات CTF.
الهدف النهائي للمشروع هو أن يصبح المرجع الأساسي لمساعدة أي شخص مهتم بالأمان على مشاركة وصيانة ملفات بناء الحاويات المفيدة هذه لتعلم وممارسة الأمان.
$ git submodule init
$ git submodule update
من الممكن أيضًا تحديد مسار ضروري لك فقط، لتقليل الوقت والحفاظ على استخدام القرص عند الحد الأدنى.
$ git submodule init <path> [--recursive]
لمزيد من المعلومات حول الوحدة الفرعية git، راجع https://git-scm.com/book/en/v2/Git-Tools-Submodules.
$ docker build . -t local/<image-name>`
$ docker run -p <hostport>:<containerport> local/<image-name>
أي مساهمة مرحب بها جدًا!!
يرجى إنشاء طلب سحب (Pull Request) لإضافة ملفات بناء حاويات جديدة. سواء بإضافة ملفاتك الخاصة أو بإضافة وحدات فرعية سيكون مرحبًا به.
لكي يتم دمج طلب السحب، يجب أن يحتوي كل دليل على ما يلي: