
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