
TCP Fast Open (CVE-2026-63828 PoC) का उपयोग करके connect()-आधारित syscall नियमों को बायपास करना
connect()-आधारित syscall नियमों को TCP Fast Open (CVE-2026-63828 PoC) का उपयोग करके बायपास करनाTCP Fast Open (TFO) एक TCP कनेक्शन आरंभ करने की एक विधि है जिसमें क्लाइंट सर्वर को भेजे गए प्रारंभिक SYN पैकेट में डेटा भेज सकता है। यह गति के लिए अच्छा है क्योंकि प्रारंभिक TCP हैंडशेक के आगे-पीछे के चरणों को छोड़ा जा सकता है। यदि आप इसे प्रोडक्शन-स्तरीय सेटिंग में उपयोग करने की परवाह करते हैं तो कार्यान्वयन विवरण में और भी बहुत कुछ है, लेकिन यह कुछ syscall-आधारित नियम इंजनों से बचने के लिए उपयोगी है क्योंकि यह स्पष्ट रूप से connect syscall का उपयोग किए बिना TCP कनेक्शन खोलने का एक तरीका है।
syscall के दृष्टिकोण से, एक बुनियादी TCP कनेक्शन आम तौर पर इस प्रकार दिखता है:
socket() -> connect() -> write()/read()
हालाँकि, एक TFO कनेक्शन MSG_FASTOPEN फ्लैग के साथ sendto syscall का उपयोग करके आरंभ किया जाता है:
socket() -> sendto(...,MSG_FASTOPEN,...) -> write()/read()
मैंने किसी और चीज़ पर काम करते समय इसे एक साइड क्वेस्ट के रूप में खोजा, लेकिन TFO पर और अधिक शोध करने पर, CVE-2026-63828 AppArmor में नेटवर्किंग-प्रतिबंधित प्रक्रियाओं के लिए विशिष्ट एक (हालिया) ज्ञात बायपास के रूप में सामने आया। यह केवल AppArmor से अधिक पर लागू होता है, इसलिए मैंने सोचा कि मैं यहाँ एक बुनियादी PoC पोस्ट कर दूँ।
मान लीजिए आप पोस्ट-एक्सफिल्ट्रेशन रिकॉनिसेंस के भाग के रूप में एक कंटेनर के अंदर से Kubernetes API सर्वर को क्वेरी करना चाहते हैं, लेकिन eBPF-, AppArmor-, या कुछ अन्य syscall-आधारित मॉनिटरिंग/ब्लॉकिंग नियम लागू हैं।
यदि आप यूज़रलैंड में एक अधिक भारी नेटवर्किंग कार्यान्वयन/लाइब्रेरी का उपयोग नहीं करना चाहते हैं और io_uring जैसे अन्य syscall एवेज़न प्रिमिटिव उपलब्ध नहीं हैं, तो TFO उपयोगी हो सकता है। फिर से, यह केवल एक सरल PoC है और एक मजबूत TFO स्टैक नहीं है।
पोर्टेबल बिल्ड:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
संदर्भ: