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 टिप्पणियां
Hacker News की राय
kernel mailing list में "तीखी बहस" का ज़िक्र किया गया। एक राय में पूछा गया कि क्या कोई insider आपत्तियों और चिंताओं का सार बता सकता है। mailing list इतनी तीव्र होती है कि लोग उससे बचने की प्रवृत्ति रखते हैं
Chrome को यह call चाहिए, लेकिन attacker अलग flags के साथ remap कर सकता है, इसलिए sealed pages को unseal नहीं किया जा सकता
mseal()और उसके बाद के article का link दिया गया हैइस बात पर खेद व्यक्त किया गया कि आधुनिक (x86_64) architecture में सुरक्षित programming को बढ़ावा देने वाली कई सुविधाएँ होने के बावजूद, operating system को अब भी ऐसे calls लागू करने पड़ते हैं
यह सवाल है कि क्या
msealsystem call को LD_PRELOAD trick से निष्प्रभावी किया जा सकता हैarticle में दिया गया mseal() prototype syntax के हिसाब से सही नहीं है। पहला argument
unsigned start addrनहीं बल्किunsigned long start_addrहोना चाहिएOpenBSD में यह सुविधा बहुत पहले से थी। यह सवाल उठाया गया कि Linux में इसे अब जाकर क्यों लाया जा रहा है