
CVE-2024-51442 write-up e file di configurazione di esempio
CVE-2024-51442 è una vulnerabilità di command injection in minidlna/Readyshare versione <= 1.3.3. Questa vulnerabilità può essere sfruttata eseguendo minidlnad con un parametro db_dir appositamente modificato usato in minidlna.conf.
La vulnerabilità esiste sia nella funzionalità rescan della funzione 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");
e quando -R viene passato come parametro opzionale da riga di comando:
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;
Il codice sopra esegue "rm -rf %s/files.db %s/art_cache con db_path come parametro della stringa di formato. db_path viene recuperato dal file di configurazione quando viene elaborato dal codice in options.c.
Questa vulnerabilità può essere sfruttata usando il minidlna.conf di esempio presente in questo repository come file di configurazione. Questo aprirà una finestra del file system usando xdg-open come proof of concept.
minidlnad -d -f minidlna.conf