
كمرة KERUI K259 بدقة 5MP والخاصة بالاتصال اللاسلكي (Wi-Fi) (كاميرا الأمان الذكية من Tuya) تحتوي على ثغرة تنفيذ كود.
كاميرا الأمان الذكية KERUI K259 5MP Wi-Fi / Tuya بإصدار البرنامج الثابت v33.53.87 تحتوي على ثغرة تنفيذ كود في منطق الإقلاع/التحديث الخاص بها: أثناء بدء التشغيل، يقوم /usr/sbin/anyka_service.sh بفحص بطاقات TF/SD المركّبة، وإذا كان الملف /mnt/update.nor.sh موجودًا، فإنه ينسخه إلى /tmp/net.sh وينفذه بصلاحيات الجذر، مما يسمح للمهاجم الذي يملك وصولًا ماديًا بتنفيذ أوامر عشوائية.
الملفات المعرّضة للثغرة : /usr/sbin/anyka_service.sh, /usr/bin/update_entry
ملف المشغِّل : update.nor.sh (يُوضع في جذر بطاقة tf/sd المركّبة)
/usr/sbin/anyka_service.sh
...
start_update()
{
/usr/bin/update_entry &
}
...
umount /mnt
mount_tf_card
sh /usr/sbin/tf_update.sh
start_update
i=5
while [ $i -gt 0 ]
do
sleep 1
pid=`pgrep /usr/bin/update_entry`
if [ -z "$pid" ]; then
echo "The /usr/bin/update_entry has exited, start_update!!!"
break
fi
i=`expr $i - 1`
done
if [ $mount_status -eq 1 ]; then
if [ -f /tmp/enter_update ]; then
echo "/tmp/enter_update file is exist, should be update!"
update_flag=1
else
echo "/tmp/enter_update file is not exist!"
update_flag=0
fi
else
update_flag=0
fi
if [ $update_flag -eq 1 ]; then
/tmp/net.sh
fi
...
/usr/bin/update_entry (شبه كود / مفكَّك)
int sub_108f8()
{
FILE *v0; // r6
char v2[152]; // [sp+0h] [bp-98h] BYREF
memset(v2, 0, 0x80u);
v0 = popen("find /mnt/ -maxdepth 1 -name \"update.nor.sh\"", "r");
if (v0)
{
while (fgets(v2, 128, v0))
{
if (strstr(v2, "update.nor.sh"))
{
puts("==================find update.nor.sh!! start update.nor.sh==================");
system("cp -f /mnt/update.nor.sh /tmp/net.sh");
usleep(0x2710u);
system("chmod 777 /tmp/net.sh");
system("touch /tmp/enter_update");
system("sync");
usleep(0x2710u);
break;
}
}
pclose(v0);
return 0;
}
else
{
puts("error:popen failed");
return -1;
}
}
أنشئ /update.nor.sh في جذر بطاقة sd/tf بالمحتوى التالي
أدخل بطاقة sd وأعد تشغيل الجهاز.
عند نجاح الاستغلال، سيقوم الجهاز بنسخ /mnt/update.nor.sh إلى /tmp/net.sh، ويجعله قابلاً للتنفيذ ويشغّله. سيتم تشغيل خدمة telnet (أو أي أمر عشوائي) مما يتيح الوصول إلى شل الجذر.