
Разбор 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");
так и при передаче в качестве необязательного параметра командной строки:
-Rminidlna.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