5 पॉइंट द्वारा GN⁺ 2024-09-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें

memory safety कमजोरियों की जड़ समाप्त करना

विरोधाभासी परिणाम

  • जब memory-unsafe भाषाओं में लिखे गए codebase बढ़ते हैं, तब नए features को memory-safe भाषाओं में शिफ्ट करने से memory safety कमजोरियां काफी कम हो जाती हैं
  • इसका कारण यह है कि समय के साथ कमजोरियां घातीय रूप से घटती हैं

गणितीय व्याख्या

  • कमजोरियों का जीवनकाल exponential distribution का पालन करता है
  • कमजोरियां मुख्य रूप से नए code में उत्पन्न होती हैं, और समय के साथ code अधिक सुरक्षित होता जाता है
  • 5 साल पुराने code की vulnerability density नए code की तुलना में 3.4 गुना से 7.4 गुना कम होती है

Android में वास्तविक उदाहरण

  • 2019 से Android टीम ने नए development को memory-safe भाषाओं में शिफ्ट करना शुरू किया
  • 2024 तक memory safety कमजोरियां 76% से घटकर 24% रह गईं
  • memory safety कमजोरियां घटने के साथ कुल security risk भी कम हुआ

memory safety रणनीति का विकास

  • पहली पीढ़ी: reactive patching - कमजोरियों को खोजकर ठीक करने का तरीका
  • दूसरी पीढ़ी: proactive mitigation - कमजोरियों के exploit को कठिन बनाने का तरीका
  • तीसरी पीढ़ी: proactive vulnerability discovery - कमजोरियों को पहले से खोज निकालने का तरीका
  • चौथी पीढ़ी: high-assurance prevention - memory-safe भाषाओं में शिफ्ट करके कमजोरियों के पैदा होने को ही रोकने का तरीका

high-assurance prevention के फायदे

  • defender और attacker के बीच की अंतहीन प्रतिस्पर्धा को तोड़ता है
  • memory-safe भाषाओं के जरिए security बढ़ती है और लागत घटती है
  • code की correctness और developer productivity बढ़ती है

सीख से अमल तक

  • मौजूदा memory-unsafe code को पूरी तरह छोड़ने या फिर से लिखने की जरूरत नहीं है
  • interoperability बेहतर बनाकर memory-safe भाषाओं की ओर बदलाव को तेज किया जा सकता है
  • Rust और C++, तथा Rust और Kotlin के बीच interoperability बेहतर बनाने वाले tools विकसित किए जा रहे हैं

पिछली पीढ़ियों की भूमिका

  • proactive mitigation और detection का चयनात्मक उपयोग
  • memory-safe code की ओर शिफ्ट होने के साथ mitigation और detection की जरूरत कम होती जाती है

निष्कर्ष

  • नए code में memory-safe भाषाओं का उपयोग करने से कमजोरियां घातीय रूप से घटती हैं
  • Android में 6 साल से अधिक के लगातार परिणाम इस approach की प्रभावशीलता साबित करते हैं

GN⁺ का सार

  • memory safety कमजोरियों को कम करने के लिए memory-safe भाषाओं की ओर शिफ्ट करना महत्वपूर्ण है
  • Android टीम के उदाहरण से पुष्टि होती है कि memory safety कमजोरियां काफी कम हुईं
  • मौजूदा code को पूरी तरह फिर से लिखने के बजाय interoperability सुधारना अधिक व्यावहारिक है
  • Rust जैसी memory-safe भाषाओं का उपयोग security और productivity दोनों को एक साथ बढ़ा सकता है

1 टिप्पणियां

 
GN⁺ 2024-09-27
Hacker News टिप्पणियाँ
  • नए development को memory-safe भाषाओं में शिफ्ट करना सार्थक सुधार ला सकता है
    • सब कुछ port करने की तुलना में यह कहीं अधिक आसान और सस्ता है
  • लेख में दिया गया chart स्पष्ट और संक्षिप्त है
    • डेटा का सावधानीपूर्वक चयन और labeling इच्छित विचार को आसानी से पहुँचा सकते हैं
  • vulnerabilities घातीय रूप से घटती हैं
    • नए code पर ध्यान केंद्रित करना महत्वपूर्ण है
    • अंधाधुंध RiiR projects resources की बर्बादी हैं
    • Rust experts द्वारा सुझाई गई strategy memory vulnerabilities को न्यूनतम करने में सबसे प्रभावी है
  • Android team ने देखा कि Rust changes का rollback rate C++ के आधे से भी कम है
  • नए code और memory vulnerabilities के बीच correlation है
    • नई features से संबंधित code में vulnerabilities अधिक केंद्रित रहती हैं
    • पुराने code में वास्तविक उपयोग के दौरान edge cases सामने आ जाते हैं
  • यह तय करना कठिन है कि नया code ही memory vulnerabilities पैदा करता है
    • Heartbleed bug जैसी high-impact vulnerabilities भी हैं
  • vulnerabilities घातीय रूप से घटती हैं
    • नई features जोड़ना बंद करना security के लिए बेहतर हो सकता है
    • संभव है कि Windows LTSC सबसे सुरक्षित version हो
  • safe coding code की correctness और developer productivity दोनों में सुधार करती है
    • bug detection को code check-in से पहले ले आती है
    • Android team ने देखा कि Rust changes का rollback rate C++ के आधे से भी कम है
  • Rust को जानने के बाद programming के लिए उत्साह फिर लौट आया
  • memory-safe language (MSL) के रूप में केवल Rust का उल्लेख है
    • Kotlin का भी उल्लेख था, लेकिन उसकी memory safety capabilities Rust जितनी मजबूत नहीं हैं
  • vulnerabilities का lifetime घातीय रूप से वितरित होता है
    • नए code में memory safety सुनिश्चित करना बहुत मूल्यवान है
    • बड़े legacy codebase में भी यह उपयोगी है
  • हो सकता है कि पुराने code की पर्याप्त समीक्षा न हुई हो
    • हाल के commit logs की अधिक बार समीक्षा की जाती है
  • Mac और Windows के code लिखने में इस्तेमाल होने वाली भाषाओं का अंतर
    • Mac memory-safe Swift का उपयोग करता है, जबकि Windows मुख्यतः C या C++ का उपयोग करता है
  • जैसे-जैसे vulnerabilities दुर्लभ होती जाती हैं, उनका मूल्य बढ़ता जाता है
    • बची हुई vulnerabilities का उपयोग nation-state actors द्वारा high-value targets पर किए जाने की संभावना है
    • iOS के Lockdown Mode जैसी features की आवश्यकता हो सकती है
    • security-aware users performance में कमी के बदले security box को check कर सकते हैं
    • हमलों का पता लगाकर उन्हें analysis के लिए security team को भेजा जाता है
    • users को warning भेजकर बताया जाता है कि हमला detect हुआ है
    • user activity को निष्क्रिय रूप से monitor करने के बजाय, हमला detect होने पर users को सूचित किया जाता है