
Análisis de CVE-2024-51442 y archivo de configuración de ejemplo
CVE-2024-51442 es una vulnerabilidad de inyección de comandos en minidlna/Readyshare versión <= 1.3.3. Esta vulnerabilidad puede ser explotada ejecutando minidlnad con un parámetro db_dir especialmente diseñado utilizado en minidlna.conf.
La vulnerabilidad existe tanto en la funcionalidad rescan de la función 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");
y cuando -R se pasa como un parámetro opcional de línea de comandos:
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;
El código anterior ejecutará "rm -rf %s/files.db %s/art_cache con db_path como parámetro de la cadena de formato. db_path se obtiene del archivo de configuración cuando lo procesa el código en options.c.
Esta vulnerabilidad puede explotarse utilizando el ejemplo minidlna.conf de este repositorio como archivo de configuración. Esto abrirá una ventana del sistema de archivos usando xdg-open como prueba de concepto.
minidlnad -d -f minidlna.conf