تحذير أمني من SlickStack

تلخّص هذه الصفحة المخاوف الأمنية المتعلقة بـ SlickStack ولماذا يمكن أن يعرض تصميمه الافتراضي الخوادم لتنفيذ تعليمات برمجية عن بُعد وهجمات "رجل في الوسط". كما تقدم خطوات للتخفيف وبدائل أكثر أمانًا.

يُروِّج SlickStack لامتلاكه حوالي 600 نجمة على GitHub، لكن هذا الرقم يعود في الأصل إلى قيام جيسي نيكلز بمتابعة ما يقرب من 10,000 حساب في المراحل الأولى من المستودع. يظهر في ملفه الشخصي نفسه حوالي 500 متابع مقابل نحو 9,600 حساب يتابعها (معدل متابعة عكسية يقارب 5%)، وهو ما يشير بقوة إلى متابعات آلية متبادلة وليس إلى تفاعل عضوي حقيقي. هذه الصورة المبالغ فيها هي ما يستغلّه في مهاجمتي عندما أكشف عن مشكلات الأمان الموثَّقة أدناه. راجع نسبة المتابعين إلى الحسابات التي تتابعها هنا.

ملخص

  • تنزيلات دورية عن بُعد مجدولة بصلاحيات الجذر عبر cron
  • يتم تجاوز التحقق من SSL باستخدام --no-check-certificate
  • لا توجد مجموعات تحقق/تواقيع على السكربتات التي تم تنزيلها
  • ملكية المستخدم الجذر (root) والأذونات المطبقة على البرامج النصية المسترجعة

أدلة: cron والأذونات

تنزيلات cron (كل 3 ساعات و47 دقيقة)

47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/08-cron-half-daily https://slick.fyi/crons/08-cron-half-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/09-cron-daily https://slick.fyi/crons/09-cron-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/10-cron-half-weekly https://slick.fyi/crons/10-cron-half-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/11-cron-weekly https://slick.fyi/crons/11-cron-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/12-cron-half-monthly https://slick.fyi/crons/12-cron-half-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/13-cron-monthly https://slick.fyi/crons/13-cron-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/14-cron-sometimes https://slick.fyi/crons/14-cron-sometimes.txt' > /dev/null 2>&1

ملكية المستخدم الجذر (root) وأذونات مقيدة (مطَبَّقة بشكل متكرر)

47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/custom/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chmod 0700 /var/www/crons/*cron*' > /dev/null 2>&1

يتيح هذا النمط تنفيذ تعليمات برمجية تعسفية من نطاق بعيد ويزيد من خطر هجمات MITM عبر تخطي التحقق من الشهادات.

انظر أيضًا الالتزام الذي تم فيه تحويل عناوين URL الخاصة بـ cron من CDN الخاصة بـ GitHub إلى slick.fyi: فرق الالتزام (commit diff).

إرشادات التخفيف

  1. تعطيل مهام cron الخاصة بـ SlickStack وإزالة البرامج النصية التي تم جلبها من مجلدات cron.
  2. تدقيق للمرجعيات المتبقية إلى slick.fyi وسحب السكربتات عن بُعد؛ استبدالها بقطع مؤرخة بالإصدار ومُحصّنة بقيم تحقق أو إزالتها تمامًا.
  3. قم بتدوير بيانات الاعتماد والمفاتيح إذا كان SlickStack قد عُدّ يعمل بامتيازات root على أنظمتك.
  4. إعادة بناء الخوادم المتأثرة عندما يكون ذلك ممكنًا لضمان حالة نظام نظيفة.

بدائل أكثر أمانًا

النظر في استخدام WordOps أو أدوات أخرى تتجنب تنفيذ بصلاحيات الجذر عن بُعد وتوفر إصدارات مرقمة وقابلة للتدقيق مع مجاميع التحقق/التواقيع.

المراجع