
CVE-2026-52924 का तकनीकी विश्लेषण, जो Linux कर्नेल SCTP स्टेल कुकी हैंडलिंग में एक गंभीर use-after-free दोष है, जिसमें root cause, attack flow, fix, और detection methods शामिल हैं।
CVE ID: CVE-2026-52924
गंभीरता: CRITICAL (CVSS 9.8)
घटक: Linux Kernel - SCTP (स्ट्रीम कंट्रोल ट्रांसमिशन प्रोटोकॉल)
प्रकार: यूज़-आफ्टर-फ्री (CWE-416, CWE-825)
प्रकाशित: 2026-06-24
स्थिति: ठीक किया गया
यह भेद्यता SCTP स्टेट मशीन की स्टेल COOKIE-ECHO पैकेट की हैंडलिंग में होती है। समस्या में आउटबाउंड स्ट्रीम कतार की अनुचित सफाई शामिल है जब कोई एसोसिएशन रोलबैक होता है।
sctp_stream_update() पुरानी स्ट्रीम तालिका को मुक्त करता है, नई स्थापित करता हैstream->out_curr अभी भी मुक्त sctp_stream_out प्रविष्टि की ओर इशारा करता हैout_curr->ext तक पहुंचता हैsctp_sf_do_5_2_6_stale():
├─ स्टेल कुकी त्रुटि प्राप्त करें
├─ एसोसिएशन स्थिति रोलबैक करें
└─ sctp_stream_update() कॉल करें
├─ पुरानी स्ट्रीम तालिका मुक्त करें
├─ नई स्ट्रीम तालिका स्थापित करें
└─ BUG: stream->out_curr अमान्य नहीं किया गया ❌
बाद में डीक्यू करते समय:
sctp_sched_fcfs_dequeue():
└─ stream->out_curr->ext तक पहुंचें (मुक्त मेमोरी) 💥
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
एक सरल फिक्स केवल stream->out_curr को साफ करना हो सकता है:
// अपर्याप्त फिक्स ❌
stream->out_curr = NULL;
समस्या: आउटक्यू में अभी भी शामिल है:
ये स्टेल संदर्भ एक्सेस होने पर अभी भी यूज़-आफ्टर-फ्री का कारण बनेंगे।
समाधान: स्टेल कुकी हैंडलिंग के दौरान एसोसिएशन की आउटक्यू को पूरी तरह से शुद्ध करें।
// सही फिक्स ✓
sctp_outq_free(&asoc->outqueue);
यह सुनिश्चित करता है:
फ़ाइल: net/sctp/sm_statefuns.c
फ़ंक्शन: sctp_sf_do_5_2_6_stale()
जोड़: sctp_stream_update() से पहले sctp_outq_free(&asoc->outqueue) कॉल करें
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... मौजूदा कोड ...
// स्ट्रीम स्थिति पुनर्निर्माण से पहले आउटक्यू शुद्ध करें
sctp_outq_free(&asoc->outqueue);
// अब स्ट्रीम अपडेट करना सुरक्षित है
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... फ़ंक्शन का शेष भाग ...
}
# कर्नेल कॉन्फ़िग में KASAN सक्षम करें
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# रनटाइम आउटपुट दिखाता है:
BUG: KASAN: slab-use-after-free
# सत्यापन के बिना असुरक्षित stream->out_curr एक्सेस देखें
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
SCTP अक्षम करें: SCTP मॉड्यूल हटाएं या SCTP पोर्ट (132, 132 UDP) ब्लॉक करें
echo "install sctp /bin/true" >> /etc/modprobe.d/sctp-disable.conf
फ़ायरवॉल नियम: नेटवर्क सीमा पर SCTP ट्रैफ़िक ब्लॉक करें
iptables -A INPUT -p sctp -j DROP
कर्नेल संस्करण: पैच किए गए संस्करणों में अपग्रेड करें
कर्नेल पैच लागू करें जो sctp_sf_do_5_2_6_stale() में sctp_outq_free() कॉल करता है।
sctp_outq_free() out_curr को ठीक से अमान्य करता हैलेखक: Elliot
दस्तावेज़ संस्करण: 1.0
अंतिम अपडेट: 2026-09-07
वर्गीकरण: सार्वजनिक जानकारी