लिनक्स कर्नलमधील भेद्यतेच्या शोषणापासून संरक्षण करण्यासाठी LKRG 0.8 मॉड्यूलचे प्रकाशन

ओपनवॉल प्रकल्प प्रकाशित कर्नल मॉड्यूल रिलीझ LKRG 0.8 (Linux Kernel Runtime Guard), हल्ले आणि कर्नल संरचनांच्या अखंडतेचे उल्लंघन शोधण्यासाठी आणि अवरोधित करण्यासाठी डिझाइन केलेले. उदाहरणार्थ, मॉड्यूल चालू असलेल्या कर्नलमधील अनधिकृत बदलांपासून संरक्षण करू शकते आणि वापरकर्ता प्रक्रियांच्या परवानग्या बदलण्याचा प्रयत्न करू शकते (शोषणाचा वापर शोधणे). लिनक्स कर्नलसाठी आधीपासून ज्ञात शोषणांपासून संरक्षण आयोजित करण्यासाठी (उदाहरणार्थ, सिस्टीममध्ये कर्नल अद्ययावत करणे कठीण असलेल्या परिस्थितीत) आणि अद्याप अज्ञात भेद्यतेसाठी शोषणांचा प्रतिकार करण्यासाठी मॉड्यूल योग्य आहे. प्रकल्प कोड द्वारा वितरित GPLv2 अंतर्गत परवानाकृत.

नवीन आवृत्तीमधील बदलांपैकी:

  • एलकेआरजी प्रकल्पाची स्थिती बदलली गेली आहे, जी यापुढे अखंडता तपासण्यासाठी आणि शोषणांचा वापर निर्धारित करण्यासाठी स्वतंत्र उपप्रणालींमध्ये विभागली जात नाही, परंतु हल्ले आणि विविध अखंडतेचे उल्लंघन ओळखण्यासाठी एक संपूर्ण उत्पादन म्हणून सादर केले आहे;
  • 5.3 ते 5.7 पर्यंतच्या लिनक्स कर्नलसह, तसेच CONFIG_USB आणि CONFIG_STACKTRACE पर्यायांशिवाय किंवा CONFIG_UNWINDER_ORC पर्यायाशिवाय, तसेच कर्नलसह ज्या कर्नलमध्ये LOKRKRGok करू शकत नाही अशा फंक्शनसह, आक्रमक GCC ऑप्टिमायझेशनसह संकलित केलेल्या कर्नलसह सुसंगतता प्रदान केली जाते. dispensed with;
  • बिल्डिंग करताना, काही अनिवार्य CONFIG_* कर्नल सेटिंग्ज अस्पष्ट क्रॅशऐवजी अर्थपूर्ण त्रुटी संदेश निर्माण करण्यासाठी तपासल्या जातात;
  • स्टँडबाय (ACPI S3, RAM ला सस्पेंड) आणि स्लीप (S4, डिस्कवर सस्पेंड) मोडसाठी समर्थन जोडले;
  • Makefile मध्ये DKMS समर्थन जोडले;
  • 32-बिट एआरएम प्लॅटफॉर्मसाठी प्रायोगिक समर्थन लागू केले गेले आहे (रास्पबेरी पाई 3 मॉडेल बी वर चाचणी केली गेली आहे). पूर्वी उपलब्ध AArch64 (ARM64) समर्थन रास्पबेरी Pi 4 बोर्डसह सुसंगतता प्रदान करण्यासाठी विस्तारित केले आहे;
  • नवीन हुक जोडले गेले आहेत, ज्यामध्ये सक्षम() कॉल हँडलरचा समावेश आहे ज्यामुळे "हेर"क्षमता", प्रक्रिया आयडी नाही (श्रेय);
  • नेमस्पेस प्रतिबंध (उदाहरणार्थ, डॉकर कंटेनरमधून) सुटण्याचे प्रयत्न शोधण्यासाठी नवीन तर्क प्रस्तावित केले गेले आहे;
  • x86-64 सिस्टम्सवर, SMAP (पर्यवेक्षक मोड ऍक्सेस प्रिव्हेंशन) बिट तपासले जाते आणि लागू केले जाते, कर्नल स्तरावर चालणार्‍या विशेषाधिकारित कोडमधून वापरकर्ता स्पेस डेटामध्ये प्रवेश अवरोधित करण्यासाठी डिझाइन केलेले. एसएमईपी (पर्यवेक्षक मोड एक्झिक्युशन प्रिव्हेंशन) संरक्षण पूर्वी लागू केले होते;
  • ऑपरेशन दरम्यान, LKRG सेटिंग्ज मेमरी पृष्ठावर ठेवल्या जातात जे सहसा केवळ वाचनीय असतात;
  • लॉगिंग माहिती जी आक्रमणांसाठी सर्वात उपयुक्त असू शकते (उदाहरणार्थ, कर्नलमधील पत्त्यांबद्दल माहिती) डीबगिंग मोडपर्यंत मर्यादित आहे (log_level=4 आणि उच्च), जे डीफॉल्टनुसार अक्षम केले जाते.
  • प्रक्रिया ट्रॅकिंग डेटाबेसची स्केलेबिलिटी वाढवली गेली आहे - एका स्पिनलॉकद्वारे संरक्षित केलेल्या एका आरबी ट्रीऐवजी, 512 वाचन-लेखन लॉकद्वारे संरक्षित 512 आरबी झाडांचे हॅश टेबल वापरले जाते;
  • डीफॉल्टनुसार एक मोड लागू आणि सक्षम केला गेला आहे, ज्यामध्ये प्रक्रिया अभिज्ञापकांची अखंडता अनेकदा फक्त वर्तमान कार्यासाठी तपासली जाते आणि वैकल्पिकरित्या सक्रिय (जागणे) कार्यांसाठी देखील तपासली जाते. झोपेच्या स्थितीत असलेल्या किंवा LKRG द्वारे नियंत्रित कर्नल API मध्ये प्रवेश न करता कार्यरत असलेल्या इतर कार्यांसाठी, तपासणी कमी वारंवार केली जाते.
  • फाइन-ट्यूनिंग LKRG साठी नवीन sysctl आणि मॉड्यूल पॅरामीटर्स जोडले, तसेच डेव्हलपरने तयार केलेल्या फाइन-ट्यूनिंग सेटिंग्ज (प्रोफाइल) च्या सेटमधून निवडून सरलीकृत कॉन्फिगरेशनसाठी दोन sysctl;
  • एकीकडे उल्लंघन शोधण्याचा वेग आणि प्रतिसादाची प्रभावीता आणि कार्यक्षमतेवर होणारा परिणाम आणि दुसरीकडे खोट्या सकारात्मकतेचा धोका यांच्यात अधिक संतुलित संतुलन साधण्यासाठी डीफॉल्ट सेटिंग्ज बदलल्या गेल्या आहेत;
  • LKRG मॉड्युल बूटमध्ये लवकर लोड करण्यासाठी systemd युनिट फाइलची पुनर्रचना केली गेली आहे (मॉड्यूल अक्षम करण्यासाठी कर्नल कमांड लाइन पर्याय वापरला जाऊ शकतो);

नवीन रिलीझमध्ये प्रस्तावित केलेली ऑप्टिमायझेशन्स लक्षात घेऊन, LKRG 0.8 वापरताना कार्यक्षमता कमी होण्याचा अंदाज डीफॉल्ट मोडमध्ये 2.5% ("हेवी") आणि 2% लाइट मोडमध्ये ("लाइट") आहे.

नुकत्याच झालेल्या कार्यक्रमात संशोधन रूटकिट्स LKRG शोधण्यासाठी पॅकेजेसची प्रभावीता दर्शविले सर्वोत्कृष्ट परिणाम, कर्नल स्तरावर खोट्या पॉझिटिव्हशिवाय काम करणार्‍या 8 पैकी 9 चाचणी केलेल्या रूटकिट्स (रूटकिट्स डायमॉर्फिन, हनी पॉट बेअर्स, लिलीऑफ दव्हॅली, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit आणि Sutekh) ओळखले गेले, परंतु Keysniffer, जे एक आहे. मॉड्यूल, कीलॉगरसह चुकले होते, शब्दशः अर्थाने रूटकिट नाही). तुलनेसाठी, AIDE, OSSEC आणि रूटकिट हंटर पॅकेजेसने 2 पैकी 9 रूटकिट शोधले, तर Chkrootkit ला एकही आढळले नाही. त्याच वेळी, LKRG वापरकर्त्याच्या जागेत स्थित रूटकिट्स शोधण्यास समर्थन देत नाही, म्हणून AIDE आणि LKRG चे संयोजन वापरताना सर्वात मोठी कार्यक्षमता प्राप्त होते, ज्यामुळे सर्व प्रकारच्या 14 पैकी 15 रूटकिट्स ओळखणे शक्य झाले.

याव्यतिरिक्त, हे वितरण विकसक नोंद केले जाऊ शकते व्हॉनिक्स सुरुवात केली आकार देणे Debian, Whonix, Qubes आणि Kickecure साठी DKMS सह रेडीमेड पॅकेज आणि यासाठी पॅकेज आर्क लिनक्स आवृत्ती 0.8 वर आधीच अपडेट केले आहे. LKRG सह पॅकेजेस रशियनमध्ये देखील उपलब्ध आहेत alt लिनक्स и अ‍ॅस्ट्रा लिनक्स.

LKRG मधील सचोटीची तपासणी कर्नल आणि मॉड्यूल्सचा वास्तविक कोड आणि डेटा, काही महत्त्वाच्या डेटा स्ट्रक्चर्स आणि CPU सेटिंग्जची संग्रहित हॅश किंवा संबंधित मेमरी एरिया, डेटा स्ट्रक्चर्स किंवा रजिस्टर्सच्या कॉपीसह तुलना करून केली जाते. चेक वेळोवेळी आणि विविध घटना घडल्यानंतर दोन्ही वेळोवेळी सक्रिय केले जातात.

शोषणाचा संभाव्य वापर निश्चित करणे आणि हल्ले अवरोधित करणे हे कर्नल संसाधनांमध्ये प्रवेश प्रदान करण्यापूर्वी (उदाहरणार्थ, फाइल उघडण्यापूर्वी) टप्प्यावर केले जाते, परंतु प्रक्रियेस अनधिकृत परवानग्या मिळाल्यानंतर (उदाहरणार्थ, UID बदलणे). जेव्हा अनधिकृत वर्तन आढळून येते, तेव्हा प्रक्रियांना डीफॉल्टनुसार समाप्त करण्यास भाग पाडले जाते, जे अनेक शोषणांना अवरोधित करण्यासाठी पुरेसे आहे.

स्त्रोत: opennet.ru

एक टिप्पणी जोडा