flawopen.com/Teardowns/cve-2026-49878-android-wpa-supplicant-oob-write
CVE-2026-49878: Android Wi-Fi में सीमा से बाहर लेखन
Android की अक्टूबर 2026 सुरक्षा सूचना इस Wi-Fi रिमोट कोड निष्पादन दोष को High बताती है। AOSP ने दो int arrays का byte-count आवंटन ठीक किया। रिकॉर्ड के अनुसार System privileges आवश्यक हैं।
मान लें हर वस्तु के लिए पूरा डिब्बा रखने वाली शेल्फ है, लेकिन कर्मचारी हर डिब्बे के लिए केवल एक सेंटीमीटर जगह तय करता है। डिब्बे बाहर निकल जाते हैं। CVE-2026-49878 में wpa_supplicant ने पूर्णांकों की संख्या को byte संख्या समझकर जगह ली और फिर पूरे पूर्णांक लिखे। Google का पैच हर तत्व के वास्तविक आकार की जगह लेता है।
इस पेज के मुख्य शब्द
wpa_supplicant- Android का Wi-Fi घटक, जो wireless authentication और संबंधित 802.11 संचार संभालता है।
SCS response- Stream Classification Service का response action frame। handler इसे तभी संभालता है जब अनुरोध लंबित हो और dialog token मेल खाए।
सीमा से बाहर लेखन (CWE-787)- आरक्षित memory क्षेत्र के आगे लिखना। यहां bytes आवंटित हुए, लेकिन buffer को
intतत्वों की तरह index किया गया। os_zalloc / os_calloc- wpa_supplicant के allocation helpers। patch संख्या और तत्व आकार देकर पूरा array आवंटित करता है।
Android सुरक्षा patch level (SPL)- स्थापित अपडेट स्तर की तारीख। Google के अनुसार 2026-10-01 या बाद का स्तर बुलेटिन की समस्याएं ठीक करता है; वितरण निर्माता पर निर्भर है।
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-787
मूल कारण विश्लेषण (Root Cause)
wpas_handle_robust_av_scs_recv_action में scs_resp[0] और [1], int * arrays हैं। सुधार से पहले os_zalloc(num_active_scs) केवल उतने bytes आवंटित करता था। कोड index पर integer IDs और status लिखता है, इसलिए num_active_scs * sizeof(int) bytes चाहिए। लंबित अनुरोध, मिलता dialog token, संख्या और frame length की जांच इनपुट सीमित करती है, पर allocation की इकाई ठीक नहीं करती। AOSP patch दोनों calls को os_calloc(num_active_scs, sizeof(int)) से बदलता है। केवल इस सीमा-बाह्य लेखन से attacker-controlled code execution निष्कर्षित न करें।
हमले का चरण-दर-चरण प्रवाह
response frame handler तक भेजा जाता है
Wi-Fi path Robust AV SCS Response को प्रभावित handler तक पहुंचाता है। path network-facing है, पर स्रोत नहीं दिखाते कि कोई भी unauthenticated sender सभी शर्तें पूरी कर सकता है।
अनुरोध स्थिति और सीमाएं जांची जाती हैं
handler लंबित अनुरोध और मेल खाते token की मांग कर संख्या जांचता है। NVD में CISA-ADP vector AV:N/AC:L/PR:H/UI:N है; high-privilege आवश्यकता बनाए रखें।
पूर्णांक byte allocation से आगे लिखे जाते हैं
पुराना कोड प्रति प्रविष्टि एक byte लेता है, लेकिन int values लिखता है। संख्या सीमित करने से आवंटित bytes नहीं बढ़ते।
अक्टूबर patch allocation ठीक करता है
Google परिवर्तन दोनों arrays के लिए num_active_scs तत्व, प्रत्येक sizeof(int) आकार, आवंटित करता है। payload न गढ़ें और diff से arbitrary code execution का दावा न करें।
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह diff AOSP द्वारा commit d131540379d631d7dcb09b0169e4462bc65abcca में प्रकाशित code change है, पुनर्निर्मित pseudocode नहीं। os_zalloc(n) n को byte count मानता है; os_calloc(count, size) मांगी गई संख्या के elements आवंटित कर zero करता है। सुधार दोनों arrays ठीक करता है और allocation failure पर मौजूदा cleanup बनाए रखता है।
/* AOSP सुधार से पहले: num_active_scs element count है,
* लेकिन os_zalloc को यह byte count के रूप में मिलता है। */
scs_resp[0] = (int *) os_zalloc(num_active_scs);
if (!scs_resp[0])
return;
scs_resp[1] = (int *) os_zalloc(num_active_scs);
if (!scs_resp[1]) {
os_free(scs_resp[0]);
return;
}
/* AOSP सुधार: हर entry के लिए पूरा int allocate करें। */
scs_resp[0] = os_calloc(num_active_scs, sizeof(int));
if (!scs_resp[0])
return;
scs_resp[1] = os_calloc(num_active_scs, sizeof(int));
if (!scs_resp[1]) {
os_free(scs_resp[0]);
return;
}
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓Android 14–17 पर SPL 2026-10-01 या बाद का सत्यापित करें और निर्माता से उपलब्धता जांचें।
- ✓यदि घटक Google Play system update से आता है, तो Wi-Fi Mainline update की स्थिति भी जांचें।
- ✓C में typed arrays के लिए
element_count * sizeof(*pointer)उपयोग करें या reviewedos_callocलें। - ✓दोनों
scs_resparrays जांचें; दोनों की capacity ठीक होनी चाहिए। - ✓Frame और request-state जांचें रखें, पर उन्हें सही byte-size गणना का विकल्प न मानें।
- ✓केवल AOSP patch देखकर device को fixed न मानें; installed OEM या Google Play system update सत्यापित करें।
स्रोत
- Android सुरक्षा बुलेटिन — अक्टूबर 2026 (8 अक्टूबर को अपडेट)
- Google AOSP सुधार — तत्व आकार के अनुसार SCS arrays आवंटित करना
- AOSP patch diff — CVE-2026-49878 allocation सुधार
- NVD — CVE-2026-49878; CISA-ADP का CVSS vector और CWE-787
- OSV — A-511544607 के Android branch fixes
- AOSP का असुरक्षित source revision — robust_av.c