Miliona binarësh më vonë. Si u forcua Linux

Miliona binarësh më vonë. Si u forcua LinuxTL;DR. Në këtë artikull ne shqyrtojmë skemat mbrojtëse (hardening schemes) që funksionojnë nga kutia në pesë distribucione të njohura Linux. Për secilin kemi marrë konfigurimin e bërthames si ndihmë, kemi shkarkuar të gjitha paketat dhe kemi analizuar skemat e mbrojtjes në skedarët binarë të përfshirë. Diskutohen distribucionet OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 dhe 7, si dhe Ubuntu 14.04, 12.04 dhe 18.04 LTS.

Të dhënat konfirmojnë se madje edhe skemat bazë, si kanarinat në skedë dhe kodi i pavarur nga pozita, ende nuk përdoren nga të gjithë. Situata është edhe më e keqe me kompjilatorët kur bëhet fjalë për mbrojtjen nga dobësitë siç është përplasjeja e skedave (stack clash), e cila ka marrë vëmendje në janar pas publikimit të informacionit mbi dobësitë në systemd. Por nuk është gjithçka kaq dëshpëruese. Në një pjesë të madhe të binarëve janë zbatuar metoda të bazuara mbrojtëse, dhe numri i tyre po rritet nga versioni në version.

Kontrolli tregoi se numri më i madh i metodave të mbrojtjes është realizuar në Ubuntu 18.04 në nivelin e OS dhe aplikacioneve, të ndjekur nga Debian 9. Nga ana tjetër, në OpenSUSE 12.4, CentOS 7 dhe RHEL 7 gjithashtu janë realizuar skemat themelore të mbrojtjes, dhe mbrojtja nga përplasje të stack-ut aplikohet edhe më gjerësisht në një grup shumë më të dendur paketash siç është në mënyrë të parazgjedhur.

Hyrje

ËshtĂ« e vĂ«shtirĂ« tĂ« sigurohet njĂ« cilĂ«si e lartĂ« e softuerit. MegjithĂ«se ekziston njĂ« numĂ«r i madh mjetesh tĂ« avancuara pĂ«r analizĂ«n statike tĂ« kodit dhe analizĂ«n dinamike gjatĂ« ekzekutimit, si dhe pĂ«rparime tĂ« konsiderueshme nĂ« zhvillimin e kompajlerĂ«ve dhe gjuhĂ«ve tĂ« programimit, softueri modern ende vuajti nga dobĂ«si qĂ« vazhdojnĂ« tĂ« shfrytĂ«zohen nga sulmuesit. Situata Ă«shtĂ« akoma mĂ« e keqe nĂ« ekosistemet qĂ« pĂ«rfshijnĂ« kod tĂ« vjetruar. NĂ« kĂ«to raste, ne jo vetĂ«m qĂ« pĂ«rballemi me problemin e pĂ«rhershĂ«m tĂ« identifikimit tĂ« gabimeve qĂ« mund tĂ« shfrytĂ«zohen, por jemi tĂ« kufizuar nga korniza rigoroze tĂ« pĂ«rputhshmĂ«risĂ« prapa, tĂ« cilat shpesh kĂ«rkojnĂ« qĂ« tĂ« ruajmĂ« kodin e kufizuar, dhe akoma mĂ« keq, tĂ« dobĂ«t ose me probleme.

Këtu hyjnë në lojë metodat e mbrojtjes ose forcuese (hardening). Disa lloje gabimesh ne nuk mund t'i parandalojmë, por mund t'i bëjmë jetën një sulmuesi më të vështirë dhe të zgjidhim pjesërisht problemin duke parandaluar ose penguar këto gabime. eksploatimi Kjo mbrojtje përdoret në të gjitha sistemet operuese moderne, por metodat ndryshojnë shumë në kompleksitet, eficiencë dhe performancë: nga kanaret e stackut (stack canaries) dhe ASLR deri te mbrojtjet e plota. CFI dhe ROP. Në këtë artikull do të shqyrtojmë se cilat metoda mbrojtjeje përdoren në shpërndarjet më të njohura të Linux në konfigurimin e tyre siç është parazgjedhur, si dhe do të studiojmë vetitë e binarëve që shpërndahen përmes sistemeve të menaxhimit të paketave për çdo shpërndarje.

CVE dhe siguria

Të gjithë ne kemi parë artikuj me tituj të tillë si "Aplikacionet më të prekura të vitit" ose "Sistemet operuese më të prekura." Zakonisht, atje paraqiten statistika për numrin e përgjithshëm të regjistrimeve të dobësive, të tilla si CVE (Dobësitë dhe Ekspozitat e zakonshme), e marrë nga Baza Kombëtare e Dobësive (NVD) nga NIST dhe burimeve të tjera. Më vonë, këto aplikacione ose OS renditen sipas numrit të CVE. Fatkeqësisht, megjithëse CVE janë shumë të dobishme për ndjekjen e problemeve dhe informimin e ofruesve dhe përdoruesve, ato thonë pak për sigurinë reale të software-it.

Për shembull, le të shikojmë numrin e përgjithshëm të CVE për katër vitet e fundit për bërthamën Linux dhe pesë shpërndarjet më të njohura të serverëve, konkretisht Ubuntu, Debian, Red Hat Enterprise Linux dhe OpenSUSE.

Miliona binarësh më vonë. Si u forcua Linux
Fig. 1

ÇfarĂ« na thotĂ« ky grafik? A do tĂ« thotĂ« numri mĂ« i madh i CVE se njĂ« shpĂ«rndarje Ă«shtĂ« mĂ« e ekspozuar se tjetra? PĂ«rgjigjja Ă«shtĂ« jo. PĂ«r shembull, nĂ« kĂ«tĂ« artikull do tĂ« shihni se Debian ka mekanizma mbrojtjeje mĂ« tĂ« fortĂ« nĂ« krahasim me, pĂ«r tĂ« thĂ«nĂ«, OpenSUSE ose RedHat Linux, dhe megjithatĂ« Debian ka mĂ« shumĂ« CVE. MegjithatĂ«, ato nuk do tĂ« thonĂ« domosdoshmĂ«risht njĂ« siguri mĂ« tĂ« dobĂ«t: edhe pranimi i CVE nuk thotĂ« nĂ«se njĂ« vlerĂ«sim Ă«shtĂ« i shfrytĂ«zueshĂ«m. PikĂ«t e rĂ«ndĂ«sisĂ« japin njĂ« pasqyrĂ« se sa e mundshme pĂ«rdorimi i dobĂ«sive, por nĂ« fund tĂ« fundit shfrytshmĂ«ria nĂ« masĂ« tĂ« madhe varet nga mbrojtja e pranishme nĂ« sistemet e prekura, si dhe nga burimet dhe kapacitetet e sulmuesve. PĂ«r mĂ« tepĂ«r, mungesa e raporteve CVE nuk tregon asgjĂ« pĂ«r tĂ« tjera tĂ« pa regjistruara ose tĂ« panjohura dobĂ«si. Diferenca nĂ« CVE mund tĂ« shpjegohet jo nga cilĂ«sia e softuerit, por nga faktorĂ« tĂ« tjerĂ«, duke pĂ«rfshirĂ« burimet e ndara pĂ«r testim, ose madhĂ«sinĂ« e bazĂ«s sĂ« pĂ«rdoruesve. NĂ« rastin tonĂ«, njĂ« numĂ«r mĂ« i madh CVE nĂ« Debian mund tĂ« tregojĂ« thjesht se Debian ofron mĂ« shumĂ« paketa softueri.

Natyrisht, sistemi CVE ofron informacion tĂ« dobishĂ«m qĂ« lejon krijimin e mbrojtjeve pĂ«rkatĂ«se. Sa mĂ« mirĂ« ta kuptojmĂ« shkakun e dĂ«shtimit tĂ« programit, aq mĂ« e lehtĂ« Ă«shtĂ« tĂ« pĂ«rcaktojmĂ« mundĂ«sitĂ« e shfrytĂ«zimit dhe tĂ« zhvillojmĂ« mekanizma pĂ«rkatĂ«s pĂ«r zbulim dhe reagim. NĂ« fig. 2 janĂ« treguar kategoritĂ« e dobĂ«sive pĂ«r tĂ« gjitha shpĂ«rndarjet gjatĂ« katĂ«r viteve tĂ« fundit (burimi). ËshtĂ« menjĂ«herĂ« e dukshme se shumica e CVE-tĂ« bien nĂ« katĂ«r kategori kryesore: shĂ«rbimi i refuzuar (DoS), ekzekutimi i kodit, mbushja e kufijve, dĂ«mtimi i memories, shkalla e informacionit dhe escalimi i privilegjeve. MegjithĂ«se shumĂ« CVE janĂ« regjistruar disa herĂ« nĂ« kategori tĂ« ndryshme, nĂ« pĂ«rgjithĂ«si tĂ« njĂ«jtat probleme pĂ«rsĂ«riten nga viti nĂ« vit. NĂ« pjesĂ«n tjetĂ«r tĂ« artikullit do tĂ« vlerĂ«sojmĂ« pĂ«rdorimin e skemave tĂ« ndryshme tĂ« mbrojtjes pĂ«r tĂ« parandaluar shfrytĂ«zimin e dobĂ«sive tĂ« pĂ«rmendura.

Miliona binarësh më vonë. Si u forcua Linux
Fig. 2

Detyrat

Në këtë artikull, ne synojmë të përgjigjemi në pyetje të mëposhtme:

  • Cila Ă«shtĂ« siguria e distribucioneve tĂ« ndryshme Linux? CilĂ«t mekanizma mbrojtjeje ekzistojnĂ« nĂ« bĂ«rthamĂ« dhe aplikacione tĂ« hapĂ«sirĂ«s sĂ« pĂ«rdoruesit?
  • Si ka ndryshuar me kalimin e kohĂ«s pranuarja e mekanizmave tĂ« mbrojtjes pĂ«r distribucione tĂ« ndryshme?
  • Cilat janĂ« varĂ«sitĂ« mesatare tĂ« paketave dhe biblioteka pĂ«r secilin distribucion?
  • Cilat mbrojtje janĂ« realizuar pĂ«r çdo binar?

Zgjedhja e distribuzioneve

ËshtĂ« e vĂ«shtirĂ« tĂ« gjesh statistika tĂ« saktĂ« pĂ«r instalimet e distribucioneve, pasi nĂ« shumicĂ«n e rasteve numri i shkarkimeve nuk tregon numrin e instalimeve reale. MegjithatĂ«, opsionet Unix pĂ«rbĂ«jnĂ« shumicĂ«n e sistemeve serverike (nĂ« serverĂ«t web 69,2%, sipas statistikave W3techs dhe burimeve tĂ« tjera), dhe pjesa e tyre po rritet vazhdimisht. Prandaj, pĂ«r hulumtimin tonĂ«, u fokusuam nĂ« distribucionet e disponueshme nga kutia nĂ« platformĂ«n Google Cloud. NĂ« veçanti, ne zgjodhĂ«m sistemet eksploruese:

Distribucioni/versioni
Nuk është
Ndërtimi

OpenSUSE 12.4
4.12.14-95.3-default
#1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)

Debian 9 (stretch)
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 Tue Jan 15 17:07:28 UTC 2019

CentOS 7
3.10.0-957.5.1.el7.x86_64
#1 SMP Fri Feb 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 Wed Nov 21 15:08:21 EST 2018

Red Hat Enterprise Linux Server 7.6 (Maipo)
3.10.0-957.1.3.el7.x86_64
#1 SMP Thu Nov 15 17:36:42 UTC 2018

Ubuntu 14.04 (Trusty Tahr)
4.4.0–140-generic

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


Ubuntu 16.04 (Xenial Xerus)
4.15.0–1026-gcp
#27~16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018

Ubuntu 18.04 (Bionic Beaver)
4.15.0–1026-gcp
#27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018

Tabela 1

Analiza

Do tĂ« shqyrtojmĂ« konfigurimin e bĂ«rthamĂ«s sĂ« parazgjedhur, si dhe vetitĂ« e pakove qĂ« janĂ« tĂ« disponueshme pĂ«rmes menaxherit tĂ« paketave tĂ« çdo distribuimi nga kutia. KĂ«shtu, ne shqyrtojmĂ« vetĂ«m pakot nga pasqyrat e parazgjedhura tĂ« çdo distribuimi, duke injoruar pakot nga depozitat e pasiguruara (p.sh., pasqyrat ‘testing’ nĂ« Debian) dhe pakot e jashtme (p.sh., paketat Nvidia nga pasqyrat standarde). PĂ«r mĂ« tepĂ«r, ne nuk shqyrtojmĂ« kompilimet e personalizuara tĂ« bĂ«rthamĂ«s ose konfigurimet me siguri tĂ« pĂ«rmirĂ«suar.

Analiza e konfigurimit të bërthamës

Ne aplikuam një skript analize të bazuar në kontrolluesin e lirë kconfig. Ne shqyrtojmë parametrat e mbrojtjes nga kutia tek distribuimet e përmendura dhe i krahasojmë ato me listën nga Projekti i vetë-mbrojtjes së bërthamës (KSPP). Për çdo parameter konfigurimi, tabela 2 përshkruan konfigurimin e dëshiruar: një shenjë është për distribuimet që përputhen me rekomandimet e KSSP (shpjegimi i termaeve shikohet këtu; në artikujt e ardhshëm do të flasim për mënyrat si kanë lindur shumë prej këtyre metodave të mbrojtjes dhe si të thyen sistemin në mungesë të tyre).

Miliona binarësh më vonë. Si u forcua Linux

Miliona binarësh më vonë. Si u forcua Linux

NĂ« pĂ«rgjithĂ«si, bĂ«rthamat e reja kanĂ« konfigurime mĂ« strikte nga fabrika. PĂ«r shembull, nĂ« CentOS 6.10 dhe RHEL 6.10 me bĂ«rthamĂ«n 2.6.32 nuk ka shumicĂ«n e funksioneve kritike tĂ« implementuara nĂ« bĂ«rthamat e reja, si SMAP, lejet strikte RWX, randomizimi i adresave ose mbrojtja copy2usr. Vlen tĂ« theksohet se shumĂ« nga variantet e konfigurimit nĂ« tabelĂ« mungojnĂ« nĂ« versionet mĂ« tĂ« vjetra tĂ« bĂ«rthamĂ«s dhe nuk janĂ« tĂ« aplikueshme nĂ« realitet — nĂ« tabelĂ« kjo ende shĂ«nohet si mungesĂ« mbrojtjeje tĂ« duhur. Po ashtu, nĂ«se njĂ« parametĂ«r konfigurimi mungon nĂ« kĂ«tĂ« version dhe pĂ«r siguri ky parametr duhet tĂ« çaktivizohet, kjo konsiderohet si njĂ« konfigurim i arsyeshĂ«m.

Një tjetër moment në interpretimin e rezultateve: disa konfigurime të bërthamës që rrisin sipërfaqen e sulmit mund të përdoren gjithashtu për siguri. Shembuj të tillë përfshijnë uprobes dhe kprobes, module bërthame dhe BPF/eBPF. Rekomandimi ynë është që të përdoren mekanizmat e mësipërm për të siguruar mbrojtje reale, pasi ato nuk janë triviale për t'u përdorur dhe shfrytëzimi i tyre nënkupton se subjektet e dëmshme tashmë janë të vendosura në sistem. Por nëse këto opcione janë të aktivizuara, administratori i sistemit duhet të mbajë aktivisht nën kontroll abuzimet.

Duke studiuar mĂ« tej shĂ«nimet e tabelĂ«s 2, ne shohim se bĂ«rthamat moderne ofrojnĂ« disa mundĂ«si pĂ«r mbrojtjen nga shfrytĂ«zimi i dobĂ«sive tĂ« tilla si rrjedhja e informacionit dhe mbushja e stakĂ«s/pllakĂ«s. MegjithatĂ«, vĂ«rejmĂ« se edhe distribucionet mĂ« tĂ« fundit tĂ« njohura ende nuk e kanĂ« implementuar mbrojtjen mĂ« tĂ« avancuar (p.sh., me patch-e grsecurity) ose mbrojtjen moderne nga sulmet e ripĂ«rdorimit tĂ« kodit (p.sh., kombinimi i rastĂ«sisĂ« me schemat e tilla si R^X pĂ«r kodin). ÇfarĂ« Ă«shtĂ« mĂ« keq, edhe kĂ«to mjete mĂ« tĂ« avancuara mbrojtjeje nuk ofrojnĂ« mbrojtje nga spektri i plotĂ« i sulmeve. Prandaj, Ă«shtĂ« tejet e rĂ«ndĂ«sishme pĂ«r administratorĂ«t e sistemeve tĂ« plotĂ«sojnĂ« konfigurimet e arsyeshme me zgjidhje qĂ« ofrojnĂ« zb揑现 dhe parandalimin e shfrytĂ«zimeve gjatĂ« ekzekutimit.

Analiza e aplikacioneve

Nuk është çudi që shpërndarjet e ndryshme kanë karakteristika të ndryshme paketash, parametrave të kompilimit, varësive të bibliotekave etj. Dallimet ekzistojnë madje edhe për shpërndarjet dhe paketat me pak varësi (p.sh., coreutils në Ubuntu ose Debian). Për të vlerësuar dallimet, ne ngarkuam të gjitha paketat në dispozicion, nxorrëm përmbajtjen e tyre dhe analizuam skedarët binarë dhe varësitë. Për çdo paketë, ne ndoqëm paketat e tjera nga të cilat ajo varet, dhe për çdo skedar binar ndoqëm varësitë e tij. Në këtë seksion do të shpalosim përmbledhjen e konkluzioneve.

Shpërndarjet

Në total, kemi shkarkuar 361 556 paketa për të gjithë shpërndarjet, duke nxjerrë vetëm paketat nga mirror-ët e paracaktuar. Ne injoruam paketat pa skedarë ekzekutivë ELF, të tilla si kodet burimorë, fontet etj. Pas filtrimit, mbetën 129 569 paketa, që përmbanin në total 584 457 skedarë binarë. Distribucioni i paketave dhe skedarëve sipas shpërndarjeve është treguar në Fig. 3.

Miliona binarësh më vonë. Si u forcua Linux
Fig. 3

Vërehet se sa më moderne të jetë distribucioni, aq më shumë paketa dhe skedarë binarë ka në të, që është logjik. Ndërkohë, paketat Ubuntu dhe Debian përfshijnë shumë më tepër skedarë binarë (si skedarë ekzekutivë ashtu edhe module dhe biblioteka dinamike) se sa CentOS, SUSE dhe RHEL, gjë që potencialisht ndikon në sipërfaqen e sulmit të Ubuntu dhe Debian (duhet të vërehet se numrat pasqyrojnë të gjitha binarët e të gjitha versioneve të paketës, domethënë disa skedarë analizohen disa herë). Kjo është veçanërisht e rëndësishme duke marrë parasysh varësitë mes paketimeve. Pra, një dobësi në një skedar binar të një pakete mund të ndikojë në shumë pjesë të ekosistemit, ndryshe nga një bibliotekë e cenueshme që mund të ndikojë në të gjithë skedarët binarë që e importojnë atë. Si pikë reference, le të shohim shpërndarjen e numrit të varësive sipas paketimeve në sisteme të ndryshme operative:

Miliona binarësh më vonë. Si u forcua Linux
Fig. 4

Në pothuajse të gjitha shpërndarjet, 60% e paketimeve kanë të paktën 10 varësi. Për më tepër, disa paketa kanë një numër ndihmësish shumë më të madh (më shumë se 100). E njëjta gjë vlen edhe për varësitë e bëra në paketa: siç pritej, disa paketa përdoren nga shumë paketa të tjera në shpërndarje, kështu që dobësitë në këto disa të zgjedhur kanë rrezik të lartë. Si një shembull, në tabelën e mëposhtme listohen 20 paketa me numrin maksimal të varësive të kthyeshme në SLES, Centos 7, Debian 9 dhe Ubuntu 18.04 (në çdo qelizë është përfshirë emri i pakos dhe numri i varësive të kthyeshme).

Miliona binarësh më vonë. Si u forcua Linux
Tabela 3

Fakti interesant. Megjithëse të gjitha sistemet operuese që po analizohen janë ndërtuar për arkitekturën x86_64, dhe shumica e paketimeve kanë arkitekturë të përcaktuar si x86_64 dhe x86, paketat shpesh përmbajnë skedarë binarë për arkitektura të tjera, siç tregohet në fig. 5.

Miliona binarësh më vonë. Si u forcua Linux
Fig. 5

Në seksionin e ardhshëm, do të thellohemi në karakteristikat e analizuar të binarëve.

Statistika e mbrojtjes së skedarëve binarë

Si një minimum absolut, është e nevojshme të studiohen një grup bazik opsionesh mbrojtjeje për skedarët binarë që ekzistojnë. Disa distribucione Linux vijnë me skripta që kryejnë këto kontrollime. Për shembull, në Debian/Ubuntu ekziston një tjetër skript. Ky është një shembull i funksionimit të tij:

$ hardening-check $(which docker)
/usr/bin/docker:
 Ekzekutiv i Pavarur nga Pozita: po
 Staku i mbrojtur: po
 Funksionet e Burimeve të Forsuara: jo, vetëm funksione të pambrojtura u gjetën!
 Rëndësia e shkëputur: po
 Lidhje e menjëhershme: po

Skripti kontrollon pesë funksione mbrojtjeje:

  • Ekzekutiv i Pavarur nga Pozita (PIE): tregon nĂ«se mund tĂ« zhvendoset nĂ« kujtesĂ« seksioni i tekstit tĂ« programit pĂ«r tĂ« arritur rastĂ«sinĂ«, nĂ«se ASLR Ă«shtĂ« e aktivizuar nĂ« bĂ«rthamĂ«.
  • Staku i Mbrojtur: nĂ«se kanaret e stack janĂ« aktivizuar pĂ«r mbrojtje nga sulmet e pĂ«rplasjeve tĂ« stack.
  • Burimi i Forcuar: nĂ«se funksionet e pasigurta (p.sh., strcpy) zĂ«vendĂ«sohen me homologĂ«t e tyre mĂ« tĂ« sigurt, dhe thirrjet e kontrolluara gjatĂ« ekzekutimit me ato tĂ« pambrojtura (p.sh., memcpy nĂ« vend tĂ« __memcpy_chk).
  • Rindarjet e lexueshme (RELRO): nĂ«se shkurtimet e tabelĂ«s sĂ« rindarjes janĂ« shĂ«nuar si "tĂ« lexueshme vetĂ«m", nĂ«se ato u aktivizuan para fillimit tĂ« ekzekutimit.
  • Objektet e lidhjes sĂ« menjĂ«hershme: A e lejon lidhĂ«si i mjedisit tĂ« ekzekutimit tĂ« gjitha lĂ«vizjet para fillimit tĂ« ekzekutimit tĂ« programit (kjo Ă«shtĂ« ekuivalente me RELRO tĂ« plotĂ«).

A janë mjaftueshme mekanizmat e mësipërm? Fatkeqësisht, jo. Janë të njohura mënyra për të anashkaluar të gjitha mbrojtjet e përmendura më lart, por sa më e fortë të jetë mbrojtja, aq më e lartë është barra për sulmuesin. Për shembull, metodat e anashkalimit të RELRO janë më të vështira për t'u aplikuar nëse vepron PIE dhe lidhja e menjëhershme. Po ashtu, ASLR i plotë kërkon punë të shtuar për të krijuar një eksploit funksional. Megjithatë, sulmuesit e sofistikuar janë tashmë të gatshëm për të përballuar këto mbrojtje: mungesa e tyre në thelb do të përshpejtojë thyerjen. Prandaj, është jashtëzakonisht e rëndësishme që këto masa të shqyrtohen si të nevojshme. minimumi.

Ne donim të shqyrtonim se sa shumë skedarë binarë në shpërndarjet në shqyrtim janë të mbrojtur nga këto, si dhe nga tre metoda të tjera:

  • Bitsi i pandĂ«rprerĂ« (NX) parandalon ekzekutimin nĂ« çdo rajon qĂ« nuk duhet tĂ« jetĂ« ekzekutues, pĂ«r shembull, nĂ« grumbullin e stack-ut etj.
  • RPATH/RUNPATH tregon rrugĂ«n e ekzekutimit, e cila pĂ«rdoret nga ngarkuesi dinamik pĂ«r tĂ« gjetur bibliotekat pĂ«rkatĂ«se. E para Ă«shtĂ« e detyrueshme pĂ«r çdo sistem modern: mungesa e tij i lejon sulmuesit tĂ« shkruajĂ« lĂ«ndĂ« nĂ« memorje dhe ta ekzekutojnĂ« atĂ« siç Ă«shtĂ«. PĂ«r tĂ« dytĂ«n, konfigurimet e gabuara tĂ« rrugĂ«s sĂ« ekzekutimit ndihmojnĂ« nĂ« futjen e kodit tĂ« pasigurt, i cili mund tĂ« çojĂ« nĂ« njĂ« numĂ«r problemesh (p.sh., eskalimin e privilegjeve, si dhe problemet e tjera).
  • Mbrojtja nga pĂ«rplasje tĂ« stack-ut siguron mbrojtje nga sulmet qĂ« detyrojnĂ« stack-un tĂ« pĂ«rplaset me zona tĂ« tjera tĂ« memories (p.sh., heap-in). Duke marrĂ« parasysh eksploitat e fundit qĂ« abuzojnĂ« me dobĂ«si tĂ« pĂ«rplasjes sĂ« heap-it nĂ« systemd, ne e gjetĂ«m tĂ« arsyeshme ta pĂ«rfshijmĂ« kĂ«tĂ« mekanizĂ«m nĂ« grupin tonĂ« tĂ« tĂ« dhĂ«nave.

Pra, pa më shumë ceremoni, le të kalojmë në numra. Tabelat 4 dhe 5 përmbajnë një përmbledhje të analizës së skedarëve ekzekutivë dhe bibliotekave të shpërndarjeve të ndryshme, përkatësisht.

  • Siç mund tĂ« vĂ«reni, mbrojtja NX Ă«shtĂ« implementuar pĂ«rkrah çdo vendi, pĂ«r excepcione tĂ« pakta. SaktĂ«sisht, mund tĂ« vĂ«rehet pĂ«rdorimi disi mĂ« i ulĂ«t nĂ« shpĂ«rndarjet Ubuntu dhe Debian nĂ« krahasim me CentOS, RHEL dhe OpenSUSE.
  • Stakot e kanarinave mungon nĂ« shumĂ« vende, veçanĂ«risht nĂ« shpĂ«rndarjet me bĂ«rthamĂ« tĂ« vjetĂ«r. Disa pĂ«rparim shihet nĂ« shpĂ«rndarjet e fundit tĂ« CentOS, RHEL, Debian dhe Ubuntu.
  • PĂ«rveç Debian dhe Ubuntu 18.04, shumica e shpĂ«rndarjeve kanĂ« mbĂ«shtetje tĂ« dobĂ«t pĂ«r PIE.
  • Mbrojtja nga pĂ«rplasjeve tĂ« stack-ut Ă«shtĂ« keq e realizuar nĂ« OpenSUSE, CentOS 7 dhe RHEL 7 dhe praktikisht mungon te tĂ« tjerat.
  • TĂ« gjitha shpĂ«rndarjet me bĂ«rthama moderne kanĂ« mbĂ«shtetje tĂ« caktuar pĂ«r RELRO, me lider Ubuntu 18.04, ndjekur nga Debian.

Siç u përmend më parë, metrikat në këtë tabelë janë mesatare për të gjitha versionet e skedarit binar. Nëse shikoni vetëm versionet e fundit të skedarëve, numrat do të jenë të ndryshëm (p.sh., shihni. përparimin e Debian me integrimin e PIE). Për më tepër, shumica e shpërndarjeve zakonisht në llogaritjen e statistikave verifikojnë mbrojtjen vetëm e disa funksioneve në kodin binar, ndërsa në analizën tonë tregohet përqindja e vërtetë e funksioneve të forcuara. Prandaj, nëse në binar janë të mbrojtura 5 nga 50 funksione, ne do i japim një vlerësim 0,1, që përkon me 10% të funksioneve të forcuara.

Miliona binarësh më vonë. Si u forcua Linux
Tabela 4. Karakteristikat e mbrojtjes për skedarët ekzekutivë, që shihen në fig. 3 (implementimi i funksioneve përkatëse në përqindje të përgjithshme të numrit të skedarëve ekzekutivë)

Miliona binarësh më vonë. Si u forcua Linux
Tabela 5. Karakteristikat e mbrojtjes për bibliotekat, që shihen në fig. 3 (implementimi i funksioneve përkatëse në përqindje të përgjithshme të numrit të bibliotekave)

A ka ndonjĂ« pĂ«rparim? Definitivisht po: kjo Ă«shtĂ« e dukshme nga statistikat mbi distribuimet e veçanta (p.sh., Debian), si dhe nga tabelat e mĂ«sipĂ«rme. Si njĂ« shembull, nĂ« fig. 6 ilustrohet implementimi i mekanizmave tĂ« mbrojtjes nĂ« tre distribuime tĂ« njĂ«pasnjĂ«shme tĂ« Ubuntu LTS 5 (ne e kemi lĂ«nĂ« jashtĂ« statistikĂ«n e mbrojtjes nga pĂ«rplasje tĂ« stackut). VĂ«rejmĂ« se nga ĐČĐ”Ń€ŃĐžŃ nĂ« version gjithnjĂ« e mĂ« shumĂ« skedarĂ« mbĂ«shtesin kanat e stackut, si dhe gjithnjĂ« e mĂ« shumĂ« skedarĂ« binarĂ« dorĂ«zohen me mbrojtje tĂ« plotĂ« RELRO.

Miliona binarësh më vonë. Si u forcua Linux
Fig. 6

Fatkeq, disa ekzekutues të skedarëve në distributions të ndryshme vazhdojnë të mos ofrojnë asnjë nga mbrojtjet e përmendura më sipër. Për shembull, duke shqyrtuar Ubuntu 18.04, mund të vëresh binarin ngetty (zëvendësimi i getty), si dhe shell-at mksh dhe lksh, interpretuesin picolisp, paketat nvidia-cuda-toolkit (një paketë e njohur për aplikacione të mbështetura nga GPU, si framework-et e mësimit të makinerive) dhe klibc-utils. Po ashtu, binari mandos-client (një mjet administrativ që lejon rikthimin automatik të makinave me sisteme skedarësh të enkriptuar), si dhe rsh-redone-client (rilindja e rsh dhe rlogin) vijnë pa mbrojtjen NX, megjithëse kanë të drejta SUID :(. Për më tepër, disa binarë SUID nuk kanë mbrojtjen bazë, siç janë kanarët e stack-ut (për shembull, skedari binar Xorg.wrap nga paketa Xorg).

Përmbledhje dhe vërejtje përfundimtare

Në këtë artikull, kemi theksuar disa veçori të sigurisë së shpërndarjeve moderne të Linux-it. Analiza tregon se shpërndarja më e fundit LTS e Ubuntu (18.04) ka nivelin mesatar më të fortë të mbrojtjes në nivelin e OS dhe aplikacioneve, krahasuar me shpërndarje më të vjetra si Ubuntu 14.04, 12.04 dhe Debian 9. Sidoqoftë, shpërndarjet e shqyrtuara CentOS, RHEL dhe OpenSUSE në setin tonë të dhënash në mënyrë default ofrojnë një grup më të dendur paketash dhe në versionet më të fundit (CentOS dhe RHEL) kanë një përqindje më të lartë të zbatimit të mbrojtjes nga përplasje të stack-ut, në krahasim me konkurrentët e bazuar në Debian (Debian dhe Ubuntu). Duke krahasuar versionet CentOS dhe RedHat, vërejmë përmirësime të mëdha në zbatimin e kanaleve të stack-ut dhe RELRO nga versionet 6 në 7, por mesatarisht në CentOS janë implementuar më shumë veçori sesa në RHEL. Përmbledhtas, të gjitha shpërndarjet duhet të përkushtohen veçanërisht për mbrojtjen PIE, e cila, përveç Debian 9 dhe Ubuntu 18.04, është implementuar në më pak se 10% të skedave binarë nga seti ynë i të dhënave.

Në fund, duhet të theksohet: ndonëse ne e kryem hulumtimin manualisht, ekzistojnë shumë mjete sigurie (p.sh., Lynis, Tiger, Hubble), të cilat analizojnë dhe ndihmojnë në shmangien e konfigurimeve të pasigurta. Fatkeqësisht, edhe mbrojtja më e fortë në konfigurimet e arsyeshme nuk garanton mungesën e eksploiteve. Kjo është arsyeja pse ne besojmë me vendosmëri se është jetike të sigurohen monitorim të besueshëm dhe parandalim të sulmeve në kohë reale, duke u përqendruar në modelet e shfrytëzimit dhe duke i parandaluar ato.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster