flawopen.com/Teardowns/cve-2026-14540-google-mcp-toolbox-ssrf
CVE-2026-14540: Google MCP Toolbox में SSRF
CVE-2026-14540 में MCP Toolbox के HTTP अनुरोध अंतिम नेटवर्क पते की जाँच किए बिना redirects का अनुसरण कर सकते थे। संस्करण 1.5.0 या नया स्थापित करें।[1], [3]
डाक छँटाई करने वाला पार्सल पर पहला पता जाँचता है, फिर नए पते की पुष्टि किए बिना किसी भी forwarding sticker का पालन करता है। HTTP redirect उसी sticker जैसा है: अंतिम IP जाँचे बिना सामान्य वेबसाइट के लिए भेजा गया अनुरोध निजी नेटवर्क तक पहुँच सकता है। सुधार connection बनाते समय वास्तविक destination और redirect destinations दोनों जाँचता है।[2], [4], [7]
इस पेज के मुख्य शब्द
Server-side request forgery (SSRF)- सेवा को हमलावर के प्रभाव वाले destination पर HTTP अनुरोध भेजने के लिए प्रेरित किया जाता है। अनुरोध server से निकलता है, इसलिए वह ऐसे नेटवर्क तक पहुँच सकता है जहाँ caller सीधे नहीं पहुँच सकता।[6]
HTTP redirect- एक response HTTP client को दूसरे URL पर अगला अनुरोध भेजने का निर्देश दे सकता है। केवल शुरुआती URL की जाँच आगे के अनुरोध का destination सीमित नहीं करती।[4], [7]
DNS rebinding और TOCTOU- जाँच के समय hostname एक IP पर और socket खुलते समय किसी दूसरे IP पर resolve हो सकता है। Connection के समय resolved IP की जाँच जाँच और उपयोग के बीच की इस खाई को बंद करती है।[2], [7]
Generic HTTP source और tool- MCP Toolbox के वे components जो configured endpoints और tool parameters से HTTP requests बनाते हैं। Advisory इसी रास्ते को प्रभावित बताती है।[1], [2], [4]
CWE-918- Server-Side Request Forgery (SSRF): application URL या destination fetch करते समय यह पर्याप्त रूप से सीमित नहीं करती कि अनुरोध कहाँ जा सकता है।[6]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-918
- D3-OTF आउटबाउंड ट्रैफ़िक फ़िल्टरिंग — इस गाइड में दिया गया आउटबाउंड नेटवर्क प्रतिबंध सेवा या होस्ट के पहुँच योग्य गंतव्यों को सीमित करता है।
मूल कारण विश्लेषण (Root Cause)
प्रभावित versions में generic HTTP source ने timeout और transport वाला Go http.Client बनाया, लेकिन destination-aware redirect policy या socket स्तर पर IP रोक नहीं थी। Go default रूप से redirects follow करता है। Configured HTTP tools parameters को requests में जोड़ सकते हैं, इसलिए crafted value या redirect अनुरोध को अपेक्षित destination से हटा सकता था। केवल मूल URL जाँचना पर्याप्त नहीं है: redirect destination बदल देता है और validation तथा connection के बीच DNS अलग IP दे सकता है। Upstream fix SSRFGuard जोड़ता है, CheckRedirect में blocked destinations अस्वीकार करता है और connection layer पर resolved IP फिर जाँचता है। Private, loopback, link-local और अन्य non-global addresses default रूप से blocked हैं; ranges या private-network access की अनुमति configuration exception है और इसे बहुत सीमित रखना चाहिए।[1], [2], [4]
हमले का चरण-दर-चरण प्रवाह
तीन शर्तों से पहुँच की जाँच करें
इस chain के लिए तीनों शर्तें आवश्यक हैं: (1) प्रभावित 0.3.0–1.4.0 deployment में generic HTTP source/tool का उपयोग हो; (2) caller उस path को invoke कर सके और URL/path को नियंत्रित करे या redirect करा सके; और (3) Toolbox host destination तक route कर सके। कोई भी शर्त पूरी न हो तो यह chain इस path से उस destination तक नहीं पहुँच सकती। Destination के अपने authentication और access controls फिर भी लागू रहते हैं।[1]
Tool argument outgoing request को प्रभावित करता है
Configured HTTP tool अपने base endpoint को input values के साथ जोड़ता है। CVE description के अनुसार crafted path parameters HTTP source को दूसरे destination पर भेज सकते हैं। MCP user या agent tool call करता है; untrusted content उस call को तभी प्रभावित कर सकता है जब आसपास का workflow इसकी अनुमति दे।[1], [2]
Toolbox अपने नेटवर्क से अनुरोध करता है
अगली request Toolbox host से जाती है और उस host के network द्वारा अनुमत destinations तक पहुँच सकती है। इसलिए internal services ऐसे requests पा सकती हैं जिन्हें MCP caller सीधे नहीं भेज सकता। CVE यह साबित नहीं करता कि हर deployment cloud credentials उजागर करती है या हर redirect सफल होता है।[1]
अपडेट करें और outbound सीमा जाँचें
MCP Toolbox को 1.5.0 या नए version पर अपडेट करें। Fix configured literal IPs और redirect targets जाँचता है, तथा connection के समय disallowed resolved IPs रोकता है; इससे DNS rebinding का जोखिम भी घटता है। आवश्यकता न हो तो allowPrivateNetworks बंद रखें, allowed ranges सीमित रखें और अलग से egress policy लागू करें।[2], [3], [4]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
यह upstream HTTP client path की सीमित तुलना है, पूरी फ़ाइल का विकल्प नहीं। Merged fix SSRFGuard जोड़ता है: यह redirect destinations जाँचता है और connection के समय blocked resolved IP अस्वीकार करता है, जिससे केवल redirect समय DNS resolve करने पर बचने वाली DNS rebinding gap बंद होती है। Guard private और अन्य non-global addresses default रूप से रोकता है। allowPrivateNetworks, allowedIpRanges और customBlockedIpRanges शक्तिशाली controls हैं; allowlist exception केवल आवश्यक range तक सीमित रखें। Source file: internal/sources/http/http.go।[2]
सोर्स अंश: HTTP client और redirect नीति का अंश
client := http.Client{
Timeout: duration,
Transport: tr,
}
// CheckRedirect policy न होने पर client default policy के अनुसार
// HTTP redirects follow करता है। transport में SSRF destination guard भी नहीं है।
client := &http.Client{
Timeout: duration,
Transport: tr,
CheckRedirect: func(req *http.Request, via []*http.Request) error {
if len(via) >= 10 {
return fmt.Errorf("stopped after 10 redirects")
}
hostname := req.URL.Hostname()
if ip := net.ParseIP(hostname); ip != nil {
if guard.IsIPBlocked(ip) {
return fmt.Errorf("redirect to blocked IP %s denied", ip)
}
return nil
}
addrs, err := resolver.LookupHost(req.Context(), hostname)
if err != nil {
return fmt.Errorf("failed to resolve redirect host %s: %w", hostname, err)
}
for _, addr := range addrs {
if ip := net.ParseIP(addr); ip != nil && guard.IsIPBlocked(ip) {
return fmt.Errorf("redirect host %s resolves to blocked IP %s", hostname, addr)
}
}
return nil
},
}
// वही SSRFGuard socket dial boundary पर भी लागू होता है,
// इसलिए DNS response permitted address को blocked address में नहीं बदल सकता।
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓Google MCP Toolbox binaries, containers और dependencies की सूची बनाएँ; 0.3.0 से 1.4.0 को प्रभावित मानकर 1.5.0 या नए पर upgrade करें।[1], [3]
- ✓चल रहे Toolbox process का version सत्यापित करें; MCP client, agent framework या host application upgrade करने से यह process upgrade नहीं होता।[1], [3]
- ✓हर generic HTTP source/tool में पता लगाएँ कि कौन से arguments URL, path, host या redirects प्रभावित कर सकते हैं; जहाँ आवश्यकता न हो वहाँ untrusted input से destination control हटाएँ।[1], [2]
- ✓दर्ज आवश्यकता न हो तो
allowPrivateNetworksबंद रखें; चालू करने परallowedIpRangesको न्यूनतम CIDR तक सीमित करें और इसे firewall exception की तरह review करें।[4], [2] - ✓ऐसे sensitive destinations के लिए
customBlockedIpRangesउपयोग करें जिन्हें व्यापक private-network access चालू होने पर भी unreachable रहना चाहिए।[4], [2] - ✓सीधे private और loopback IPs, blocked ranges पर resolve होने वाले hostnames, blocked destinations के redirects, loops, invalid CIDRs और validation तथा connection के बीच बदलते DNS answers के लिए regression tests जोड़ें।[2]
- ✓Host, container या VPC पर outbound network policy लागू करें ताकि URL validation की future regression metadata services या असंबंधित internal networks तक न पहुँचे।[7]
- ✓FlawOpen की प्रतिक्रिया सलाह: यदि प्रभावित instance expose हुई थी, तो unexpected destinations के लिए HTTP logs और egress देखें; CVE होना अपने आप data access का प्रमाण नहीं है।
स्रोत
- Google CNA CVE record CVE-2026-14540 (NVD; CNA CVSS-BT 8.0, CVSS 4.0)
- Google MCP Toolbox pull request #3448: SSRF guard
- MCP Toolbox v1.5.0 release and changelog
- Google MCP Toolbox HTTP source documentation
- The Next Web: Google, JPMorgan and two governments fixed the same MCP flaw
- MITRE CWE-918: Server-Side Request Forgery (SSRF)
- OWASP SSRF रोकथाम चीट शीट