
CVE-2026-33693: activitypub-federation-rust v4_is_invalid() में 0.0.0.0 बाइपास के माध्यम से SSRF (CVSS 6.5 मध्यम)
v4_is_invalid() में 0.0.0.0 बायपास के माध्यम से SSRF (CVSS 6.5 मध्यम)
कीवर्ड्स: SSRF, 0.0.0.0, IP सत्यापन बायपास, activitypub-federation, Lemmy, Rust, ActivityPub
activitypub-federation-rust लाइब्रेरी (जिसका उपयोग Lemmy और 6+ डाउनस्ट्रीम प्रोजेक्ट्स द्वारा किया जाता है) में v4_is_invalid() फ़ंक्शन में अपूर्ण IP एड्रेस सत्यापन जाँच के कारण एक सर्वर-साइड रिक्वेस्ट फोर्जरी (SSRF) भेद्यता मौजूद है। फ़ंक्शन is_unspecified() को कॉल करने में विफल रहता है, जिससे एक हमलावर 0.0.0.0 को लक्षित करके SSRF सुरक्षा को बायपास कर सकता है — जो अधिकांश प्रणालियों पर localhost पर मैप होता है।
activitypub_federation (Rust/cargo)src/utils.rs में v4_is_invalid() फ़ंक्शन आंतरिक नेटवर्क एक्सेस को ब्लॉक करने के लिए IPv4 एड्रेस को मान्य करता है। यह लूपबैक (127.0.0.0/8), प्राइवेट रेंज (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), लिंक-लोकल (169.254.0.0/16), और ब्रॉडकास्ट (255.255.255.255) की जाँच करता है, लेकिन अनिर्दिष्ट एड्रेस 0.0.0.0 की जाँच नहीं करता।
अधिकांश प्रणालियों पर, 0.0.0.0 लूपबैक इंटरफ़ेस पर रिज़ॉल्व होता है, जो 127.0.0.1 के समान एक्सेस प्रदान करता है।
द्वितीयक निष्कर्ष: एक DNS रीबाइंडिंग / TOCTOU भेद्यता भी मौजूद है, जहाँ lookup_host() एक होस्टनाम को रिज़ॉल्व करता है और IP को मान्य करता है, लेकिन एक अलग reqwest कॉल दूसरा DNS रिज़ॉल्यूशन करती है — जिससे हमलावर पहले एक सुरक्षित IP प्रस्तुत कर सकता है, फिर दूसरे रिज़ॉल्यूशन पर आंतरिक IP पर रीबाइंड कर सकता है।
src/utils.rs)fn v4_is_invalid(ip: &Ipv4Addr) -> bool {
ip.is_loopback()
|| ip.is_private()
|| ip.is_link_local()
|| ip.is_broadcast()
// MISSING: || ip.is_unspecified() <- 0.0.0.0 not blocked
}
fn v4_is_invalid(ip: &Ipv4Addr) -> bool {
ip.is_loopback()
|| ip.is_private()
|| ip.is_link_local()
|| ip.is_broadcast()
|| ip.is_unspecified() // <- Now blocks 0.0.0.0
}
+---------------------------------------------------+
| SSRF via 0.0.0.0 Bypass |
+---------------------------------------------------+
| |
| 1. Attacker hosts ActivityPub object with |
| URL pointing to http://0.0.0.0:<port>/path |
| |
| 2. Lemmy instance fetches the object via |
| activitypub-federation-rust |
| |
| 3. v4_is_invalid() checks IP address: |
| x is_loopback() -> false (not 127.x) |
| x is_private() -> false (not RFC1918) |
| x is_link_local() -> false (not 169.254.x) |
| x is_broadcast() -> false (not 255.x) |
| x is_unspecified() -> NOT CHECKED |
| Result: 0.0.0.0 PASSES validation |
| |
| 4. Request sent to 0.0.0.0 -> resolves to |
| localhost -> accesses internal services |
| |
| 5. Internal service data returned to attacker |
| via ActivityPub federation response |
| |
+---------------------------------------------------+
डाउनस्ट्रीम जोखिम: activitypub-federation-rust क्रेट का उपयोग फेडिवर्स पारिस्थितिकी तंत्र में 6+ प्रोजेक्ट्स द्वारा किया जाता है:
एक हमलावर यह कर सकता है:
activitypub-federation को PR #162 से फिक्स युक्त संस्करण में अपग्रेड करेंयह रिपॉजिटरी जिम्मेदार भेद्यता प्रकटीकरण के भाग के रूप में शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है। भेद्यता GitHub की प्राइवेट वल्नरेबिलिटी रिपोर्टिंग (PVRT) प्रक्रिया के माध्यम से रिपोर्ट की गई थी। उत्पादन प्रणालियों के विरुद्ध कोई शोषण नहीं किया गया। सभी परीक्षण पृथक वातावरणों में किए गए।
इस प्रोजेक्ट का पूरा विवरण, कार्यप्रणाली और संबंधित शोध यहाँ उपलब्ध है:
https://snailsploit.com/security-research/cves/cve-2026-33693/
Kai Aizen — स्वतंत्र आक्रामक सुरक्षा शोधकर्ता द्वारा निर्मित।
snailsploit.com · Research · Frameworks · GitHub · LinkedIn · ResearchGate · X/Twitter
वही हमला। भिन्न सब्सट्रेट।
| प्रोजेक्ट | स्टार्स | विवरण |
|---|
| Lemmy | 13.7K+ | फेडिवर्स के लिए लिंक एग्रीगेटर |
| hatsu | -- | ActivityPub ब्रिज |
| gill | -- | फेडरेशन के साथ Git होस्टिंग |
| ties | -- | सामाजिक नेटवर्किंग |
| fediscus | -- | फेडरेटेड चर्चाएँ |
| fediverse-axum | -- | ActivityPub फ्रेमवर्क |
| मीट्रिक | मान |
|---|
| आक्रमण वेक्टर | नेटवर्क |
| आक्रमण जटिलता | निम्न |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | अपरिवर्तित |
| गोपनीयता | निम्न |
| अखंडता | निम्न |
| उपलब्धता | कोई नहीं |
| CVSS वेक्टर | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| स्कोर | 6.5 (मध्यम) |
| दिनांक | घटना |
|---|
| 2026-03-11 | GitHub PVRT के माध्यम से भेद्यता रिपोर्ट की गई |
| 2026-03-13 | अनुरक्षक ने निष्कर्ष की पुष्टि की |
| 2026-03-13 | फिक्स PR #162 प्रस्तुत किया गया |
| 2026-03-13 | परामर्श गलती से बंद कर दिया गया |
| 2026-03-16 | परामर्श पुनः खोला गया |
| 2026-03-23 | CVE-2026-33693 निर्धारित किया गया और परामर्श प्रकाशित किया गया |