Openwall төсөл
Шинэ хувилбарт орсон өөрчлөлтүүдийн дунд:
- LKRG төслийн байршлыг өөрчилсөн бөгөөд энэ нь бүрэн бүтэн байдлыг шалгах, мөлжлөгийн ашиглалтыг тодорхойлох тусдаа дэд системд хуваагдахаа больсон, харин халдлага, янз бүрийн бүрэн бүтэн байдлын зөрчлийг илрүүлэх бүрэн бүтээгдэхүүн болгон танилцуулсан;
- CONFIG_USB болон CONFIG_STACKTRACE сонголтгүй эсвэл CONFIG_UNWINDER_ORC сонголтгүйгээр, 5.3-аас 5.7 хүртэлх Linux цөмүүд, түүнчлэн GCC-ийн түрэмгий оновчлолоор эмхэтгэсэн цөмүүд, түүнчлэн LKR функцгүй бол цөмүүдтэй нийцтэй байна. татгалзах;
- Барилга барихдаа тодорхой бус эвдрэлийн оронд утга учиртай алдааны мессеж үүсгэхийн тулд зарим зайлшгүй CONFIG_* цөмийн тохиргоог шалгадаг;
- Зогсолт (ACPI S3, RAM-д түдгэлзүүлэх) болон унтах (S4, диск рүү түр зогсоох) горимуудын дэмжлэг нэмэгдсэн;
- Makefile-д DKMS дэмжлэг нэмсэн;
- 32 битийн ARM платформуудын туршилтын дэмжлэгийг хэрэгжүүлсэн (Raspberry Pi 3 Model B дээр туршиж үзсэн). Өмнө нь ашиглагдаж байсан AArch64 (ARM64) дэмжлэгийг Raspberry Pi 4 хавтантай нийцүүлэхийн тулд өргөжүүлсэн;
- Шинэ дэгээнүүд нэмэгдсэн бөгөөд үүнд "хөгждөг" мөлжлөгийг илүү сайн тодорхойлох чадвартай () дуудлагын зохицуулагч орно.
Боломжууд ", боловсруулах ID биш (итгэмжлэлүүд ); - Нэрийн зайны хязгаарлалтаас зайлсхийх оролдлогыг илрүүлэх шинэ логикийг санал болгосон (жишээлбэл, Docker контейнерээс);
- X86-64 системүүд дээр цөмийн түвшинд ажиллаж байгаа давуу эрхтэй кодоос хэрэглэгчийн зайны өгөгдөлд хандах хандалтыг хаах зорилготой SMAP (Supervisor Mode Access Prevention) битийг шалгаж, ашигладаг. SMEP (Supervisor Mode Execution Prevention) хамгаалалтыг өмнө нь хэрэгжүүлсэн;
- Ашиглалтын явцад LKRG тохиргоог ихэвчлэн зөвхөн унших боломжтой санах ойн хуудсанд байрлуулдаг;
- Довтолгоонд хамгийн хэрэгтэй байж болох мэдээллийг бүртгэх (жишээлбэл, цөм дэх хаягуудын тухай мэдээлэл) нь дибаг хийх горимоор хязгаарлагддаг (log_level=4 ба түүнээс дээш), энэ нь анхдагчаар идэвхгүй байдаг.
- Процессыг хянах мэдээллийн сангийн өргөтгөх чадварыг нэмэгдүүлсэн - нэг spinlock-оор хамгаалагдсан нэг RB модны оронд 512 унших, бичих цоожоор хамгаалагдсан 512 RB модны хэш хүснэгтийг ашигласан;
- Процессын тодорхойлогчдын бүрэн бүтэн байдлыг зөвхөн одоогийн ажил, мөн идэвхжүүлсэн (сэрээх) даалгаврын хувьд ихэвчлэн шалгадаг горимыг хэрэгжүүлж, идэвхжүүлсэн. Унтах горимд байгаа эсвэл LKRG-ийн удирддаг цөмийн API-д хандахгүйгээр ажиллаж байгаа бусад ажлуудын хувьд шалгалтыг бага хийдэг.
- LKRG-г нарийн тааруулах шинэ sysctl болон модулийн параметрүүдийг нэмсэн, түүнчлэн хөгжүүлэгчдийн бэлтгэсэн нарийн тааруулах тохиргооны багцаас (профайл) сонгох замаар хялбаршуулсан тохиргоонд зориулсан хоёр sysctl нэмэгдсэн;
- Нэг талаас зөрчлийг илрүүлэх хурд ба хариу арга хэмжээний үр нөлөө, нөгөө талаас гүйцэтгэлд үзүүлэх нөлөөлөл, хуурамч эерэг үр дүн гарах эрсдэл хоорондын тэнцвэрт байдлыг хангах үүднээс үндсэн тохиргоог өөрчилсөн;
- Системийн нэгжийн файлыг LKRG модулийг ачаалах эхэн үед ачаалахаар шинэчилсэн (модульийг идэвхгүй болгохын тулд цөмийн командын мөрийн сонголтыг ашиглаж болно);
Шинэ хувилбарт санал болгож буй оновчлолыг харгалзан LKRG 0.8-ийг ашиглах үед гүйцэтгэлийн бууралтыг анхдагч горимд ("хүнд") 2.5%, гэрлийн горимд ("хөнгөн") 2% гэж тооцсон.
Саяхан зохион байгуулсан
Нэмж дурдахад түгээлтийн хөгжүүлэгч гэдгийг тэмдэглэж болно
LKRG дахь бүрэн бүтэн байдлыг шалгах нь цөмийн болон модулиудын бодит код, өгөгдөл, зарим чухал өгөгдлийн бүтэц, CPU-ийн тохиргоог хадгалагдсан хэшүүд эсвэл холбогдох санах ойн хэсэг, өгөгдлийн бүтэц эсвэл бүртгэлийн хуулбартай харьцуулах замаар хийгддэг. Шалгалтыг таймер болон янз бүрийн үйл явдал тохиолдоход үе үе идэвхжүүлдэг.
Ашиглалтын боломжит хэрэглээг тодорхойлох, халдлагыг блоклох нь цөм нь нөөцөд хандах боломжийг олгохоос өмнөх үе шатанд (жишээлбэл, файл нээхээс өмнө), гэхдээ процесс нь зөвшөөрөлгүй зөвшөөрөл авсны дараа (жишээлбэл, UID-г өөрчлөх) хийгддэг. Зөвшөөрөгдөөгүй үйлдэл илэрсэн тохиолдолд процессууд нь анхдагчаар цуцлагдахаас өөр аргагүй болдог бөгөөд энэ нь олон мөлжлөгийг хаахад хангалттай юм.
Эх сурвалж: opennet.ru