
CVE-2022-24494
यह भेद्यता एक मनमाना मेमोरी रीड है। इसका मूल कारण उपयोगकर्ता-भूमि से प्राप्त एक मेमोरी पते में सत्यापन की कमी है, जिसका उपयोग memcpy ऑपरेशन में इस मेमोरी पते से डेटा को पूल मेमोरी में कॉपी करने के लिए किया जाता है। जाँच की कमी पते Afd!AfdTliIoControl+0x40B पर है

जैसा कि आप ऊपर स्क्रीनशॉट में देख सकते हैं, उपयोगकर्ता-भूमि का मेमोरी पता InputBuffer+0x20 से पहली बार MmUserProbeAddress के साथ ठीक से जाँच कर कॉपी किया जाता है कि यह पता उपयोगकर्ता-भूमि के मेमोरी स्पेस के अंदर है या नहीं। हालाँकि, दूसरी बार यही मेमोरी पता InputBuffer+0x20 से RAX रजिस्टर में कॉपी किया जाता है, लेकिन इस बार MmUserProbeAddress का उपयोग करके पते की ठीक से जाँच नहीं की जाती। इस सत्यापन की कमी के कारण, एक मनमाना कर्नेल पता प्रदान करना संभव है। इस पते को बाद में memcpy ऑपरेशन का उपयोग करके पूल मेमोरी आवंटन (टैग: AfdL) में कॉपी किया जाता है, जैसा कि आप नीचे AfdTliIoControl+0x5AB पर देख सकते हैं:

नीचे दिया गया PoC उपयोगकर्ता-भूमि से प्रदान किया गया कर्नेल पता (0xffffffdeadbeef01) दिखाता है

ड्राइवर इस अमान्य मेमोरी पते से पढ़ने का प्रयास करता है, जिसके परिणामस्वरूप BSOD होता है:

memcpy ऑपरेशन में dst पॉइंटर पर कॉपी किया गया मान बाद में tcpip.sys ड्राइवर को भेजा जाता है। मैंने यह पता नहीं लगाया है कि कौन सी आंतरिक वस्तुएँ प्रभावित होती हैं और क्या उपयोगकर्ता-भूमि से APIs को कॉल करके मेमोरी लीक करना संभव है जो इन संभावित आंतरिक वस्तुओं से डेटा प्राप्त कर सकते हैं।
Microsoft ने कुछ महीने बाद एक शोध जारी किया जो इस प्रकार की भेद्यताओं (मनमाना मेमोरी रीड) के संभावित EoP प्रभाव के बारे में बात करता है:
https://msrc-blog.microsoft.com/2022/03/22/exploring-a-new-class-of-kernel-exploit-primitive/