
كتابة فنية وإثبات مفهوم لثغرة CVE-2020-15778، وهي ثغرة حقن أوامر تتطلب مصادقة في OpenSSH scp (<=8.3p1) تسمح بتنفيذ التعليمات البرمجية عن بُعد عبر حمولات backtick في مسارات الملفات.
البريد الإلكتروني: [email protected]
لينكد إن: www.linkedin.com/in/chinmay-pandya
المنتج: Openssh
المكوّن المتأثر: SCP
scp هو برنامج لنسخ الملفات بين أجهزة الكمبيوتر. يستخدم بروتوكول SSH. وهو مضمن افتراضيًا في معظم توزيعات لينكس ويونكس
عند نسخ الملفات إلى خادم بعيد، يتم إلحاق مسار الملف في نهاية أمر scp المحلي. على سبيل المثال، إذا نفّذت الأمر التالي
scp SourceFile user@host:directory/TargetFile
فسيُنفّذ أمرًا محليًا
scp -t directory/TargetFile
عند إنشاء أمر scp المحلي، لا يعقّم اسم الملف. يمكن للمهاجم تمرير حمولة مفعّلة بالباكتيك (backtick) كاسم ملف، وعند تنفيذ أمر scp المحلي، ستقوم الصدفة المحلية أيضًا بتنفيذ الحمولة المفعّلة بالباكتيك.
نفّذ الأمر التالي باستخدام scp
scp /sourcefile remoteserver:'`touch /tmp/exploit.sh`/targetfile'
بعد تنفيذ هذا الأمر، اذهب إلى الخادم البعيد وسترى في دليل /tmp/ أن الملف exploit.sh موجود. وضع علامات الاقتباس المفردة في اسم الملف مهم لمنع تنفيذ الحمولة في الصدفة المحلية، أو استخدام حرف هروب مثل الاقتباسات المفردة في اسم الملف يمكن أن يمنع تنفيذ الحمولة في الصدفة المحلية
هذا استغلال مصادَق عليه ويتطلب صلاحيات SSH / SCP صالحة لتنفيذ الأوامر على الخادم البعيد
أمر scp هو بروتوكول تاريخي (يسمى rcp) يعتمد على ذلك النمط من تمرير الوسائط ويعاني من مشكلات التوسيع. لقد ثبت أنه من الصعب جدًا إضافة "أمان" إلى نموذج scp. كل محاولات "الكشف" و"منع" عمليات نقل الوسائط الشاذة تنطوي على احتمال كبير لكسر سير العمل الحالي. نعم، نحن ندرك أن الوضع سيئ. لكننا لا نريد كسر الأنماط السهلة التي يستخدم الناس scp من أجلها، حتى يتوفر بديل شائع. يجب على الناس استخدام rsync أو أي أداة أخرى بدلاً من ذلك إذا كانوا قلقين.