ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරයTL; ඩී. මෙම ලිපියෙන්, අපි ජනප්‍රිය ලිනක්ස් බෙදාහැරීම් පහක කොටුවෙන් පිටත ක්‍රියා කරන දැඩි කිරීමේ යෝජනා ක්‍රම ගවේෂණය කරන්නෙමු. එක් එක් සඳහා, අපි පෙරනිමි කර්නල් වින්‍යාසය ගෙන, සියලුම පැකේජ පටවා, සහ අමුණා ඇති ද්විමය තුළ ආරක්ෂක යෝජනා ක්‍රම විශ්ලේෂණය කළෙමු. සලකා බලන ලද බෙදාහැරීම් වන්නේ OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 සහ 7, මෙන්ම Ubuntu 14.04, 12.04 සහ 18.04 LTS ය.

කැනරි ගොඩගැසීම සහ ස්ථාන-ස්වාධීන කේතය වැනි මූලික යෝජනා ක්‍රම පවා තවමත් සියලු දෙනා විසින් අනුගමනය කර නොමැති බව ප්‍රතිඵල සනාථ කරයි. ප්‍රකාශනයෙන් පසුව ජනවාරි මාසයේ අවධානයට ලක් වූ Stack clash වැනි දුර්වලතා වලින් ආරක්ෂා වීම සම්බන්ධයෙන් සම්පාදකයන්ට තත්වය වඩාත් නරක ය. systemd දුර්වලතා පිළිබඳ තොරතුරු. නමුත් සෑම දෙයක්ම එතරම් බලාපොරොත්තු රහිත නොවේ. ද්විමය සැලකිය යුතු සංඛ්යාවක් මූලික ආරක්ෂණ ක්රම ක්රියාත්මක කරන අතර, ඒවායේ සංඛ්යාව අනුවාදයෙන් අනුවාදය දක්වා වර්ධනය වේ.

OS සහ යෙදුම් මට්ටම්වල Ubuntu 18.04 හි විශාලතම ආරක්ෂණ ක්‍රම ප්‍රමාණයක් ක්‍රියාත්මක වන බව සමාලෝචනයෙන් පෙන්නුම් කර ඇති අතර, Debian 9 අනුගමනය කරයි. අනෙක් අතට, OpenSUSE 12.4, CentOS 7 සහ RHEL 7 ද මූලික ආරක්ෂණ ක්‍රම ක්‍රියාත්මක කරන අතර ගැටුම් ආරක්ෂණ ගොඩගැසී ඇත. වඩා ඝනැති පෙරනිමි පැකේජ කට්ටලයක් සමඟ වඩාත් පුළුල් ලෙස භාවිතා වේ.

හැඳින්වීම

උසස් තත්ත්වයේ මෘදුකාංග සහතික කිරීම අපහසුය. ස්ථිතික කේත විශ්ලේෂණය සහ ගතික ධාවන කාල විශ්ලේෂණය සඳහා උසස් මෙවලම් විශාල සංඛ්‍යාවක් මෙන්ම සම්පාදක සහ ක්‍රමලේඛන භාෂා සංවර්ධනයේ සැලකිය යුතු ප්‍රගතියක් තිබියදීත්, නවීන මෘදුකාංග තවමත් ප්‍රහාරකයින් විසින් නිරන්තරයෙන් සූරාකෑමට ලක්වන අවදානම් වලින් පීඩා විඳිති. උරුම කේතය ඇතුළත් පරිසර පද්ධතිවල තත්ත්වය ඊටත් වඩා නරක ය. එවැනි අවස්ථාවන්හිදී, හැකි සූරාකෑමට ලක්විය හැකි දෝෂ සෙවීමේ සදාකාලික ගැටලුවට අප මුහුණ දෙනවා පමණක් නොව, දැඩි පසුගාමී අනුකූලතා රාමු මගින්ද අපි සීමා වී ඇති අතර, බොහෝ විට සීමිත, හෝ ඊටත් වඩා නරක, අවදානමට ලක්විය හැකි හෝ දෝෂ සහිත කේතයක් සුරැකීමට අපට අවශ්‍ය වේ.

වැඩසටහන් ආරක්ෂා කිරීම හෝ දැඩි කිරීමේ ක්රම ක්රියාත්මක වන්නේ මෙයයි. අපට සමහර ආකාරයේ දෝෂ වැළැක්විය නොහැක, නමුත් අපට ප්‍රහාරකයාගේ ජීවිතය වඩාත් දුෂ්කර කළ හැකි අතර වළක්වා ගැනීමෙන් හෝ වළක්වා ගැනීමෙන් ගැටලුව අර්ධ වශයෙන් විසඳා ගත හැකිය. සූරාකෑම මෙම දෝෂ. එවැනි ආරක්ෂාවක් සියලුම නවීන මෙහෙයුම් පද්ධතිවල භාවිතා වේ, නමුත් ක්‍රම සංකීර්ණත්වය, කාර්යක්ෂමතාව සහ ක්‍රියාකාරිත්වය අතින් බෙහෙවින් වෙනස් වේ: ස්ටැක් කැනරි වලින් සහ ASLR පූර්ණ ආරක්ෂාව සඳහා CFI и ROP. මෙම ලිපියෙන්, අපි පෙරනිමි වින්‍යාසය තුළ වඩාත් ජනප්‍රිය ලිනක්ස් බෙදාහැරීම්වල භාවිතා කරන ආරක්ෂණ ක්‍රම මොනවාදැයි සොයා බලමු, තවද එක් එක් බෙදාහැරීමේ පැකේජ කළමනාකරණ පද්ධති හරහා බෙදා හරින ද්විමය වල ගුණාංගද පරීක්ෂා කරන්නෙමු.

CVE සහ ආරක්ෂාව

"වසරේ වඩාත්ම අවදානමට ලක්විය හැකි යෙදුම්" හෝ "වඩාත්ම අවදානමට ලක්විය හැකි මෙහෙයුම් පද්ධති" වැනි මාතෘකා සහිත ලිපි අපි කවුරුත් දැක ඇත්තෙමු. සාමාන්‍යයෙන් ඔවුන් වැනි දුර්වලතා පිළිබඳ මුළු වාර්තා ගණන පිළිබඳ සංඛ්‍යාලේඛන සපයයි CVE (පොදු අවදානම් සහ නිරාවරණය), ලබාගත්තේ ජාතික අවදානම් දත්ත සමුදාය (NVD) от NIST සහ වෙනත් මූලාශ්ර. පසුව, මෙම යෙදුම් හෝ OS CVE ගණන අනුව ශ්‍රේණිගත කෙරේ. අවාසනාවන්ත ලෙස, CVEs ගැටළු සොයා බැලීමට සහ වෙළෙන්දන් සහ පරිශීලකයින් දැනුවත් කිරීමට ඉතා ප්‍රයෝජනවත් වන අතර, ඔවුන් මෘදුකාංගයේ සැබෑ ආරක්ෂාව ගැන පවසන්නේ අල්ප වශයෙනි.

උදාහරණයක් ලෙස, ලිනක්ස් කර්නලය සඳහා පසුගිය වසර හතර තුළ මුළු CVE සංඛ්‍යාව සහ Ubuntu, Debian, Red Hat Enterprise Linux සහ OpenSUSE යන වඩාත් ජනප්‍රිය සේවාදායක බෙදාහැරීම් පහ සලකා බලන්න.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 1

මෙම ප්‍රස්ථාරය අපට පවසන්නේ කුමක්ද? CVEs වැඩි සංඛ්‍යාවක් යන්නෙන් අදහස් වන්නේ එක් බෙදාහැරීමක් තවත් බෙදා හැරීමකට වඩා අවදානමට ලක්විය හැකි බව ද? පිළිතුරක් නැත. උදාහරණයක් ලෙස, OpenSUSE හෝ RedHat Linux හා සසඳන විට Debian වලට වඩා ශක්තිමත් ආරක්‍ෂක යාන්ත්‍රණයක් ඇති බව මෙම ලිපියෙන් ඔබට පෙනෙනු ඇත, නමුත් Debian වලට වඩා CVEs ඇත. කෙසේ වෙතත්, ඒවා අවශ්‍යයෙන්ම දුර්වල වූ ආරක්‍ෂාව අදහස් නොවේ: CVE තිබීමෙන් පවා අවදානමක් තිබේද යන්න පෙන්නුම් නොකරයි. සූරාකෑවා. බරපතලතා ලකුණු මගින් පෙන්නුම් කරන්නේ කෙසේද යන්නයි බොහෝ විට අවදානමක් සූරාකෑම, නමුත් අවසානයේ සූරාකෑමේ හැකියාව බලපෑමට ලක් වූ පද්ධතිවල පවතින ආරක්ෂාවන් සහ ප්‍රහාරකයන්ගේ සම්පත් සහ හැකියාවන් මත දැඩි ලෙස රඳා පවතී. එපමණක් නොව, CVE වාර්තා නොමැති වීම අන් අය ගැන කිසිවක් නොකියයි ලියාපදිංචි නොකළ හෝ නොදන්නා දුර්වලතා. CVE හි වෙනස, පරීක්ෂණ සඳහා වෙන් කර ඇති සම්පත් හෝ පරිශීලක පදනමේ ප්‍රමාණය ඇතුළුව මෘදුකාංගයේ ගුණාත්මක භාවය හැර වෙනත් සාධක නිසා විය හැක. අපගේ උදාහරණයේ දී, Debian හි වැඩි CVE සංඛ්‍යාවක්, Debian වැඩි මෘදුකාංග පැකේජ නැව්ගත කරන බව සරලව දැක්විය හැක.

ඇත්ත වශයෙන්ම, CVE පද්ධතිය ඔබට සුදුසු ආරක්ෂාවක් නිර්මාණය කිරීමට ඉඩ සලසන ප්රයෝජනවත් තොරතුරු සපයයි. වැඩසටහන අසාර්ථක වීමට හේතු වඩාත් හොඳින් අප තේරුම් ගන්නා තරමට, සූරාකෑමේ හැකි ක්‍රම හඳුනා ගැනීම සහ සුදුසු යාන්ත්‍රණයන් සංවර්ධනය කිරීම පහසුය හඳුනාගැනීම සහ ප්රතිචාරය. රූපයේ. 2 පසුගිය වසර හතර තුළ සියලුම බෙදාහැරීම් සඳහා දුර්වලතා වර්ග පෙන්වයි (ප්රභවය) බොහෝ CVEs පහත සඳහන් කාණ්ඩවලට අයත් වන බව වහාම පැහැදිලි වේ: සේවා ප්‍රතික්ෂේප කිරීම (DoS), කේත ක්‍රියාත්මක කිරීම, පිටාර ගැලීම, මතක දූෂණය, තොරතුරු කාන්දු වීම (පිටකිරීම) සහ වරප්‍රසාද උත්සන්න කිරීම. බොහෝ CVEs විවිධ කාණ්ඩවලට කිහිප වතාවක් ගණන් කළද, පොදුවේ එකම ගැටළු වසරින් වසර පවතී. ලිපියේ ඊළඟ කොටසේදී, මෙම දුර්වලතා සූරාකෑම වැළැක්වීම සඳහා විවිධ ආරක්ෂණ යෝජනා ක්රම භාවිතා කිරීම අපි ඇගයීමට ලක් කරමු.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 2

කාර්යයන්

මෙම ලිපියෙන් අපි පහත ප්‍රශ්නවලට පිළිතුරු දීමට අදහස් කරමු:

  • විවිධ ලිනක්ස් බෙදාහැරීම් වල ආරක්ෂාව කුමක්ද? කර්නලය සහ පරිශීලක අවකාශ යෙදුම්වල පවතින ආරක්ෂණ යාන්ත්‍රණ මොනවාද?
  • බෙදාහැරීම් හරහා කාලයත් සමඟ ආරක්ෂක යාන්ත්‍රණ භාවිතා කිරීම වෙනස් වී ඇත්තේ කෙසේද?
  • එක් එක් බෙදාහැරීම සඳහා පැකේජ සහ පුස්තකාලවල සාමාන්‍ය පරායත්තතා මොනවාද?
  • එක් එක් ද්විමය සඳහා ක්රියාත්මක වන ආරක්ෂණ මොනවාද?

බෙදාහැරීම් තෝරාගැනීම

බෙදාහැරීමේ ස්ථාපනයන් පිළිබඳ නිවැරදි සංඛ්‍යාලේඛන සොයා ගැනීම දුෂ්කර බව පෙනී යයි, බොහෝ අවස්ථාවලදී බාගත කිරීම් ගණන සත්‍ය ස්ථාපනයන් ගණන නොපෙන්වයි. කෙසේ වෙතත්, Unix ප්‍රභේද බොහෝ සේවාදායක පද්ධති වලින් සමන්විත වේ (වෙබ් සර්වර් වල 69,2%, විසින් සංඛ්‍යාලේඛන W3techs සහ වෙනත් මූලාශ්ර), සහ ඔවුන්ගේ කොටස නිරන්තරයෙන් වර්ධනය වේ. මේ අනුව, අපගේ පර්යේෂණ සඳහා අපි වේදිකාවේ ඇති පෙට්ටියෙන් පිටත බෙදාහැරීම් කෙරෙහි අවධානය යොමු කළෙමු Google වලාකුළු. විශේෂයෙන්, අපි පහත OS තෝරා ගත්තෙමු:

බෙදා හැරීම / අනුවාදය
හරය
ගොඩනඟන්න

OpenSUSE 12.4
4.12.14-95.3-පෙරනිමිය
#1 SMP බදාදා දෙසැම්බර් 5 06:00:48 UTC 2018 (63a8d29)

ඩේබියන් 9 (දිගු)
4.9.0-8-amd64
#1 SMP Debian 4.9.130-2 (2018-10-27)

CentOS 6.10
2.6.32-754.10.1.el6.x86_64
#1 SMP අඟහරුවාදා 15 17:07:28 UTC 2019

CentOS 7
3.10.0-957.5.1.el7.x86_64
#1 SMP සිකුරාදා පෙබරවාරි 1 14:54:57 UTC 2019

Red Hat Enterprise Linux Server 6.10 (Santiago)
2.6.32-754.9.1.el6.x86_64
#1 SMP බදාදා නොවැම්බර් 21 15:08:21 EST 2018

Red Hat Enterprise Linux සේවාදායකය 7.6 (Maipo)
3.10.0-957.1.3.el7.x86_64
#1 SMP Thu නොවැම්බර් 15 17:36:42 UTC 2018

Ubuntu 14.04 (විශ්වාසවන්ත Tahr)
4.4.0-140-සාමාන්‍ය

#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20…

උබුන්ටු 16.04 (Xenial Xerus)
4.15.0-1026-gcp
#27~16.04.1-Ubuntu SMP සිකුරාදා දෙසැම්බර් 7 09:59:47 UTC 2018

උබුන්ටු 18.04 (බයෝනික් බීවර්)
4.15.0-1026-gcp
#27-Ubuntu SMP Thu දෙසැම්බර් 6 18:27:01 UTC 2018

වගුව 1

විශ්ලේෂණය

අපි පෙරනිමි කර්නල් වින්‍යාසය මෙන්ම කොටුවෙන් පිටත එක් එක් බෙදාහැරීමේ පැකේජ කළමනාකරු හරහා ලබා ගත හැකි පැකේජවල ගුණාංග අධ්‍යයනය කරමු. මේ අනුව, අපි එක් එක් බෙදාහැරීමේ පෙරනිමි දර්පණ වලින් පැකේජ පමණක් සලකා බලමු, අස්ථායී ගබඩාවලින් (ඩේබියන් 'පරීක්ෂණ' දර්පණ වැනි) පැකේජ නොසලකා හරිමින් සහ තෙවන පාර්ශවීය පැකේජ (සම්මත දර්පණ වලින් Nvidia පැකේජ වැනි). අතිරේකව, අපි අභිරුචි කර්නල් සම්පාදනය හෝ ආරක්‍ෂාව දැඩි කළ වින්‍යාසයන් නොසලකමු.

කර්නල් වින්‍යාස විශ්ලේෂණය

අපි පදනම් කරගත් විශ්ලේෂණ පිටපතක් යෙදුවෙමු නොමිලේ kconfig පරීක්ෂක. අපි නම් කර ඇති බෙදාහැරීම්වල කොටුවෙන් පිටත ආරක්ෂණ පරාමිතීන් දෙස බලා ඒවා ලැයිස්තුව සමඟ සංසන්දනය කරමු. මූලික ස්වයං ආරක්ෂක ව්‍යාපෘතිය (KSPP). එක් එක් වින්‍යාස විකල්පය සඳහා, වගුව 2 අපේක්ෂිත සැකසුම විස්තර කරයි: පිරික්සුම් කොටුව KSSP නිර්දේශයන්ට අනුකූල වන බෙදාහැරීම් සඳහා වේ (කොන්දේසි පැහැදිලි කිරීම සඳහා පහත බලන්න). මෙහි; මෙම ආරක්‍ෂක ක්‍රම කොපමණ ප්‍රමාණයක් ඇති වූවාද සහ ඒවා නොමැති විට පද්ධතියක් හැක් කරන්නේ කෙසේද යන්න අපි ඉදිරි ලිපි වලින් පැහැදිලි කරන්නෙමු).

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය

සාමාන්‍යයෙන්, නව කර්නල් වලට කොටුවෙන් පිටත දැඩි සැකසුම් ඇත. උදාහරණයක් ලෙස, 6.10 කර්නලයේ CentOS 6.10 සහ RHEL 2.6.32 වැනි නව කර්නලවල ක්‍රියාත්මක කරන ලද බොහෝ තීරණාත්මක විශේෂාංග නොමැත. SMAP, දැඩි RWX අවසර, ලිපින අහඹුකරණය හෝ copy2usr ආරක්ෂාව. වගුවේ ඇති බොහෝ වින්‍යාස විකල්පයන් කර්නලයේ පැරණි අනුවාදවල නොමැති අතර යථාර්ථයේ දී අදාළ නොවන බව සැලකිල්ලට ගත යුතුය - මෙය තවමත් නිසි ආරක්ෂාවක් නොමැතිකම ලෙස වගුවේ දක්වා ඇත. එලෙසම, ලබා දී ඇති අනුවාදයක වින්‍යාස කිරීමේ විකල්පයක් නොමැති නම් සහ ආරක්ෂාවට එම විකල්පය අක්‍රිය කිරීමට අවශ්‍ය නම්, මෙය සාධාරණ වින්‍යාසයක් ලෙස සැලකේ.

ප්‍රතිඵල අර්ථකථනය කිරීමේදී සලකා බැලිය යුතු තවත් කරුණක්: ප්‍රහාරක පෘෂ්ඨය වැඩි කරන සමහර කර්නල් වින්‍යාසයන් ආරක්ෂාව සඳහා ද භාවිතා කළ හැක. එවැනි උදාහරණ සඳහා uprobes සහ kprobes, කර්නල් මොඩියුල සහ BPF/eBPF ඇතුළත් වේ. අපගේ නිර්දේශය නම්, ඉහත යාන්ත්‍රණ භාවිතා කිරීම සුළුපටු නොවන බැවින් සහ ඔවුන්ගේ සූරාකෑම මඟින් ද්වේෂසහගත ක්‍රියාකාරීන් දැනටමත් පද්ධතිය තුළ ස්ථාවර වී ඇති බව උපකල්පනය කරන බැවින්, සැබෑ ආරක්ෂාව සැපයීම සඳහා භාවිතා කිරීමයි. නමුත් මෙම විකල්පයන් සක්රිය කර ඇත්නම්, පද්ධති පරිපාලක අපයෝජනය සඳහා ක්රියාකාරීව නිරීක්ෂණය කළ යුතුය.

වගුව 2 හි ඇතුළත් කිරීම් දෙස තවදුරටත් බලන විට, තොරතුරු කාන්දු වීම සහ ගොඩවල්/ගොඩවල් පිටාර ගැලීම් වැනි දුර්වලතා සූරාකෑමෙන් ආරක්ෂා කිරීම සඳහා නවීන කර්නල් විකල්ප කිහිපයක් සපයන බව අපට පෙනේ. කෙසේ වෙතත්, වඩාත්ම මෑත ජනප්‍රිය බෙදාහැරීම් පවා වඩාත් සංකීර්ණ ආරක්ෂාවක් තවමත් ක්‍රියාත්මක කර නොමැති බව අපි දකිමු (උදාහරණයක් ලෙස, පැච් සමඟ ආරක්ෂාව) හෝ කේත නැවත භාවිත ප්‍රහාරවලට එරෙහිව නවීන ආරක්ෂාව (උදා. කේතය සඳහා R^X වැනි යෝජනා ක්‍රම සමඟ සසම්භාවී කිරීමේ සංයෝජනය) තත්වය වඩාත් නරක අතට හැරීම සඳහා, මෙම වඩාත් දියුණු ආරක්ෂක පවා සම්පූර්ණ පරාසයක ප්‍රහාර වලින් ආරක්ෂා නොවේ. එබැවින්, ධාවන කාල සූරාකෑම හඳුනා ගැනීම සහ වැළැක්වීම ලබා දෙන විසඳුම් සමඟින් ස්මාර්ට් වින්‍යාසයන් සම්පූර්ණ කිරීම පද්ධති පරිපාලකයින්ට ඉතා වැදගත් වේ.

යෙදුම් විශ්ලේෂණය

විවිධ බෙදාහැරීම්වල විවිධ පැකේජ ලක්ෂණ, සම්පාදන විකල්ප, පුස්තකාල පරායත්තතා ආදිය ඇති බව පුදුමයක් නොවේ. වෙනස්කම් සඳහා පවා පවතී. සම්බන්ධයි යැපුම් කුඩා සංඛ්‍යාවක් සහිත බෙදාහැරීම් සහ පැකේජ (උදාහරණයක් ලෙස, Ubuntu හෝ Debian මත coreutils). වෙනස්කම් ඇගයීම සඳහා, අපි පවතින සියලුම පැකේජ බාගත කර, ඒවායේ අන්තර්ගතය උපුටා ගත් අතර, ද්විමය සහ පරායත්තතා විශ්ලේෂණය කළෙමු. එක් එක් පැකේජය සඳහා, අපි එය රඳා පවතින අනෙකුත් පැකේජ පිළිබඳව නිරීක්ෂණය කළ අතර, එක් එක් ද්විමය සඳහා, අපි එහි පරායත්තතා නිරීක්ෂණය කළෙමු. මෙම කොටසේදී අපි නිගමන කෙටියෙන් සාරාංශ කරමු.

බෙදාහැරීම්

සමස්තයක් වශයෙන්, අපි සියලු බෙදාහැරීම් සඳහා පැකේජ 361 බාගත කර, පෙරනිමි දර්පණ වලින් පැකේජ පමණක් උපුටා ගත්තෙමු. මූලාශ්‍ර, අකුරු, යනාදී ELF ක්‍රියාත්මක කළ නොහැකි පැකේජ අපි නොසලකා හැරියෙමු. පෙරීමෙන් පසු, 556 පැකේජ ඉතිරිව ඇති අතර, එහි සම්පූර්ණ ද්විමය 129 ක් අඩංගු වේ. බෙදාහැරීම් හරහා පැකේජ සහ ගොනු බෙදා හැරීම රූපයේ දැක්වේ. 569.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 3

බෙදා හැරීම වඩාත් නවීන වන තරමට එහි අඩංගු පැකේජ සහ ද්විමය තාර්කික බව ඔබට පෙනෙනු ඇත. කෙසේ වෙතත්, Ubuntu සහ Debian පැකේජ වල CentOS, SUSE සහ RHEL වලට වඩා බොහෝ ද්විමය (ක්‍රියාත්මක කළ හැකි සහ ගතික මොඩියුල සහ පුස්තකාල) ඇතුළත් වේ, එය උබුන්ටු සහ ඩේබියන් හි ප්‍රහාරක මතුපිටට බලපෑම් කළ හැකිය (සංඛ්‍යා සියලු අනුවාදවල සියලුම ද්විමය පිළිබිඹු කරන බව සටහන් කළ යුතුය. පැකේජය, එනම්, සමහර ගොනු කිහිප වතාවක් විශ්ලේෂණය කරනු ලැබේ). ඔබ පැකේජ අතර පරායත්තතා සලකා බලන විට මෙය විශේෂයෙන් වැදගත් වේ. මේ අනුව, තනි පැකේජ ද්විමය තුළ ඇති අවදානමක් පරිසර පද්ධතියේ බොහෝ කොටස් වලට බලපෑ හැකිය, අවදානමට ලක්විය හැකි පුස්තකාලයක් එය ආනයනය කරන සියලුම ද්විමය කෙරෙහි බලපෑ හැකිය. ආරම්භක ලක්ෂ්‍යයක් ලෙස, විවිධ මෙහෙයුම් පද්ධතිවල පැකේජ අතර පරායත්තතා ගණන බෙදා හැරීම දෙස බලමු:

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 4

සෑම බෙදාහැරීමකම පාහේ, පැකේජවලින් 60%කට අවම වශයෙන් පරායත්තතා 10ක්වත් ඇත. මීට අමතරව, සමහර පැකේජවල සැලකිය යුතු ලෙස විශාල පරායත්ත සංඛ්‍යාවක් ඇත (100 ට වඩා වැඩි). ප්‍රතිලෝම පැකේජ පරායත්තතා සඳහා ද මෙය අදාළ වේ: බලාපොරොත්තු වූ පරිදි, බෙදාහැරීමේ දී වෙනත් බොහෝ පැකේජ විසින් පැකේජ කිහිපයක් භාවිතා කරනු ලැබේ, එබැවින් එම තෝරාගත් ස්වල්පයේ ඇති අවදානම් ඉහළ අවදානමක් ඇත. උදාහරණයක් ලෙස, පහත වගුව SLES, Centos 20, Debian 7 සහ Ubuntu 9 හි උපරිම ප්‍රතිලෝම පරායත්තතා සංඛ්‍යාව සහිත පැකේජ 18.04 ලැයිස්තුගත කරයි (සෑම කොටුවක්ම පැකේජය සහ ප්‍රතිලෝම පරායත්තතා ගණන දක්වයි).

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
වගුව 3

සිත්ගන්නා කරුණක්. විශ්ලේෂණය කරන ලද සියලුම OS x86_64 ගෘහ නිර්මාණ ශිල්පය සඳහා ගොඩනගා ඇතත්, බොහෝ පැකේජවල නිර්වචනය x86_64 සහ x86 ලෙස නිර්වචනය කර ඇතත්, බොහෝ විට පැකේජ 5 හි පෙන්වා ඇති පරිදි අනෙකුත් ගෘහ නිර්මාණ සඳහා ද්විමය අඩංගු වේ. XNUMX.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 5

මීළඟ කොටසේදී, අපි විශ්ලේෂණය කරන ලද ද්විමය වල ලක්ෂණ ගැන සොයා බලමු.

ද්විමය ගොනු ආරක්ෂණ සංඛ්යා ලේඛන

අවම වශයෙන්, ඔබ දැනට පවතින ද්විමය සඳහා මූලික ආරක්ෂක විකල්ප කට්ටලයක් ගවේෂණය කළ යුතුය. ලිනක්ස් බෙදාහැරීම් කිහිපයක් එවැනි චෙක්පත් සිදු කරන ස්ක්‍රිප්ට් සමඟ පැමිණේ. උදාහරණයක් ලෙස, Debian/Ubuntu සතුව එවැනි ස්ක්‍රිප්ට් එකක් තිබේ. මෙන්න ඔහුගේ කාර්යයේ උදාහරණයක්:

$ hardening-check $(which docker)
/usr/bin/docker:
 Position Independent Executable: yes
 Stack protected: yes
 Fortify Source functions: no, only unprotected functions found!
 Read-only relocations: yes
 Immediate binding: yes

පිටපත පහක් පරීක්ෂා කරයි ආරක්ෂණ කාර්යයන්:

  • Position Independent Executable (PIE): ASLR කර්නලය තුළ සක්‍රීය කර ඇත්නම්, සසම්භාවී බව ලබා ගැනීම සඳහා වැඩසටහනක පෙළ කොටස මතකයේ ගෙන යා හැකිද යන්න දක්වයි.
  • Stack Protected: Stack collision attacks වලින් ආරක්ෂා වීමට Stack canaries සබල කර තිබේද යන්න.
  • Fortify Source: අනාරක්ෂිත කාර්යයන් (උදාහරණයක් ලෙස, strcpy) ඒවායේ වඩාත් ආරක්ෂිත සගයන් සමඟ ප්‍රතිස්ථාපනය කරන්නේද, සහ ධාවන වේලාවේදී පරීක්ෂා කරන ලද ඇමතුම් ඒවායේ පරීක්ෂා නොකළ සගයන් සමඟ ප්‍රතිස්ථාපනය වේ (උදාහරණයක් ලෙස, __memcpy_chk වෙනුවට memcpy).
  • කියවීමට පමණක් නැවත ස්ථානගත කිරීම් (RELRO): නැවත ස්ථානගත කිරීමේ වගු ඇතුළත් කිරීම් සලකුණු කර තිබේද යන්න ක්‍රියාත්මක කිරීම ආරම්භ වීමට පෙර ඒවා ක්‍රියාරම්භක කර ඇත්නම් කියවීමට පමණි.
  • ක්‍ෂණික බන්ධනය: වැඩසටහන් ක්‍රියාත්මක කිරීම ආරම්භ වීමට පෙර ධාවන කාල සම්බන්ධකය සියලු චලනයන්ට ඉඩ දෙන්නේද (මෙය සම්පූර්ණ RELRO එකකට සමාන වේ).

ඉහත යාන්ත්‍රණ ප්‍රමාණවත්ද? අවාසනාවකට නැත. ඉහත ආරක්‍ෂාව සියල්ල මඟ හැරීමට දන්නා ක්‍රම තිබේ, නමුත් ආරක්‍ෂාව දැඩි වන තරමට ප්‍රහාරකයාට තීරුව ඉහළ යයි. උදාහරණ වශයෙන්, RELRO බයිපාස් ක්‍රම PIE සහ ක්ෂණික බන්ධන ක්‍රියාත්මක වන්නේ නම් අයදුම් කිරීම වඩාත් අපහසු වේ. ඒ හා සමානව, සම්පූර්ණ ASLR වැඩ සූරාකෑමක් නිර්මාණය කිරීමට අමතර වැඩ අවශ්ය වේ. කෙසේ වෙතත්, නවීන ප්‍රහාරකයින් එවැනි ආරක්ෂණයන් සපුරාලීමට දැනටමත් සූදානම්ව සිටිති: ඔවුන්ගේ නොපැමිණීම අත්‍යවශ්‍යයෙන්ම හැක් කිරීම වේගවත් කරයි. එබැවින් මෙම පියවර අවශ්‍ය යැයි සැලකීම අත්‍යවශ්‍ය වේ අවම.

මෙම සහ තවත් ක්‍රම තුනකින් ප්‍රශ්නගත බෙදාහැරීම්වල ඇති ද්විමය ගොනු කොපමණ ප්‍රමාණයක් ආරක්‍ෂා කර තිබේද යන්න අධ්‍යයනය කිරීමට අපට අවශ්‍ය විය:

  • ක්‍රියාත්මක කළ නොහැකි බිටු (NX) ස්ටැක් ගොඩ වැනි ක්‍රියාත්මක නොකළ යුතු ඕනෑම කලාපයක ක්‍රියාත්මක වීම වළක්වයි.
  • RPATH/RUNPATH ගැළපෙන පුස්තකාල සොයා ගැනීමට ගතික කාරකය භාවිතා කරන ක්‍රියාත්මක කිරීමේ මාර්ගය දක්වයි. පළමු එක තමයි අනිවාර්ය ඕනෑම නවීන පද්ධතියක් සඳහා: එහි නොපැවතීම ප්‍රහාරකයන්ට අත්තනෝමතික ලෙස ගෙවීම මතකයට ලිවීමට සහ එය ක්‍රියාත්මක කිරීමට ඉඩ සලසයි. දෙවැන්න සඳහා, වැරදි ක්‍රියාත්මක කිරීමේ මාර්ග වින්‍යාස කිරීම් ගැටළු ගණනාවකට තුඩු දිය හැකි විශ්වාස කළ නොහැකි කේතයක් හඳුන්වා දීමට උපකාරී වේ (උදා. වරප්රසාද උත්සන්න කිරීම, මෙන්ම වෙනත් ගැටළු).
  • Stack collision protection මගින් මතකයේ අනෙකුත් ප්‍රදේශ (ගොඩවල් වැනි) අතිච්ඡාදනය වීමට හේතු වන ප්‍රහාර වලින් ආරක්ෂාව සපයයි. මෑත කාලීන සූරාකෑම් අපයෝජනයට ලක්ව ඇත systemd heap collision vulnerabilities, අපගේ දත්ත කට්ටලයට මෙම යාන්ත්‍රණය ඇතුළත් කිරීම සුදුසු බව අපට හැඟුණි.

එහෙනම් වැඩි කතා නැතුව අපි ගණන් වලට බහිමු. 4 සහ 5 වගු වල පිළිවෙළින් ක්‍රියාත්මක කළ හැකි ගොනු සහ විවිධ බෙදාහැරීම් වල පුස්තකාල විශ්ලේෂණයේ සාරාංශයක් අඩංගු වේ.

  • ඔබට පෙනෙන පරිදි, දුර්ලභ ව්යතිරේක සහිතව NX ආරක්ෂාව සෑම තැනකම ක්රියාත්මක වේ. විශේෂයෙන්ම, CentOS, RHEL සහ OpenSUSE වලට සාපේක්ෂව Ubuntu සහ Debian බෙදාහැරීම් වල එහි භාවිතය තරමක් අඩු බව කෙනෙකුට සටහන් කළ හැක.
  • ස්ටැක් කැනරි බොහෝ ස්ථානවල අතුරුදහන් වී ඇත, විශේෂයෙන් පැරණි කර්නල් සමඟ බෙදා හැරීමේදී. Centos, RHEL, Debian සහ Ubuntu හි නවතම බෙදාහැරීම්වල යම් ප්‍රගතියක් දක්නට ලැබේ.
  • Debian සහ Ubuntu 18.04 හැර, බොහෝ බෙදාහැරීම් වලට දුර්වල PIE සහාය ඇත.
  • ස්ටැක් ගැටුම් ආරක්ෂණය OpenSUSE, Centos 7 සහ RHEL 7 හි දුර්වල වන අතර අනෙක් ඒවා තුළ පාහේ නොපවතී.
  • නවීන කර්නල් සහිත සියලුම බෙදාහැරීම් වලට RELRO සඳහා යම් සහයක් ඇත, Ubuntu 18.04 ප්‍රමුඛ වන අතර Debian දෙවනුව පැමිණේ.

දැනටමත් සඳහන් කර ඇති පරිදි, මෙම වගුවේ ඇති ප්‍රමිතික ද්විමය ගොනුවේ සියලුම අනුවාද සඳහා සාමාන්‍යය වේ. ඔබ ගොනු වල නවතම අනුවාද පමණක් බලන්නේ නම්, සංඛ්යා වෙනස් වනු ඇත (උදාහරණයක් ලෙස, බලන්න PIE ක්‍රියාත්මක කිරීමත් සමඟ ඩේබියන් ප්‍රගතිය) එපමණක් නොව, බොහෝ බෙදාහැරීම් සාමාන්‍යයෙන් සංඛ්‍යාලේඛන ගණනය කිරීමේදී ද්විමය තුළ ශ්‍රිත කිහිපයක ආරක්‍ෂාව පමණක් පරීක්‍ෂා කරයි, නමුත් අපගේ විශ්ලේෂණය මගින් පෙන්නුම් කරන්නේ දැඩි වූ ශ්‍රිතවල සත්‍ය ප්‍රතිශතයයි. එබැවින්, ශ්‍රිත 5 න් 50 ක් ද්විමය තුළ ආරක්‍ෂා කරන්නේ නම්, අපි එයට ලකුණු 0,1 ක් ලබා දෙන්නෙමු, එය ශක්තිමත් වන ශ්‍රිතවලින් 10% ට අනුරූප වේ.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
වගුව 4. රූපයේ දැක්වෙන ක්‍රියාත්මක කළ හැකි ගොනු සඳහා ආරක්ෂක ලක්ෂණ. 3 (ක්‍රියාත්මක කළ හැකි සම්පූර්ණ ගොනු සංඛ්‍යාවේ ප්‍රතිශතයක් ලෙස අදාළ කාර්යයන් ක්‍රියාත්මක කිරීම)

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
වගුව 5. රූපයේ දැක්වෙන පුස්තකාල සඳහා ආරක්ෂක ලක්ෂණ. 3 (සම්පූර්ණ පුස්තකාල සංඛ්‍යාවෙන් ප්‍රතිශතයක් ලෙස අදාළ කාර්යයන් ක්‍රියාත්මක කිරීම)

ඉතින් ප්‍රගතියක් තියෙනවද? නියත වශයෙන්ම තිබේ: මෙය තනි බෙදාහැරීම් සඳහා සංඛ්‍යාලේඛන වලින් දැකිය හැකිය (උදාහරණයක් ලෙස, ඩේබියන්), මෙන්ම ඉහත වගු වලින්. රූපයේ උදාහරණයක් ලෙස. Ubuntu LTS 6 හි අනුප්‍රාප්තික බෙදාහැරීම් තුනක ආරක්ෂණ යාන්ත්‍රණ ක්‍රියාත්මක කිරීම රූප සටහන 5 මගින් පෙන්නුම් කරයි (අප විසින් ගොඩගැසීම් ආරක්ෂණ සංඛ්‍යාලේඛන ඉවත් කර ඇත). අනුවාදයෙන් අනුවාදයට වැඩි වැඩියෙන් ගොනු ස්ටැක් කැනරි සඳහා සහය දක්වන බව අපි දකිමු, එසේම වැඩි වැඩියෙන් ද්විමය පූර්ණ RELRO ආරක්ෂාව සමඟ නැව්ගත කරනු ලැබේ.

ද්විමය මිලියන ගණනක් පසුව. ලිනක්ස් ශක්තිමත් වූ ආකාරය
. 6

අවාසනාවකට, විවිධ බෙදාහැරීම්වල ක්‍රියාත්මක කළ හැකි ගොනු ගණනාවකට තවමත් ඉහත ආරක්‍ෂාව කිසිවක් නොමැත. උදාහරණයක් ලෙස, Ubuntu 18.04 දෙස බලන විට, ඔබට ngetty binary (getty ප්‍රතිස්ථාපනයක්) මෙන්ම mksh සහ lksh shells, picolisp පරිවර්තකය, nvidia-cuda-toolkit පැකේජ (GPU-accelerated යෙදුම් සඳහා ජනප්‍රිය පැකේජයක්) දැකගත හැකි වනු ඇත. යන්ත්‍ර ඉගෙනුම් රාමු), සහ klibc -utils වැනි. ඒ හා සමානව, mandos-Client ද්විමය (සංකේතනය කළ ගොනු පද්ධති සහිත යන්ත්‍ර ස්වයංක්‍රීයව නැවත පණගැන්වීමට ඔබට ඉඩ සලසන පරිපාලන මෙවලමක්) මෙන්ම rsh-redone-client (rsh සහ rlogin නැවත ක්‍රියාත්මක කිරීම) NX ආරක්‍ෂාවකින් තොරව, ඔවුන්ට SUID අයිතිවාසිකම් තිබුණද: (. එසේම, suid ද්විමය ද්විමය ස්ට්ටික් කැනරි වැනි මූලික ආරක්ෂාවක් නොමැත (උදාහරණයක් ලෙස, Xorg පැකේජයෙන් Xorg.wrap ද්විමය).

සාරාංශය සහ අවසාන අදහස්

මෙම ලිපියෙන් අපි නවීන ලිනක්ස් බෙදාහැරීම් වල ආරක්ෂක විශේෂාංග කිහිපයක් ඉස්මතු කර ඇත. නවතම Ubuntu LTS බෙදාහැරීම (18.04) සාමාන්‍යයෙන් Ubuntu 14.04, 12.04 සහ Debian 9 වැනි සාපේක්ෂව නව කර්නල් සහිත බෙදාහැරීම් අතර ශක්තිමත්ම OS සහ යෙදුම් මට්ටමේ ආරක්ෂාව ක්‍රියාත්මක කරන බව විශ්ලේෂණයෙන් පෙන්නුම් කරන ලදී. කෙසේ වෙතත්, පරීක්ෂා කරන ලද බෙදාහැරීම් CentOS, RHEL සහ අපගේ කට්ටලය තුළ OpenSUSE පෙරනිමියෙන් ඝනත්වයකින් යුත් පැකේජ කට්ටලයක් නිපදවන අතර නවතම අනුවාදවල (CentOS සහ RHEL) Debian මත පදනම් වූ තරඟකරුවන් (Debian සහ Ubuntu) හා සසඳන විට ඒවාට වැඩි ප්‍රතිශතයක් ඝට්ටන ආරක්ෂණ ප්‍රතිශතයක් ඇත. CentOS සහ RedHat අනුවාද සංසන්දනය කිරීමේදී, 6 සිට 7 දක්වා අනුවාද වල ස්ටැක් කැනරි සහ RELRO ක්‍රියාවට නැංවීමේ විශාල වැඩිදියුණු කිරීම් අපි දකිමු, නමුත් සාමාන්‍යයෙන් CentOS හි RHEL වලට වඩා ක්‍රියාත්මක කර ඇති විශේෂාංග වැඩිය. සාමාන්‍යයෙන්, සියලුම බෙදාහැරීම් PIE ආරක්ෂාව කෙරෙහි විශේෂ අවධානයක් යොමු කළ යුතු අතර, එය Debian 9 සහ Ubuntu 18.04 හැරුණු විට, අපගේ දත්ත කට්ටලයේ ද්විමය වලින් 10%කට වඩා අඩු ප්‍රමාණයක ක්‍රියාත්මක වේ.

අවසාන වශයෙන්, අප විසින් පර්යේෂණය අතින් සිදු කළද, බොහෝ ආරක්ෂක මෙවලම් පවතින බව සටහන් කළ යුතුය (උදා. ලිනිස්, කොටි, හබල්), විශ්ලේෂණය සිදු කරන අතර අනාරක්ෂිත වින්‍යාසයන් වළක්වා ගැනීමට උපකාරී වේ. අවාසනාවකට මෙන්, සාධාරණ වින්‍යාසයන්හි ශක්තිමත් ආරක්ෂාවක් පවා සූරාකෑම් නොමැතිකම සහතික නොකරයි. සහතික කිරීම අත්‍යවශ්‍ය බව අපි තරයේ විශ්වාස කරන්නේ එබැවිනි තත්‍ය කාලීන ප්‍රහාර විශ්වාසනීය අධීක්ෂණය සහ වැළැක්වීම, සූරාකෑමේ රටා කෙරෙහි අවධානය යොමු කිරීම සහ ඒවා වැළැක්වීම.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න