- 2023 के बाद से Azure Entra ID लॉगिन लॉग बायपास भेद्यता के कुल 4 मामले मिले हैं, और हाल के दो मामलों को वैध token जारी करने में सक्षम गंभीर समस्या के रूप में पुष्टि किया गया है
- GraphGoblin OAuth2 ROPC flow में
scopeparameter को बार-बार देकर लॉग निर्माण को बायपास करता है, जबकि Graph**** 50,000 से अधिक वर्णों की User-Agent string से लॉग को पूरी तरह गायब कर देता है - दोनों भेद्यताओं का कारण SQL column length overflow के कारण logging failure बताया गया, और Microsoft ने रिपोर्ट के बाद इन्हें ठीक कर दिया
- Microsoft ने इस समस्या को 'मध्यम(Medium)' स्तर में वर्गीकृत किया और बिना किसी इनाम या आधिकारिक मान्यता के चुपचाप सुधार दिया, जबकि CVSS के अनुसार High(7.5~8.7) स्तर का आकलन किया गया
- बार-बार होने वाली input validation failure से ऐसी खामियां जारी हैं, इसलिए log cross-validation और KQL-आधारित detection rules को मजबूत करना सुरक्षा टीमों के लिए अनिवार्य कार्य बताया गया है
Azure Entra ID लॉगिन लॉग बायपास भेद्यता सार्वजनिक
- 2023 के बाद से Azure Entra ID लॉगिन लॉग बायपास भेद्यता के कुल 4 मामले मिले
- शुरुआती दो मामलों में केवल password validity की जांच संभव थी, लेकिन हाल के दो मामले वैध token जारी करने तक सक्षम गंभीर स्तर की समस्याएं थे
- सभी भेद्यताओं को Microsoft ने अब ठीक कर दिया है
-
GraphNinja और GraphGhost सारांश
- GraphNinja: किसी दूसरे tenant के endpoint को निर्दिष्ट कर login attempt करने पर password सही है या नहीं यह पता चल जाता है, लेकिन कोई लॉग नहीं बनता
- हमलावर बाहरी tenant को authentication request भेजकर response से password सही होने की पुष्टि कर सकता है
- बाद में Microsoft ने इस समस्या के समाधान के लिए अतिरिक्त logging जोड़ी
- GraphGhost: गलत Client ID इस्तेमाल करने पर authentication flow password validation के बाद fail होता है, और लॉग में केवल failure दिखता है
- password सही था, यह जानकारी admin logs में दर्ज नहीं होती
- Microsoft ने login logs में password validation है या नहीं, यह संकेत जोड़कर समस्या ठीक की
- GraphNinja: किसी दूसरे tenant के endpoint को निर्दिष्ट कर login attempt करने पर password सही है या नहीं यह पता चल जाता है, लेकिन कोई लॉग नहीं बनता
-
GraphGoblin भेद्यता
- GraphGoblin OAuth2 ROPC flow में
scopeparameter को बार-बार देकर लॉग निर्माण को बायपास करता है"openid openid openid ..."के रूप में हजारों बार दोहराने पर वैध token जारी हो जाता है, लेकिन Entra ID login logs में कोई रिकॉर्ड नहीं बचता
- कारण SQL column length overflow के कारण INSERT failure माना गया
- अनुमान है कि दोहराई गई scope string ने database field length पार कर दी, जिससे लॉग सहेजना विफल हुआ
- Microsoft को समस्या reproduce करने में कठिनाई हुई, लेकिन video evidence देने के बाद सुधार पूरा किया गया
- GraphGoblin OAuth2 ROPC flow में
-
Graph****** (User-Agent आधारित बायपास)
- User-Agent field में 50,000 से अधिक वर्णों की लंबी string डालने पर लॉग नहीं बनता
- authentication request सामान्य रूप से process होती है और token जारी हो जाता है, लेकिन लॉग पूरी तरह गायब रहता है
- SQL column length overflow के कारण logging failure की आशंका
- 2025-09-28 को खोजा गया, और 10-08 को Microsoft ने रिपोर्ट से पहले ही इसे ठीक कर दिया था
- User-Agent field में 50,000 से अधिक वर्णों की लंबी string डालने पर लॉग नहीं बनता
-
टाइमलाइन सारांश
- 2025-09-20: GraphGoblin पहली बार मिला
- 2025-09-26: Microsoft को GraphGoblin की रिपोर्ट
- 2025-09-28: Graph****** मिला
- 2025-10-08: Graph****** सुधार पूरा
- 2025-11-21: Microsoft ने GraphGoblin को सफलतापूर्वक reproduce किया और fix शुरू किया
Microsoft की प्रतिक्रिया और मूल्यांकन
- Microsoft ने इस भेद्यता को 'मध्यम(Medium)' स्तर में वर्गीकृत किया और कोई इनाम या सार्वजनिक मान्यता नहीं दी
- पहले के दो मामलों (2023~2024) में इनाम और मान्यता दी गई थी
- इस बार वैध token जारी होने जैसी गंभीर समस्या के बावजूद इसे महत्वपूर्ण नहीं माना गया
- CVSS v3.1 के अनुसार 7.5 (High) और v4.0 के अनुसार 8.7 (High) आंका गया
- Integrity (अखंडता) पर प्रभाव के कारण उच्च स्कोर मिला
- लॉग का गायब होना security component को सीधे नुकसान के रूप में देखा गया
- Microsoft ने समस्या reproduce करने के 2 सप्ताह के भीतर सुधार पूरा किया
- पहले GraphNinja fix में 7 महीने और GraphGhost में 5 महीने लगे थे
लॉग बायपास का पता लगाने के तरीके
- KQL query के जरिए Graph Activity logs और Sign-In logs के Session ID या UniqueTokenIdentifier की तुलना की जा सकती है
- जो session Graph Activity में मौजूद हो लेकिन Sign-In logs में न हो, उसे बायपास किए गए login के रूप में माना जा सकता है
- हालांकि Graph Activity logs संग्रह के लिए E5 license आवश्यक है
- उदाहरण KQL query:
MicrosoftGraphActivityLogs | where TimeGenerated > ago(8d) | join kind=leftanti (union isfuzzy=true SigninLogs, AADNonInteractiveUserSignInLogs, AADServicePrincipalSignInLogs, AADManagedIdentitySignInLogs, MicrosoftServicePrincipalSignInLogs | where TimeGenerated > ago(90d) | summarize arg_max(TimeGenerated, *) by UniqueTokenIdentifier ) on $left.SignInActivityId == $right.UniqueTokenIdentifier- आवश्यकता हो तो
SessionIdके आधार पर भी तुलना की जा सकती है - detection results के आधार पर Azure Log Search Alert Rule सेट किया जा सकता है
- आवश्यकता हो तो
चार लॉगिन लॉग बायपास का सारांश
| खोज का समय | तरीका | token जारी हुआ या नहीं | Microsoft की मान्यता |
|---|---|---|---|
| 2023-08 / 2024-05 | बाहरी tenant ID निर्दिष्ट कर password validation log न बनना | X | X |
| 2024-12 / 2025-04 | गलत Client ID से authentication failure प्रेरित करना | X | X |
| 2025-09-20 | scope को दोहराकर SQL column overflow | O | X |
| 2025-09-28 | लंबी User-Agent string से SQL column overflow | O | N/A |
Microsoft की सुरक्षा प्रक्रिया पर आलोचना
-
Entra ID login logging function के कई parameters में खामियां मिलीं
tenant ID,client ID,scope,user-agentजैसे मुख्य fields में बार-बार भेद्यताएं सामने आईं- यह किसी जटिल हमले के बजाय साधारण input validation failure से उत्पन्न समस्या थी
- Microsoft के security review और quality control की कमी की आलोचना हुई
- वर्षों तक उसी क्षेत्र में समान खामियां दोहराई गईं
- AI code generation के उपयोग या code management प्रक्रिया में छूट की संभावना भी उठाई गई
-
सार्वजनिक पारदर्शिता की कमी
- चारों मामलों को CVE नहीं दिया गया, और कोई आधिकारिक सूचना भी नहीं आई
- CNA के रूप में Microsoft अपनी भेद्यताओं के सार्वजनिक खुलासे पर एकाधिकार रखता है
निष्कर्ष
- Azure Entra ID के login logs दुनिया भर के संगठनों के लिए intrusion detection का मुख्य डेटा हैं
- लॉग गायब होने पर पूरी attack detection व्यवस्था निष्प्रभावी हो सकती है
- मिलीं चारों भेद्यताएं साधारण input fuzzing से भी खोजी जा सकने वाली थीं
- Microsoft को ऐसी दोहराई जाने वाली खामियों पर सार्वजनिक स्पष्टीकरण और अधिक पारदर्शी security review प्रक्रिया की जरूरत है
- admins और security teams को log cross-validation और KQL-आधारित detection rules के जरिए अपनी defense व्यवस्था मजबूत करनी चाहिए
1 टिप्पणियां
Hacker News की टिप्पणियाँ
इससे CISA की Microsoft breach incident report याद आती है
यह वही मामला था जिसमें राज्य-समर्थित हैकर्स ने Microsoft को भेदकर U.S. State Department समेत कई संस्थानों में घुसपैठ की थी
हैरानी की बात यह थी कि घुसपैठ का पता Microsoft ने नहीं, बल्कि State Department के एक system administrator ने mail logs में गड़बड़ी देखकर लगाया था
CISA रिपोर्ट लिंक
Windows दौर की समस्याएँ ज्यों-की-त्यों cloud में उठा लाई गईं, और tenants के बीच isolation fail होने की घटनाएँ दो बार हो चुकी हैं
संबंधित लेख: Azure’s Security Vulnerabilities Are Out of Control / Microsoft comes under blistering criticism for “grossly irresponsible” security
ProPublica और ArsTechnica के Azure पर सीधे हमला बोलने वाले लेख में कहा गया कि federal cyber experts ने Microsoft cloud को “बेहद खराब” बताया था
लेख लिंक
मौजूदा cybersecurity की हालत, उन systems के हिसाब से जिन पर पूरी सभ्यता निर्भर है, बेहद लचर है
जैसे छेद वाले जहाज़ को duct tape से बंद करके समुद्र में उतार दिया गया हो
SQL logs वाली चर्चा में लगता है कि attacker ने इतना लंबा input भेजा कि column length exceed होने से INSERT fail हो गया
नतीजतन login attempt का रिकॉर्ड बना ही नहीं
यह authentication flow के ज़रूरत से ज़्यादा जटिल architecture की structural problem लगती है
Azure के audit logs में वास्तविक behavior से अलग रिकॉर्ड होने का अनुभव मुझे भी हुआ है
मैंने client secret delete किया था, UI कह रहा था कि B delete होगा, लेकिन API ने A को छोड़कर बाकी हटा दिया
आखिर में log में वही दर्ज हुआ जैसे यह मैंने किया हो, जबकि असल में यह system bug था
उस अनुभव के बाद Azure logs ही नहीं, audit logs पर समग्र भरोसा भी हिल गया
मुझे लगता है कि अदालत में सबूत के तौर पर उनका इस्तेमाल करना खतरनाक होगा
हाल की EntraID vulnerabilities के मुकाबले log bypass कम महत्वपूर्ण लग सकता है
Microsoft ने Notepad में भी कभी critical vulnerability डाल दी थी, इसलिए यह सब चौंकाने वाला नहीं है
जब मैंने पहले Azure VPN का मूल्यांकन किया था, तब connection success/failure logs बिल्कुल दर्ज नहीं होते थे
मुद्दा उठाने पर Microsoft ने कहा कि उसे new feature request के रूप में दर्ज करो
उसी समय Azure पर मेरा भरोसा पूरी तरह खत्म हो गया. समय के साथ सुधार होने के बजाय यह और बिगड़ता ही लग रहा है
IT administrators Microsoft का इस्तेमाल करते रहते हैं क्योंकि कोई वास्तविक विकल्प नहीं है
budget कम है और staff भी कम है, इसलिए बस इसे इतना चलाते रहो कि तनख्वाह मिलती रहे और शाम को घर जा सको वाले स्तर पर बनाए रखते हैं
यह बात प्रभावशाली लगी कि जब Microsoft Azure vulnerability को reproduce नहीं कर पाया और video evidence माँगा, तो जवाब में उन्हें सिर्फ एक पंक्ति की curl command दिखा दी गई
वह सचमुच बहुत संतोषजनक पल रहा होगा