
CVE-2024-51442 विश्लेषण और उदाहरण कॉन्फ़िग फ़ाइल
CVE-2024-51442, minidlna/Readyshare संस्करण <= 1.3.3 में एक कमांड इंजेक्शन भेद्यता है। इस भेद्यता का शोषण minidlna.conf में प्रयुक्त एक विशेष रूप से तैयार किए गए db_dir पैरामीटर के साथ minidlnad चलाकर किया जा सकता है।
भेद्यता check_db फ़ंक्शन की rescan कार्यक्षमता में मौजूद है
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;
उपरोक्त कोड db_path को फ़ॉर्मेट स्ट्रिंग में एक पैरामीटर के रूप में लेते हुए "rm -rf %s/files.db %s/art_cache चलाएगा। db_path को कॉन्फ़िगरेशन फ़ाइल से लिया जाता है जब options.c में कोड द्वारा संसाधित किया जाता है।
इस भेद्यता का शोषण इस रिपॉजिटरी में उदाहरण minidlna.conf को कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग करके किया जा सकता है। यह एक प्रूफ ऑफ कॉन्सेप्ट के रूप में xdg-open का उपयोग करके एक फ़ाइल सिस्टम विंडो खोलेगा।
minidlnad -d -f minidlna.conf