Miliona binarësh më vonë. Si forcohej Linux

Miliona binarësh më vonë. Si forcohej LinuxTL;DR. Në këtë artikull, ne do të shqyrtojmë skemat e mbrojtjes (hardening schemes) që funksionojnë nga kutia në pesë distribucione të njohura të Linux. Për secilin, ne morëm konfigurimin e default të bërthamës, ngarkuam të gjitha paketat dhe analizuam skemat e mbrojtjes në skedarët binarë të integruar. Distribucionet që shqyrtohen përfshijnë 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 baze, të tilla si canary-stacks dhe kod i pavarur nga pozita, nuk përdoren ende nga të gjithë. Situata është edhe më e keqe për kompajlerët, kur bëhet fjalë për mbrojtjen nga dobësitë si përplasja e stack-ut (stack clash), të cilat morën vëmendje në janar pas publikimit të informacionit mbi dobësitë në systemd. Por nuk është gjithçka aq pa shpresë. Një pjesë e konsiderueshme e binarëve implementojnë metoda të bazave mbrojtëse, dhe numri i tyre po rritet nga versioni në version.

Kontrolli tregoi se numri më i madh i metodave mbrojtëse është implementuar në Ubuntu 18.04 në nivelin e OS dhe aplikacioneve, pastaj ndjek Debian 9. Nga ana tjetër, OpenSUSE 12.4, CentOS 7 dhe RHEL 7 gjithashtu kanë implementuar skemat bazë mbrojtëse, ndërsa mbrojtja nga përplasja e stack-ut aplikohet më gjerësisht me një set më të dendur paketash si defolt.

Hyrje

Të sigurosh cilësi të lartë të softuerit është e vështirë. Pavarësisht numrit të madh të veglave të avancuara për analizën statike të kodit dhe analizën dinamike gjatë ekzekutimit, si dhe përparimeve të konsiderueshme në zhvillimin e kompajlerëve dhe gjuhëve programimi, softueri modern ende vuajti nga dobësitë që vazhdimisht shfrytëzohen nga aktorët keqdashës. Situata është edhe më e keqe në ekosistemet që përfshijnë kod të vjetëruar. Në këto raste, ne jo vetëm që ballafaqohemi me problemin e përhershëm të gjetjes së gabimeve të mundshme të shfrytëzueshme, por gjithashtu jemi të kufizuar nga kornizat rigoroze të pastrimit të prapambetjes, të cilat shpesh kërkojnë të ruajnë kodin e kufizuar, dhe sa më keq, të dobët apo me gabime.

Këtu hyjnë në lojë metodat e mbrojtjes ose forcimit të programeve (hardening). Disa lloje gabimesh nuk jemi në gjendje t'i parandalojmë, por mund të bëjmë jetën e aktorëve keqdashës më të vështirë dhe të zgjidhim pjesërisht problemin duke parandaluar ose penguar shfrytëzimin këtyre gabimeve. Kjo mbrojtje përdoret në të gjitha sistemet operative moderne, megjithatë metodat ndryshojnë shumë në kompleksitet, efektivitet dhe performancë: nga kanaret e stack-ut (stack canaries) dhe ASLR deri në mbrojtje të plotë CFI dhe ROP. Në këtë artikull do të shqyrtojmë metodat e mbrojtjes që aplikohen në distribucionet më të njohura të Linux në konfigurimin e parazgjedhur, si dhe do të studiojmë tiparet e binarëve që shpërndahen përmes sistemeve të menaxhimit të paketave të çdo distribucioni.

CVE dhe siguria

Të gjithë ne kemi parë artikuj me tituj si "Aplikacionet më të cenueshme të vitit" ose "Sistemet operative më të cenueshme". Zakonisht, aty jepet statistika mbi numrin total të regjistrimeve për cenueshmëri të tipit CVE (Cenueshmëri dhe Ekspozita e zakonshme), e marrë nga Baza Kombëtare e Cenueshmërive (NVD) nga NIST dhe burime të tjera. Më pas, këto aplikacione ose sisteme operative renditen sipas numrit të CVE. Fatkeqësisht, ndonëse CVE janë shumë të dobishme për gjurmimin e problemeve dhe informimin e ofruesve dhe përdoruesve, ato flasin pak për sigurinë reale të softuerit.

Si një shembull, le të shqyrtojmë numrin total të CVE-ve për katër vitet e fundit për bërthamën Linux dhe pesë distribucionet më popullorë në shërbim, konkretisht Ubuntu, Debian, Red Hat Enterprise Linux dhe OpenSUSE.

Miliona binarësh më vonë. Si forcohej Linux
Fig. 1

ÇfarĂ« na thotĂ« ky graf? A do tĂ« thotĂ« mĂ« shumĂ« CVE se njĂ« distribucion Ă«shtĂ« mĂ« i cenueshĂ«m se njĂ« tjetĂ«r? Nuk ka njĂ« pĂ«rgjigje. PĂ«r shembull, nĂ« kĂ«tĂ« artikull do tĂ« shihni se Debian ka mekanizma mbrojtĂ«s mĂ« tĂ« rreptĂ« nĂ« krahasim me OpenSUSE ose RedHat Linux, dhe megjithatĂ« Debian ka mĂ« shumĂ« CVE. MegjithatĂ«, ato nuk nĂ«nkuptojnĂ« domosdoshmĂ«risht njĂ« siguri tĂ« dobĂ«suar: edhe prania e CVE nuk tregon nĂ«se njĂ« cenueshmĂ«ri Ă«shtĂ« e shfrytĂ«zueshme. Pikat e rrezikshmĂ«risĂ« ofrojnĂ« njĂ« ide se sa e mundshme Ă«shtĂ« shfrytĂ«zimi i cenueshmĂ«risĂ«, por nĂ« fund tĂ« fundit shfrytĂ«zueshmĂ«ria varet nĂ« masĂ« tĂ« madhe nga mbrojtja e pranishme nĂ« sistemet e prekur, si dhe nga burimet dhe mundĂ«sitĂ« e sulmuesve. PĂ«r mĂ« tepĂ«r, mungesa e raporteve CVE nuk thotĂ« asgjĂ« pĂ«r cenueshmĂ«rive tĂ« pa regjistruara ose tĂ« panjohura vulnĂ©rabilitetet. Dallimi nĂ« CVE mund tĂ« shpjegohet jo nga cilĂ«sia e softuerit, por nga faktorĂ« tĂ« tjerĂ«, pĂ«rfshirĂ« burimet e ndara pĂ«r testim ose madhĂ«sinĂ« e bazĂ«s sĂ« pĂ«rdoruesve. NĂ« shembullin tonĂ«, numri mĂ« i madh i CVE-sĂ« pĂ«r Debian mund tĂ« tregojĂ« thjesht se Debian ofron mĂ« shumĂ« paketa softueri.

Sigurisht, sistemi CVE ofron informacion tĂ« dobishĂ«m qĂ« lejon krijimin e mbrojtjeve pĂ«rkatĂ«se. Sa mĂ« mirĂ« tĂ« kuptojmĂ« arsyet e dĂ«shtimit tĂ« programit, aq mĂ« e lehtĂ« Ă«shtĂ« tĂ« pĂ«rcaktojmĂ« mĂ«nyrat e mundshme tĂ« shfrytĂ«zimit dhe tĂ« zhvillojmĂ« mekanizmat pĂ«rkatĂ«s. identifikimit dhe reagimit. NĂ« fig. 2 janĂ« paraqitur kategoritĂ« e vulnerabiliteteve pĂ«r tĂ« gjitha distribucionet gjatĂ« katĂ«r viteve tĂ« fundit (burimi). ËshtĂ« e qartĂ« qĂ« shumica e CVE-ve bien nĂ« kategoritĂ« e mĂ«poshtme: ndalim shĂ«rbimi (DoS), ekzekutimi i kodit, mbingarkesa, dĂ«mtimi i memories, rrjedhja (ekstraktimi) i informacionit dhe eskalimi i privilegjeve. MegjithĂ«se shumĂ« CVE janĂ« renditur disa herĂ« nĂ« kategori tĂ« ndryshme, nĂ« pĂ«rgjithĂ«si, tĂ« njĂ«jtat probleme mbeten nga viti nĂ« vit. NĂ« pjesĂ«n e ardhshme tĂ« artikullit do tĂ« vlerĂ«sojmĂ« pĂ«rdorimin e skemave tĂ« ndryshme tĂ« mbrojtjes pĂ«r tĂ« parandaluar shfrytĂ«zimin e kĂ«tyre vulnerabiliteteve.

Miliona binarësh më vonë. Si forcohej Linux
Fig. 2

Detyrat

Në këtë artikull ne synojmë të përgjigjemi në pyetjet e mëposhtme:

  • Sa e sigurt Ă«shtĂ« siguria e distribucioneve tĂ« ndryshme tĂ« Linux? ÇfarĂ« mekanizmash mbrojtĂ«s ekzistojnĂ« nĂ« bĂ«rthamĂ« dhe nĂ« aplikacionet e hapĂ«sirĂ«s sĂ« pĂ«rdoruesit?
  • Si ka ndryshuar ndĂ«rkohĂ« pranimi i mekanizmave tĂ« mbrojtjes pĂ«r distribucionet e ndryshme?
  • Cilat janĂ« varĂ«sitĂ« mesatare tĂ« paketa dhe bibliotekave pĂ«r çdo distribucion?
  • Cilat mbrojtje janĂ« implementuar pĂ«r çdo binar?

Zgjedhja e distribucioneve

Kuptohet se është e vështirë të gjenim statistika të sakta mbi 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 server (në serverat web 69.2%, sipas statistikave W3techs dhe burimeve të tjera), dhe pjesa e tyre është duke u rritur vazhdimisht. Pra, për hulumtimin tonë, ne u përqendruam në distribucionet që janë të disponueshme jashtë kutisë në platformën Google Cloud. Në veçanti, ne zgjodhëm sistemet operative si më poshtë:

Distribucioni/versioni
Bërthama
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 kernelit të paracaktuar, si dhe vetitë e paketeve të aksesueshme përmes menaxherit të paketave për çdo distro nga kuti. Kështu, ne do të shqyrtojmë vetëm pakete nga pasqyrat e paracaktuara të çdo distrose, duke e injoruar paketat nga repositorët e paqëndrueshëm (p.sh., pasqyrat 'testing' në Debian) dhe paketat e jashtme (p.sh., paketat Nvidia nga pasqyrat standard). Për më tepër, ne nuk do të shqyrtojmë kompilimet e përdoruesve të kernelit apo konfigurimet me nivel të lartë mbrojtjeje.

Analiza e konfigurimit të kernelit

Ne aplikuam një skenar analize të bazuar në kontrollerin e lirë kconfig. Ne shqyrtojmë parametrat e mbrojtjes të paracaktuar në distro-t e përmendura dhe i krahasojmë ato me listën nga Projekti i vetë-mbrojtjes së kernelit (KSPP). Për çdo parametrat e konfigurimit, tabela 2 përshkruan konfigurimin e dëshiruar: një shenjë e markuar për distro-t që përputhen me rekomandimet KSSP (shpjegimi i terminologjisë është i disponueshëm në këtu; në artikujt e ardhshëm do të flasim se si janë shfaqur shumë nga këto metoda mbrojtjeje dhe si të komprometoni sistemin në mungesë të tyre).

Miliona binarësh më vonë. Si forcohej Linux

Miliona binarësh më vonë. Si forcohej Linux

NĂ« pĂ«rgjithĂ«si, nĂ« kernelĂ«t e rinj ka konfigurime mĂ« tĂ« rrepta tĂ« paracaktuara. PĂ«r shembull, nĂ« CentOS 6.10 dhe RHEL 6.10 me kernelin 2.6.32 mungojnĂ« shumicĂ«n e funksioneve kritike tĂ« implementuara nĂ« kernelĂ«t e rinj, si SMAP, lejet e rrepta RWX, randomizimi i adresave ose mbrojtja e copy2usr. Duhet theksuar se shumĂ« nga opsionet e konfigurimit nga tabela mungojnĂ« nĂ« versionet mĂ« tĂ« vjetra tĂ« kernelit dhe nuk janĂ« tĂ« aplikueshme nĂ« praktikĂ« – nĂ« tabelĂ« kjo ende tregohet si mungesĂ« mbrojtjeje tĂ« duhur. Po ashtu, nĂ«se njĂ« parametrat e konfigurimit mungon nĂ« kĂ«tĂ« version, dhe pĂ«r siguri ky parametr duhet tĂ« çaktivizohet, kjo konsiderohet njĂ« konfigurim i arsyeshĂ«m.

Një moment tjetër kur interpretojmë rezultatet: disa konfiguracione të bërthamës që rrisin sipërfaqen e sulmit mund të përdoren gjithashtu për sigurimin. Disa shembuj përfshijnë uprobes dhe kprobes, modul të bërthamës dhe BPF/eBPF. Rekomandimi ynë është që të përdoren mekanizmat e përmendur më sipër për të siguruar mbrojtje reale, pasi ato nuk janë të thjeshta për t'u përdorur, dhe shfrytëzimi i tyre nënkupton që subjektet e këqija tashmë janë instaluar në sistem. Por nëse këto parametra aktivizohen, administratori i sistemit duhet të ndjekë aktivisht abuzimet.

Duke shqyrtuar mĂ« tej rekordet e tabelĂ«s 2, shohim se bĂ«rthamat moderne ofrojnĂ« disa mundĂ«si pĂ«r tĂ« mbrojtur nga shfrytĂ«zimi i tĂ« tillave si rrjedhja e informacionit dhe mbushja e stack-ut/heaps. MegjithatĂ«, vĂ«rejmĂ« se edhe shpĂ«rndarjet mĂ« tĂ« fundit ende nuk kanĂ« implementuar mbrojtje mĂ« tĂ« avancuar (p.sh., me patches grsecurity) ose mbrojtje moderne nga sulmet e ripĂ«rdorimit tĂ« kodit (p.sh., kombinimi i randomizimit me skemat R^X pĂ«r kodin). ÇfarĂ« Ă«shtĂ« edhe mĂ« e keqe, edhe kĂ«to mjete mĂ« tĂ« avancuara nuk mbrojnĂ« nga spektri i plotĂ« i sulmeve. Prandaj, Ă«shtĂ« tepĂ«r e rĂ«ndĂ«sishme pĂ«r administratorĂ«t e sistemeve tĂ« plotĂ«sojnĂ« konfigurimet e arsyeshme me zgjidhje qĂ« ofrojnĂ« zbulim dhe parandalim tĂ« shfrytĂ«zimeve gjatĂ« ekzekutimit.

Analiza e aplikacioneve

Nuk është çudi që shpërndarjet e ndryshme kanë karakteristika të ndryshme të pakove, parametrave të përpilimit, varësive të bibliotekave, etj. Dallimet ekzistojnë edhe për shpërndarje të ngjashme dhe pako me varësi të vogla (p.sh., coreutils në Ubuntu ose Debian). Për të vlerësuar dallimet, ne shkarkuam të gjitha paketat e disponueshme, nxorrëm përmbajtjen e tyre dhe analizuam skedarët binare dhe varësitë. Për secilën paketë ndjekëm paketat e tjera nga të cilat ajo varet, dhe për çdo binar ndjekëm varësitë e tij. Në këtë seksion do të paraqesim përmbledhjen e gjetjeve.

Shpërndarjet

Në total kemi ngarkuar 361,556 paketa për të gjitha shpërndarjet, duke nxjerrë vetëm paketa nga pasqyrat e paracaktuara. Ne injoruam paketat pa skedarë ekzekutivë ELF, si kodet burimore, fontet, etj. Pas filtrimit, mbetën 129,569 paketa, që përmbajnë gjithsej 584,457 skedarë binarë. Shpërndarja e paketave dhe skedarëve sipas shpërndarjeve është e ilustruar në figurën 3.

Miliona binarësh më vonë. Si forcohej Linux
Fig. 3

Vërehet se sa më moderne të jetë shpërndarja, aq më shumë paketa dhe skedarë binarë ka, që është logjike. Megjithatë, paketat Ubuntu dhe Debian përfshijnë shumë më tepër skedarë binarë (si skedarë ekzekutivë, ashtu edhe module dinamike dhe biblioteka), sesa CentOS, SUSE dhe RHEL, gjë që potencialisht ndikon në sipërfaqen e sulmit të Ubuntu dhe Debian (duhet të theksohet se shifrat reflektojnë të gjithë binarët e të gjitha versioneve të paketës, që do të thotë se disa skedarë analizohet disa herë). Kjo është veçanërisht e rëndësishme duke pasur parasysh varësitë midis paketave. Në këtë mënyrë, një ndjeshmëri në një binar të një pakete mund të ndikojë në shumë pjesë të ekosistemit, ashtu si një bibliotekë e ndjeshme mund të ndikojë në të gjithë skedarët binarë që e importojnë atë. Si një pikë referimi, le të shohim shpërndarjen e numrit të varësive sipas paketave në sistemet operative të ndryshme:

Miliona binarësh më vonë. Si forcohej Linux
Fig. 4

Gati në të gjitha shpërndarjet, 60% e paketimeve kanë të paktën 10 varësi. Përveç kësaj, disa pakete kanë shumë më tepër varësi (më shumë se 100). E njëjta gjë vlen dhe për varësitë e kundërta të paketave: siç pritej, disa paketa përdoren nga shumë paketa të tjera në shpërndarje, prandaj ndjeshmëritë në këto disa të përzgjedhura kanë një rrezik të lartë. Si një shembull në tabelën e ardhshme janë listuar 20 paketa me numrin më të madh të varësive të kundërta në SLES, Centos 7, Debian 9 dhe Ubuntu 18.04 (në çdo qelizë është e shënuar paketa dhe numri i varësive të kundërta).

Miliona binarësh më vonë. Si forcohej Linux
Tabela 3

Fakti interesant. Edhe pse të gjitha sistemet operative të analizuar janë ndërtuar për arkitekturën x86_64, dhe për shumicën e paketimeve arkitektura është e përcaktuar si x86_64 dhe x86, paketat shpesh përmbajnë skedarë binarë për arkitektura të tjera, siç ilustrohet në figurën 5.

Miliona binarësh më vonë. Si forcohej Linux
Fig. 5

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

Statistika për mbrojtjen e skedarëve binarë

Si minimum absolut, është e nevojshme të studioni një grup bazik variantesh mbrojtjeje për skedarët binarë ekzistues. Disa distribucione Linux vijnë me skripte që kryejnë këto verifica. Për shembull, në Debian/Ubuntu ka një skript të tillë. Ja një shembull i funksionimit të tij:

$ hardening-check $(which docker)
/usr/bin/docker:
 Pozita Pavarur Ekzekutiv: po
 Staku i mbrojtur: po
 Funksionet Fortify Source: jo, vetëm funksione të pambrojtura të gjetura!
 Rishikimet e lexueshme: po
 Ndryshimi i menjëhershëm: po

Skripti kontrollon pesë funksione mbrojtjeje:

  • Pozita Pavarur Ekzekutiv (PIE): tregon nĂ«se mund tĂ« zhvendoset nĂ« memorie seksioni tekstor i programit pĂ«r tĂ« arritur rastĂ«si, nĂ«se ASLR Ă«shtĂ« aktivizuar nĂ« kernel.
  • Staku i Mbrojtur: a janĂ« aktivizuar kanaret e stack-ut pĂ«r tĂ« mbrojtur nga sulmet nĂ« pĂ«rplasje staku.
  • Fortify Source: a zĂ«vendĂ«sohen funksionet e pasigurta (pĂ«r shembull, strcpy) me ekuivalentĂ«t e tyre mĂ« tĂ« sigurt, dhe thirrjet e verifikuara nĂ« kohĂ« ekzekutimi - me ekuivalentĂ«t e tyre tĂ« pa verifikuar (pĂ«r shembull, memcpy nĂ« vend tĂ« __memcpy_chk).
  • Rishikimet e lexueshme (RELRO): a janĂ« etiketuar regjistrimet e tabelĂ«s sĂ« zhvendosjes si "tĂ« lexueshme vetĂ«m", nĂ«se ato janĂ« aktivizuar para fillimit tĂ« ekzekutimit.
  • Ndarja e menjĂ«hershme (binding i menjĂ«hershĂ«m): a lejon linkuesi i mjedisit tĂ« ekzekutimit qĂ« tĂ« zgjidhĂ« tĂ« gjitha zhvendosjet para fillimit tĂ« ekzekutimit tĂ« programit (kjo Ă«shtĂ« ekuivalente me RELRO tĂ« plotĂ«).

A janë mjaft të mësipërmet mekanizmat e mbrojtjes? Fatkeqësisht, jo. Janë të njohura mënyra për të anashkaluar të gjitha mbrojtjet e mëparshme, por sa më e fortë të jetë mbrojtja, aq më i lartë është nivelin për sulmuesin. Për shembull, metodat për të anashkaluar RELRO janë më të vështira për t'u aplikuar nëse vepron PIE dhe ndarja e menjëhershme. Ngjashëm, ASLR e plotë kërkon punë të shtuar për të krijuar një exploiter funksional. Sidoqoftë, sulmues të sofistikuar tashmë janë të gatshëm për t'u përballur me këto mbrojtje: mungesa e tyre principalisht do të përshpejtojë thyerjen. Prandaj, është jashtëzakonisht e rëndësishme që këto masa të merren parasysh si një minimum të nevojshëm minimum.

Ne deshëm të studionim për sa shumë skedarë binarë në distribucionet e shqyrtuara janë mbrojtur me këto, si dhe me tre metoda të tjera:

  • Bit i paekzekutueshĂ«m (NX) parandalon ekzekutimin nĂ« çdo rajon qĂ« nuk duhet tĂ« jetĂ« ekzekutiv, pĂ«r shembull nĂ« heap-in e stack-ut etj.
  • RPATH/RUNPATH tregon rruge ekzekutimi, 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 saj lejon hakerĂ«t tĂ« shkruajnĂ« informacionin nĂ« memorie dhe ta ekzekutojnĂ« atĂ« siç Ă«shtĂ«. PĂ«r tĂ« dytin, konfigurime tĂ« gabuara tĂ« rrugĂ«ve tĂ« ekzekutimit ndihmojnĂ« nĂ« futjen e kodit tĂ« paqartĂ«, qĂ« mund tĂ« çojĂ« nĂ« njĂ« sĂ«rĂ« problemesh (p.sh., ngritja e privilegjeve, si dhe probleme tĂ« tjera).
  • Mbrojtja nga pĂ«rplasje tĂ« stack siguron mbrojtje nga sulmet qĂ« shkaktojnĂ« qĂ« stack tĂ« mbivendoset nĂ« zona tĂ« tjera tĂ« memories (p.sh., nĂ« heap). Duke marrĂ« parasysh eksploitimet e fundit qĂ« abuzojnĂ« me dobĂ«sitĂ« e pĂ«rplasjeve nĂ« heap nĂ« systemd, ne e konsideruam tĂ« arsyeshme tĂ« pĂ«rfshijmĂ« kĂ«tĂ« mekanizĂ«m nĂ« tĂ« dhĂ«nat tona.

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

  • Siç mund tĂ« vĂ«rehet, mbrojtja NX Ă«shtĂ« e implementuar nĂ« tĂ« gjithĂ«, pĂ«rveç disa pĂ«rjashtimeve. NĂ« veçanti, duket se pĂ«rdorimi i saj Ă«shtĂ« disi mĂ« i ulĂ«t nĂ« shpĂ«rndarjet Ubuntu dhe Debian nĂ« krahasim me CentOS, RHEL dhe OpenSUSE.
  • Canary stack mungon nĂ« shumĂ« vende, veçanĂ«risht nĂ« shpĂ«rndarjet me bĂ«rthamĂ« tĂ« vjeter. Disa pĂ«rparim Ă«shtĂ« vĂ«rejtur nĂ« shpĂ«rndarjet mĂ« tĂ« fundit CentOS, RHEL, Debian dhe Ubuntu.
  • PĂ«rveç Debian dhe Ubuntu 18.04, nĂ« shumicĂ«n e shpĂ«rndarjeve ka mbĂ«shtetje tĂ« dobĂ«t pĂ«r PIE.
  • Mbrojtja nga pĂ«rplasje tĂ« stack Ă«shtĂ« implementuar dobĂ«t nĂ« OpenSUSE, CentOS 7 dhe RHEL 7 dhe praktikisht mungon nĂ« tĂ« tjerat.
  • TĂ« gjitha shpĂ«rndarjet me bĂ«rthama moderne kanĂ« njĂ« mbĂ«shtetje tĂ« caktuar pĂ«r RELRO, me udhĂ«heqje nga Ubuntu 18.04, ndĂ«rsa vendi i dytĂ« mbahet nga Debian.

Siç u përmend, metrikat në këtë tabelë janë mesatare për të gjitha versionet e skedarëve binarë. Nëse shikoni vetëm versionet më të fundit të skedarëve, atëherë numrat do të jenë ndryshe (p.sh., shih përparimin e Debian me implementimin e PIE). Për më tepër, shumica e shpërndarjeve zakonisht, gjatë llogaritjes së statistikave, kontrollojnë mbrojtjen e vetëm disa funksioneve në kodin binar, ndërsa në analizën tonë është e specifikuar përqindja e vërtetë e funksioneve të forcuara. Prandaj, nëse në një binar janë të mbrojtura 5 nga 50 funksione, ne do t'i japim asaj një vlerësim 0,1, që korrespondon me 10% të funksioneve të forcuara.

Miliona binarësh më vonë. Si forcohej Linux
Tabela 4. Karakteristikat e mbrojtjes për skedarët ekzekutues, të ilustruar në figurën 3 (implementimi i funksioneve përkatëse në përqindje të totalit të skedarëve ekzekutues)

Miliona binarësh më vonë. Si forcohej Linux
Tabela 5. Karakteristikat e mbrojtjes për bibliotekat e paraqitura në figurën 3 (implementimi i funksioneve përkatëse në përqindje të numrit total të biblioteka)

A ka progres? Definitivisht ka: kjo duket nga statistikat për distribuime të veçanta (për shembull, Debian), si dhe nga tabelat e paraqitura më sipër. Si një shembull, në figurën 6 tregohet implementimi i mekanizmave të mbrojtjes në tri distribuime të njëpasnjëshme të Ubuntu LTS 5 (ne e kemi lënë jashtë statistikën e mbrojtjes nga përplasje të stack-ut). Vërejmë se nga versioni në version gjithnjë e më shumë skedarë mbështesin kanatat e stack-ut dhe gjithashtu gjithnjë e më shumë skedarë binarë shpërndahen me mbrojtje të plotë RELRO.

Miliona binarësh më vonë. Si forcohej Linux
Figura 6

Fatkeqësisht, një numër i skedarëve ekzekutivë në distribuime të ndryshme ende nuk ka asnjë nga mbrojtjet e lartpërmendura. Për shembull, duke shikuar në Ubuntu 18.04, mund të vëreni binarin ngetty (zëvendësim për getty), si dhe shell-in mksh dhe lksh, interpretuest picolisp, paketat nvidia-cuda-toolkit (një paketë e njohur për aplikacione me përshpejtim GPU, siç janë kornizat e mësimit të makinerive) dhe klibc-utils. Në mënyrë të ngjashme, binari mandos-client (një mjet administrativ që lejon ri-ngarkimin automatik të makinave me sisteme skedarësh të enkriptuar), si dhe rsh-redone-client (rishtazimi i rsh dhe rlogin) shpërndahen pa mbrojtje NX, megjithëse ata kanë të drejta SUID :(. Për më tepër, në disa binarë SUID nuk ka mbrojtje bazë, siç janë kanatat e stack-ut (për shembull, skedari binar Xorg.wrap nga paketa Xorg).

Përmbledhje dhe vërejtje përfundimtare

Në këtë artikull, ne theksojmë disa nga karakteristikat e sigurisë së shpërndarjeve moderne të Linux. Analiza ka treguar se distribucioni më i fundit LTS i Ubuntu (18.04) ofron mbrojtjen më të fortë në nivelin e sistemit operativ dhe aplikacioneve ndërmjet shpërndarjeve me bërthama relativisht të reja, si Ubuntu 14.04, 12.04 dhe Debian 9. Megjithatë, shpërndarjet e shqyrtuara CentOS, RHEL dhe OpenSUSE në setin tonë të të dhënave, si rregull, ofrojnë një paketë më të dendur, dhe në versionet e fundit (CentOS dhe RHEL) kanë një përqindje më të lartë të zbatimit të mbrojtjes nga përplasje të stack-ut, krahasuar me competitorët bazuar në Debian (Debian dhe Ubuntu). Duke krahasuar versionet CentOS dhe RedHat, ne vërejmë përparime të mëdha në zbatimin e kanarinave të stack-ut dhe RELRO nga versionet 6 në 7, por mesatarisht në CentOS janë implementuar më shumë funksionalitete sesa në RHEL. Në përgjithësi, të gjitha shpërndarjet duhet të kushtojnë vëmendje të posaçme mbrojtjes PIE, e cila, përveç Debian 9 dhe Ubuntu 18.04, është zbatuar në më pak se 10% të skedarëve binarë nga seti ynë i të dhënave.

Në fund, duhet theksuar: ndonëse ne kemi kryer hulumtimin manualisht, ekzistojnë shumë mjete sigurie (p.sh., Lynis, Tiger, Hubble), të cilat kryejnë analiza dhe ndihmojnë në shmangien e konfigurimeve të pasigurta. Fatkeqësisht, edhe mbrojtja më e fortë në konfigurime të arsyeshme nuk garanton mungesën e eksploitëve. Kjo është arsyeja pse ne besojmë me forcë se është thelbësore të sigurohet monitorim i besueshëm dhe parandalim të sulmeve në kohë reale, duke u përqendruar në modelet e eksploatimit dhe duke i parandaluar ato.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster