
CVE-2024-51442 شرح وملف إعدادات مثال
CVE-2024-51442 هي ثغرة حقن أوامر في minidlna/Readyshare الإصدار <= 1.3.3. يمكن استغلال هذه الثغرة عن طريق تشغيل minidlnad مع معامل db_dir مصمم بشكل خاص مستخدم في minidlna.conf.
توجد الثغرة في كل من وظيفة rescan الخاصة بالدالة check_db
minidlna.c
rescan:
CLEARFLAG(RESCAN_MASK);
if (ret < 0)
DPRINTF(E_WARN, L_GENERAL, "Creating new database at %s/files.db\n", db_path);
else if (ret == 1)
DPRINTF(E_WARN, L_GENERAL, "New media_dir detected; rebuilding...\n");
else if (ret == 2)
DPRINTF(E_WARN, L_GENERAL, "Removed media_dir detected; rebuilding...\n");
else
DPRINTF(E_WARN, L_GENERAL, "Database version mismatch (%d => %d); need to recreate...\n",
ret, DB_VERSION);
sqlite3_close(db);
snprintf(cmd, sizeof(cmd), "rm -rf %s/files.db %s/art_cache", db_path, db_path);
if (system(cmd) != 0)
DPRINTF(E_FATAL, L_GENERAL, "Failed to clean old file cache! Exiting...\n");
وكذلك عند تمرير -R كمعامل اختياري لسطر الأوامر:
minidlna.c
case 'R':
snprintf(buf, sizeof(buf), "rm -rf %s/files.db %s/art_cache", db_path, db_path);
if (system(buf) != 0)
DPRINTF(E_FATAL, L_GENERAL, "Failed to clean old file cache %s. EXITING\n", db_path);
break;
سيقوم الكود أعلاه بتشغيل "rm -rf %s/files.db %s/art_cache باستخدام db_path كمعامل لسلسلة التنسيق. يتم التقاط db_path من ملف الإعدادات عند معالجته بواسطة الكود في options.c.
يمكن استغلال هذه الثغرة باستخدام ملف minidlna.conf المثال الموجود في هذا المستودع كملف إعدادات. سيفتح هذا نافذة نظام الملفات باستخدام xdg-open كإثبات للمفهوم.
minidlnad -d -f minidlna.conf