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

Linux के नए mseal system call का गहन विश्लेषण

  • mseal Linux kernel 6.10 version में पेश किया गया एक नया system call है, जो memory protection के लिए "memory sealing" फीचर प्रदान करता है.
  • यह system call प्रोग्राम के चलने के दौरान memory region को अवैध संशोधन से अपरिवर्तनीय बना देता है, ताकि हमलावर memory permissions बदल न सकें या memory layout में छेड़छाड़ न कर सकें.
  • mseal का उद्देश्य remote attacker द्वारा code execution को रोकना है, और यह संवेदनशील डेटा को memory में स्टोर करने वाले local attacker से रक्षा करने के लिए बने मौजूदा memfd_create और memfd_secret से अलग है.

mseal कैसे काम करता है

  • mseal का function signature सरल है; यह starting address और length लेता है और संबंधित memory region को seal कर देता है.
  • do_mseal function memory region को lock करता है, और check_mm_seal तथा apply_mm_seal के जरिए memory region की वैधता जांचकर उसे seal करता है.
  • sealed memory region पर mprotect, munmap, mremap जैसे system calls के माध्यम से permission बदलना, mapping हटाना, या size बदलना संभव नहीं होता.

mseal किन attack techniques से रक्षा करता है

  • NX सुदृढ़ीकरण: mseal VMA की execute permission बदलने से रोकता है, जिससे shellcode-आधारित हमलों को रोका जा सकता है.
  • unmapping-आधारित data-only attack mitigation: mseal memory region को मनमाने ढंग से unmap और remap होने से रोकता है, जिससे data-only attacks को रोका जा सकता है.

mseal के जरिए software hardening

  • mseal software के विशेष memory regions को seal करके security को मजबूत कर सकता है.
  • डेवलपर mseal का उपयोग करके उन memory regions को चुनिंदा रूप से seal कर सकते हैं, जहाँ untrusted data मौजूद हो सकता है.
  • जैसे-जैसे glibc के साथ integration आगे बढ़ेगा, automatic sealing फीचर जुड़ने की संभावना है.

GN⁺ का सार

  • mseal Linux kernel में नया जोड़ा गया एक security फीचर है, जो memory regions को seal करके remote attacker द्वारा code execution को रोकता है.
  • यह system call पारंपरिक memory protection तरीकों से अलग है, क्योंकि यह memory permission changes और mapping removal को रोककर data-only attacks को कम करता है.
  • mseal की शुरुआत software security को मजबूत करने में महत्वपूर्ण भूमिका निभाती है, और glibc integration के जरिए इसके और अधिक use cases की उम्मीद है.
  • समान कार्यक्षमता वाले अन्य प्रोजेक्ट्स में memory protection के लिए memfd_create और memfd_secret शामिल हैं.

1 टिप्पणियां

 
GN⁺ 2024-10-27
Hacker News की राय
  • kernel mailing list में "तीखी बहस" का ज़िक्र किया गया। एक राय में पूछा गया कि क्या कोई insider आपत्तियों और चिंताओं का सार बता सकता है। mailing list इतनी तीव्र होती है कि लोग उससे बचने की प्रवृत्ति रखते हैं

    • mechanism अपने आप में तर्कसंगत लगता है, लेकिन यह हैरानी की बात है कि यह पहले से kernel में मौजूद नहीं था
  • Chrome को यह call चाहिए, लेकिन attacker अलग flags के साथ remap कर सकता है, इसलिए sealed pages को unseal नहीं किया जा सकता

    • इसका मतलब है कि इसे runtime में allocated pages पर इस्तेमाल नहीं किया जा सकता, यानी जब तक उन्हें पूरे process lifetime के दौरान रखने का इरादा न हो, तब तक इसका उपयोग संभव नहीं
    • यह सवाल उठाया गया कि क्या इसका मतलब है कि इसे JS sandbox जैसी memory पर इस्तेमाल नहीं किया जा सकता
    • Chrome की memory/process management शैली से परिचित न होने के कारण, यह क्यों समस्या नहीं है इस पर निश्चितता नहीं है
  • mseal() और उसके बाद के article का link दिया गया है

  • इस बात पर खेद व्यक्त किया गया कि आधुनिक (x86_64) architecture में सुरक्षित programming को बढ़ावा देने वाली कई सुविधाएँ होने के बावजूद, operating system को अब भी ऐसे calls लागू करने पड़ते हैं

    • पुराने systems को patch करने की कोशिश computing की प्रगति को बाधित करती है और अरबों लोगों को जोखिम में डालती है
    • architecture bugs मौजूद हैं, लेकिन software मौजूदा सुविधाओं का सही उपयोग नहीं कर पा रहा
  • यह सवाल है कि क्या mseal system call को LD_PRELOAD trick से निष्प्रभावी किया जा सकता है

  • article में दिया गया mseal() prototype syntax के हिसाब से सही नहीं है। पहला argument unsigned start addr नहीं बल्कि unsigned long start_addr होना चाहिए

  • OpenBSD में यह सुविधा बहुत पहले से थी। यह सवाल उठाया गया कि Linux में इसे अब जाकर क्यों लाया जा रहा है