बड़े पैमाने की सेवाओं में Rust का उपयोग: WhatsApp के लिए एक अतिरिक्त सुरक्षा परत
(engineering.fb.com)- WhatsApp, जिसके 3 अरब से अधिक उपयोगकर्ता हैं, ने मैलवेयर खतरों के खिलाफ अपनी सुरक्षा मजबूत करने के लिए Rust-आधारित सुरक्षा परत पेश की है
- मीडिया consistency लाइब्रेरी को Rust में दोबारा लिखा गया और इसे अरबों डिवाइसों व ब्राउज़रों पर तैनात कर वैश्विक स्तर पर वास्तविक उपयोग में सत्यापित किया गया
- मौजूदा C++ की 1.6 लाख लाइनों को Rust की 90 हजार लाइनों से बदलते हुए performance और memory efficiency दोनों में सुधार हुआ
- 2015 की Stagefright vulnerability के बाद, मीडिया फ़ाइल प्रोसेसिंग की सुरक्षा बढ़ाने के लिए Rust जैसी memory-safe language अपनाने की दिशा में काम चल रहा था
- यह बदलाव WhatsApp·Messenger·Instagram की समग्र सुरक्षा रणनीति में memory-safe languages की भूमिका बढ़ाने वाला एक turning point है
WhatsApp की मीडिया प्रोसेसिंग रणनीति
- WhatsApp, 3 अरब से अधिक लोगों द्वारा उपयोग की जाने वाली end-to-end encrypted messaging service है, और लगातार सुरक्षा खतरों से निपटने के लिए अपनी रणनीति विकसित करता रहा है
- जब उपयोगकर्ता image, video जैसी media फ़ाइलें साझा करते हैं, तो उनमें malware शामिल होने की संभावना रहती है
- कुछ फ़ाइलें operating system या app की unpatched vulnerabilities का दुरुपयोग कर सकती हैं
- इसे रोकने के लिए media sharing फीचर में Rust language को अपनाया गया, जिससे memory safety सुनिश्चित की गई
- इसे वैश्विक स्तर पर Rust-आधारित लाइब्रेरी deployment के सबसे बड़े उदाहरणों में से एक बताया गया है
2015 Android Stagefright vulnerability और प्रतिक्रिया
- 2015 की Android Stagefright vulnerability OS-स्तर की media processing लाइब्रेरी में मौजूद थी, इसलिए इसे app स्तर पर ठीक करना संभव नहीं था
- WhatsApp ने अपनी C++ लाइब्रेरी
wamediaको संशोधित कर MP4 standard का पालन न करने वाली फ़ाइलों का पता लगाने में सक्षम बनाया- इससे OS update के बिना भी उपयोगकर्ताओं की सुरक्षा संभव हुई
- लेकिन चूंकि
wamediaअविश्वसनीय input को स्वतः प्रोसेस करता है, इसलिए memory-safe language में स्थानांतरण की आवश्यकता सामने आई
Rust की ओर बदलाव: बड़े पैमाने पर पुनर्लेखन और परिणाम
- WhatsApp ने मौजूदा C++ version के साथ-साथ
wamediaका Rust version विकसित किया- differential fuzzing, integration tests और unit tests के माध्यम से दोनों implementations के बीच compatibility सत्यापित की गई
- शुरुआती चरण में Rust standard library के कारण binary size में वृद्धि और build system compatibility की समस्याएं थीं, लेकिन लंबे समय के लिए support framework तैयार किया गया
- नतीजतन C++ 1.6 लाख लाइनें → Rust 90 हजार लाइनें का बदलाव हुआ, और performance व memory उपयोग efficiency दोनों बेहतर हुए
- Android, iOS, Mac, Web, wearable सहित सभी प्लेटफ़ॉर्म पर Rust version की पूर्ण तैनाती पूरी हो चुकी है
- इसके बाद
Kaleidoscopesystem पेश किया गया, जो PDF, executable files जैसी जोखिमपूर्ण फ़ाइल प्रकारों का पता लगाता है और extension forgery या MIME spoofing की पहचान करता है
WhatsApp का सुरक्षा दृष्टिकोण
- WhatsApp end-to-end encryption, encrypted backups, key transparency, call protection features जैसी कई सुरक्षा परतें संचालित करता है
- CVE disclosure, आंतरिक और बाहरी security audits, fuzzing और static analysis, supply chain management, attack surface analysis के जरिए जोखिमों की पहचान की जाती है
- Bug Bounty program का विस्तार कर शोधकर्ताओं को WhatsApp network protocol का विश्लेषण करने के लिए Research Proxy उपलब्ध कराया गया
- यह पुष्टि हुई कि कई प्रमुख vulnerabilities की जड़ C/C++ memory safety issues में है, और इसके लिए तीन रणनीतियां साथ-साथ चलाई जा रही हैं
- अनावश्यक attack surface को न्यूनतम करना
- बचे हुए C/C++ code की security assurance को मजबूत करना
- नए code की default language को memory-safe language में बदलना
Rust अपनाने में तेजी और आगे की दिशा
- Rust ने WhatsApp के लिए high-performance, cross-platform security libraries बनाना संभव किया
- यह बदलाव उपयोगकर्ता को दिखाई न देने वाली एक अतिरिक्त सुरक्षा परत प्रदान करता है और defense-in-depth रणनीति का हिस्सा है
- WhatsApp और Meta की security teams Rust के उच्च-प्रभाव वाले उपयोग क्षेत्रों का विस्तार कर रही हैं और भविष्य में Rust adoption को तेज़ करने की योजना है
1 टिप्पणियां
Hacker News की राय
WhatsApp एक ऐसा messenger है जिसे हर दिन 3 अरब लोग इस्तेमाल करते हैं
अमेरिका में इसका इस्तेमाल उतना नहीं होता, लेकिन दुनिया भर में यह बुनियादी communication infrastructure बन चुका है
अगर आप global market के लिए product बनाना चाहते हैं, तो आपको इन users की सोच और आदतों को समझना होगा
ऐसे स्वतंत्र लोग अभी भी दर्जनों में मौजूद हैं
कृपया WhatsApp को और अपरिहार्य बनाने वाले काम में भाग न लें
ज़्यादातर लोग email लगभग देखते ही नहीं
मैं एक developer community चलाता हूँ, और group member limit (1024 लोग) से अक्सर टकरा जाता हूँ
Discord या Slack पर ले जाने की कोशिश करो, तब भी आखिर में लोग फिर WhatsApp पर लौट आते हैं
क्योंकि carrier data bundles की वजह से WhatsApp लगभग मुफ्त पड़ता है
business message spam पर TechCrunch में कई बार लेख छपे, लेकिन असल में लगभग कुछ नहीं बदला
community feature का UX भी खास नहीं है
आखिरकार समस्या यह है कि Facebook ecosystem पर निर्भरता और गहरी हो रही है
मैं 10 साल से WhatsApp इस्तेमाल नहीं करता, और मेरे दोस्त व परिवार के ज़्यादातर लोग भी Signal पर चले गए हैं
यूरोप में अब भी ऐसे इलाके हैं जहाँ Viber इस्तेमाल होता है
कहा गया कि यह Rust में लिखी library की सबसे बड़े पैमाने की deployment है, लेकिन असल में Fontations इससे भी बड़ा हो सकता है
यह Chromium में शामिल है, और उसकी dependencies तक देखें तो इसका install base और भी बड़ा हो सकता है
quote को देखें तो लगता है WhatsApp ने libsignal का सीधे इस्तेमाल नहीं किया
उदाहरण: image-png, CrabbyAvif, qr_code, icu4x
कोड 1.6 लाख lines से घटकर 90 हज़ार lines हो जाना अच्छा है, लेकिन parallel rollout strategy उससे भी ज़्यादा दिलचस्प है
Rust और C++ versions को साथ चलाकर differential fuzzing से equivalence verify करना व्यावहारिक लगा
mobile clients में binary size अहम होती है, इसलिए build tooling में निवेश करना प्रभावशाली है
यह शायद ऐसी optimization हो सकती है जो सिर्फ nightly builds में संभव हो
ऐसे rewrite में सबसे मुश्किल हिस्सा Rust implementation से ज़्यादा मौजूदा parser की bug compatibility बनाए रखना होता है
असली media files अक्सर format के हिसाब से गलत होती हैं, इसलिए बहुत सख्ती से parse करने पर user data टूट सकता है
differential fuzzing लगभग एकमात्र व्यावहारिक तरीका है
यह कहना कि WhatsApp ने Rust की सबसे बड़ी deployment की है, शायद इसलिए है क्योंकि यह Windows 11 से भी ज़्यादा devices पर चलता है
हालाँकि यह अब भी सवाल है कि क्या WhatsApp सीधे libsignal इस्तेमाल करता है
Android खुद पहले से Rust-based code का काफ़ी हिस्सा शामिल करता है, और embedded devices में भी इसका व्यापक उपयोग होता है
जबकि Windows अब भी C/C++ केंद्रित है
कहा गया कि Rust standard library लाने से binary size बढ़ी, लेकिन यह साफ़ नहीं बताया गया कि इसे कैसे सुलझाया गया
संबंधित commits: commit1, commit2
समस्या size से ज़्यादा duplicate Rust dependencies की है
C++ और Rust mixed builds में दोनों अपनी-अपनी libstd शामिल करते हैं, इसलिए Bazel जैसे integrated build system की ज़रूरत होती है
शुरू में करीब 200KiB overhead स्वीकार किया गया, लेकिन Buck2 migration से size और build time दोनों कम किए गए
इसका श्रेय नई clang optimizations और LTO improvements को जाता है
जिज्ञासा है कि क्या Signal भी ऐसा ही कुछ कर रहा है
libsignal Rust में implement किया गया है, लेकिन बाकी हिस्सों के बारे में ज़्यादा पता नहीं
एक पंक्ति थी कि “3 अरब लोगों को default रूप से end-to-end encryption दिया जाता है”, लेकिन ऐसी खबरें भी आई हैं कि संदेश पढ़े जा सकते थे
Skype भी default रूप से encrypted था, लेकिन server settings के हिसाब से इसे बंद किया जा सकता था
असली सवाल यह है कि क्या आप Meta पर भरोसा कर सकते हैं कि वह data में झाँक नहीं रहा
यह विडंबना है कि Meta phishing और prepaid card scams को नहीं रोकता, लेकिन दूसरी चीज़ों में बहुत सक्रिय है
Rust अपनाने से bugs काफ़ी कम हुए, यह बात प्रभावशाली है
C++ में बहुत सारे undefined behaviors (UB) मौजूद हैं, जबकि Rust उन्हें संरचनात्मक रूप से रोकता है
मजबूत type system की वजह से reliability में काफ़ी सुधार होता है