{"id":29880,"date":"2019-10-31T21:32:27","date_gmt":"2019-10-31T18:32:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\/"},"modified":"2019-10-31T21:32:27","modified_gmt":"2019-10-31T18:32:27","slug":"milliony-binarnikov-spustya-kak-ukreplyalsya-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. U ovom \u010dlanku istra\u017eujemo mehanizme za\u0161tite (hardening schemes) koji po defaultu funkcioni\u0161u u pet popularnih Linux distribucija. Za svaku od njih uzeli smo podrazumevanu konfiguraciju jezgra, instalirali sve pakete i analizirali mehanizme za\u0161tite u ugnije\u017edenim binarnim datotekama. Razmatrani su distribucije OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 i 7, kao i Ubuntu 14.04, 12.04 i 18.04 LTS. <\/p>\n<p>Rezultati potvr\u0111uju da \u010dak ni osnovni mehanizmi, kao \u0161to su kanarinske stekove i kod nezavisnog od pozicije, jo\u0161 uvek nisu svuda primenjeni. Situacija je jo\u0161 gora sa kompajlerima kada se radi o za\u0161titi od ranjivosti poput stack clash-a, koja je postala u fokusu u januaru nakon objavljivanja <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">informacija o ranjivostima u systemd<\/a><\/noindex>. Ali nije sve tako beznade\u017eno. U zna\u010dajnom delu binarnih datoteka implementirane su osnovne metode za\u0161tite, a njihov broj raste iz verzije u verziju. <\/p>\n<p>Provera je pokazala da je najve\u0107i broj metoda za\u0161tite implementiran u Ubuntu 18.04 na nivou operativnog sistema i aplikacija, a zatim sledi Debian 9. S druge strane, u OpenSUSE 12.4, CentOS 7 i RHEL 7 tako\u0111e su implementovani osnovni mehanizmi za\u0161tite, dok se za\u0161tita od stash clash-a primenjuje jo\u0161 \u0161ire uz mnogo ve\u0107u gustinu paketa po defaultu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Uvod<\/h1>\n<p>\nTe\u0161ko je obezbediti visoki kvalitet softvera. I pored ogromnog broja naprednih alata za stati\u010dku analizu koda i dinami\u010dku analizu tokom izvo\u0111enja, kao i zna\u010dajnog napretka u razvoju kompajlera i programskih jezika, savremeni softver i dalje pati od ranjivosti koje kontinuirano eksploati\u0161u napada\u010di. Situacija je jo\u0161 gora u ekosistemima koji uklju\u010duju zastareli kod. U takvim slu\u010dajevima se ne suo\u010davamo samo sa ve\u010ditim problemom otkrivanja mogu\u0107ih ranjivosti, ve\u0107 smo i ograni\u010deni strogim okvirima unazadne kompatibilnosti, koji \u010desto zahtevaju o\u010duvanje ograni\u010denog, a jo\u0161 gore ranjivog ili buggiranog koda.<\/p>\n<p>Ovde dolaze u obzir mehanizmi za\u0161tite ili ja\u010danja softvera (hardening). Neke tipove gre\u0161aka ne mo\u017eemo spre\u010diti, ali mo\u017eemo u\u010diniti \u017eivot napada\u010dima te\u017eim i delimi\u010dno re\u0161iti problem spre\u010davanjem ili ometanjem <i>eksploatacije<\/i> teh napak. Ta za\u0161\u010dita se uporablja v vseh sodobnih operacijskih sistemih, vendar se metode mo\u010dno razlikujejo po zahtevnosti, u\u010dinkovitosti in zmogljivosti: od stekleni\u010dnih kanar\u010dkov (stack canaries) in <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> do popolnih za\u0161\u010dit <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> in <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. V tem \u010dlanku bomo preu\u010dili, katere za\u0161\u010ditne metode se uporabljajo v najbolj priljubljenih razli\u010dicah Linuxa z privzetimi nastavitvami ter raziskali lastnosti binarnih datotek, ki se distribuira preko sistemov za upravljanje s paketi posameznih distribucij.<\/p>\n<h3>CVE in varnost<\/h3>\n<p>\nVsi smo videli \u010dlanke s naslovi, kot so 'Najbolj ranljive aplikacije leta' ali 'Najbolj ranljivi operacijski sistemi'. Obi\u010dajno vsebujejo statistiko o skupnem \u0161tevilu zapisov o ranljivostih tipa <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Skupne ranljivosti in izpostavljenosti)<\/a><\/noindex>, pridobljenih iz <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">Nacionalne baze ranljivosti (NVD)<\/a><\/noindex> od <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> in drugih virov. Kasneje so te aplikacije ali OS razvr\u0161\u010deni glede na \u0161tevilo CVE. Na\u017ealost, \u010deprav so CVE zelo uporabni za sledenje te\u017eavam in obve\u0161\u010danje dobaviteljev in uporabnikov, malo povedo o dejanski varnosti programske opreme.<\/p>\n<p>Za primer si oglejmo skupno \u0161tevilo CVE v zadnjih \u0161tirih letih za jedro Linuxa in pet najbolj priljubljenih stre\u017eni\u0161kih distribucij, in sicer Ubuntu, Debian, Red Hat Enterprise Linux in OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Slika 1<\/i><\/p>\n<p>Kaj nam pove ta grafikon? Ali pomeni ve\u010dje \u0161tevilo CVE, da je ena distribucija bolj ranljiva od druge? Odgovor je negativen. Na primer, v tem \u010dlanku boste videli, da so v Debi\u00e1nu uvedeni stro\u017eji za\u0161\u010ditni mehanizmi v primerjavi, recimo, z OpenSUSE ali RedHat Linux, pa vendar ima Debian ve\u010d CVE. Vendar ti ne pomenijo nujno oslabljene varnosti: celo prisotnost CVE ne pove, ali je ranljivost <i>eksplotabilna<\/i>. To\u010dke resnosti dajejo predstavo o tem, kako <i>verjetno<\/i> je izkori\u0161\u010danje ranljivosti, toda na koncu je izkori\u0161\u010denost v veliki meri odvisna od za\u0161\u010dite, ki je prisotna v prizadetih sistemih, ter od virov in zmogljivosti napadalcev. Poleg tega, odsotnost poro\u010dil CVE ne pove ni\u010desar o drugih <i>neregistriranih ali neznanih.<\/i> ranah. Razlika u CVE mo\u017ee se obja\u0161njavati ne kvalitetom softvera, ve\u0107 drugim faktorima, uklju\u010duju\u0107i resurse odvojene za testiranje ili veli\u010dinu korisni\u010dke baze. U na\u0161em primeru, ve\u0107i broj CVE u Debianu mo\u017ee jednostavno zna\u010diti da Debian isporu\u010duje vi\u0161e paketa softvera. <\/p>\n<p>Naravno, sistem CVE pru\u017ea korisne informacije koje omogu\u0107avaju stvaranje odgovaraju\u0107ih za\u0161tita. \u0160to bolje razumemo uzroke programskih gre\u0161aka, to je lak\u0161e odrediti mogu\u0107e na\u010dine eksploatacije i razviti odgovaraju\u0107e mehanizme <i>otkrivanja i reagovanja.<\/i>Na slici 2 prikazane su kategorije ranjivosti za sve distribucije tokom poslednje \u010detiri godine (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">vir<\/a><\/noindex>). Odmah se vidi da ve\u0107ina CVE spada u slede\u0107e kategorije: uskra\u0107ivanje usluge (DoS), izvr\u0161enje koda, prelivanje, o\u0161te\u0107enje memorije, curenje (ekstrahiranje) informacija i eskalacija privilegija. Iako su mnoge CVE zabele\u017eene vi\u0161e puta u razli\u010ditim kategorijama, u celini, isti problemi se ponavljaju iz godine u godinu. U slede\u0107em delu \u010dlanka ocenjujemo kori\u0161\u0107enje razli\u010ditih shema za\u0161tite za spre\u010davanje eksploatacije navedenih ranjivosti.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Slika 2<\/i><\/p>\n<h3>Zadaci<\/h3>\n<p>\nU ovom \u010dlanku nameravamo da odgovorimo na slede\u0107a pitanja:<\/p>\n<ul>\n<li>Kakva je sigurnost razli\u010ditih Linux distribucija? Koji za\u0161titni mehanizmi postoje u jezgru i aplikacijama korisni\u010dkog prostora?\n<\/li>\n<li>Kako se tokom vremena menjala prihva\u0107enost za\u0161titnih mehanizama za razli\u010dite distribucije?\n<\/li>\n<li>Koje su prose\u010dne zavisnosti paketa i biblioteka svake distribucije?\n<\/li>\n<li>Koje su za\u0161tite implementirane za svaku binarnu datoteku?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Izbor distribucija<\/h3>\n<p>\nIspostavlja se da je te\u0161ko prona\u0107i ta\u010dnu statistiku o instalacijama distribucija, jer u ve\u0107ini slu\u010dajeva broj preuzimanja ne ukazuje na broj stvarnih instalacija. Ipak, Unix varijante \u010dine ve\u0107inu serverskih sistema (na web serverima 69,2%, prema <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">statistiki<\/a><\/noindex> W3techs i drugim izvorima), i njihov udeo neprekidno raste. Tako da smo se za na\u0161e istra\u017eivanje fokusirali na distribucije koje su ponu\u0111ene iz kutije na platformi <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. Konkretno, izabrali smo slede\u0107e OS:<\/p>\n<p>Distribucija\/verzija<br \/>\nJedro<br \/>\nIzgradnja<\/p>\n<p>OpenSUSE 12.4<br \/>\n4.12.14-95.3-default<br \/>\n#1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)<\/p>\n<p>Debian 9 (stretch)<br \/>\n4.9.0-8-amd64<br \/>\n#1 SMP Debian 4.9.130-2 (2018-10-27)<\/p>\n<p>CentOS 6.10<br \/>\n2.6.32-754.10.1.el6.x86_64<br \/>\n#1 SMP Tue Jan 15 17:07:28 UTC 2019<\/p>\n<p>CentOS 7<br \/>\n3.10.0-957.5.1.el7.x86_64<br \/>\n#1 SMP Fri Feb 1 14:54:57 UTC 2019<\/p>\n<p>Red Hat Enterprise Linux Server 6.10 (Santiago)<br \/>\n2.6.32-754.9.1.el6.x86_64<br \/>\n#1 SMP Wed Nov 21 15:08:21 EST 2018<\/p>\n<p>Red Hat Enterprise Linux Server 7.6 (Maipo)<br \/>\n3.10.0-957.1.3.el7.x86_64<br \/>\n#1 SMP Thu Nov 15 17:36:42 UTC 2018<\/p>\n<p>Ubuntu 14.04 (Trusty Tahr)<br \/>\n4.4.0\u2013140-generic<br \/>\n <br \/>\n#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20\u2026<\/p>\n<p>Ubuntu 16.04 (Xenial Xerus)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27~16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018<\/p>\n<p>Ubuntu 18.04 (Bionic Beaver)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018<\/p>\n<p><i>Tabela 1<\/i> <\/p>\n<h1>Analiza<\/h1>\n<p>\nRazi\u0107emo konfiguraciju jezgra prema zadanim postavkama, kao i osobine paketa dostupnih putem upravitelja paketa svakog distribucije 'out-of-the-box'. Tako \u0107emo razmotriti samo pakete iz zrcala po defaultu svake distribucije, ignoriraju\u0107i pakete iz nestabilnih repozitorija (kao \u0161to su zrcala 'testing' u Debiane) i vanjske pakete (na primjer, Nvidia pakete iz standardnih zrcala). Nadalje, ne\u0107emo razmatrati korisni\u010dke kompilacije jezgra ili konfiguracije s poja\u010danom za\u0161titom.<\/p>\n<h3>Analiza konfiguracije jezgra<\/h3>\n<p>\nPrimijenili smo skriptu analize temeljenoj na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">slobodnom provjerava\u010du kconfig<\/a><\/noindex>. Istra\u017eujemo zadanju za\u0161titne postavke kod navedenih distribucija i uspore\u0111ujemo ih s popisom iz <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Projekta samoza\u0161tite jezgra<\/a><\/noindex> (KSPP). Za svaku postavku konfiguracije, tabela 2 opisuje \u017eeljenu postavku: kva\u010dica ozna\u010dava distribucije koje ispunjavaju preporuke KSSP (obja\u0161njenje termina mo\u017ee se vidjeti <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">ovde<\/a><\/noindex>; u budu\u0107im \u010dlancima \u0107emo objasniti kako su se pojavile mnoge od ovih metoda za\u0161tite i kako hakirati sustav u njihovoj odsutnosti).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOp\u0107enito, nova jezgra imaju stro\u017ee postavke iz kutije. Na primjer, CentOS 6.10 i RHEL 6.10 sa jezgrom 2.6.32 nemaju ve\u0107inu kriti\u010dnih funkcionalnosti koje su implementirane u novijim jezgrama, poput <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, stroge RWX dozvole, randomizaciju adresa ili za\u0161titu copy2usr. Treba napomenuti da mnoge od opcija konfiguracije iz tabele nedostaju u starijim verzijama jezgre i nisu primjenjive u praksi \u2014 nastavlja se navoditi kao nedostatak odgovaraju\u0107e za\u0161tite. Sli\u010dno, ako parametar konfiguracije nedostaje u ovoj verziji, a za sigurnost trebate isklju\u010diti taj parametar, smatra se razumnom konfiguracijom. <\/p>\n<p>\u0160e en vidik pri interpretaciji rezultatov: nekatere konfiguracije jedra, ki pove\u010dujejo povr\u0161ino napada, se lahko hkrati uporabljajo za varnost. Tak\u0161ni primeri vklju\u010dujejo uprobes in kprobes, module jedra ter BPF\/eBPF. Na\u0161a priporo\u010dila se osredoto\u010dajo na uporabo zgoraj omenjenih mehanizmov za zagotavljanje dejanske za\u0161\u010dite, saj so ti zapleteni za uporabo in njihova izkori\u0161\u010denost pomeni, da so zlonamerni subjekti \u017ee zakoreninjeni v sistemu. Vendar pa, \u010de so ti parametri vklju\u010deni, mora sistemski skrbnik aktivno spremljati zlorabe.<\/p>\n<p>Ob nadaljnjem pregledu zapisov iz tabele 2 ugotavljamo, da sodobna jedra ponujajo ve\u010d mo\u017enosti za za\u0161\u010dito pred izkori\u0161\u010danjem tak\u0161nih ranljivosti, kot sta uhajanje informacij in prelivanje sklada\/\u0161\u010depe. Vendar opazimo, da \u0161e najnovej\u0161i priljubljeni distribucijski sistemi \u0161e niso uvedli bolj zapletene za\u0161\u010dite (na primer s popravki <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) ali sodobne za\u0161\u010dite pred napadi ponovne uporabe kode (na primer, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">kombinacija randomizacije s shemami tipa R^X za kodo<\/a><\/noindex>). Kar je \u0161e huje, tudi ti naprednej\u0161i varnostni mehanizmi ne \u0161\u010ditijo pred celotnim spektrom napadov. Tako je skrbnikom sistemov izjemno pomembno, da razumne konfiguracije dopolnijo z re\u0161itvami, ki ponujajo odkrivanje in prepre\u010devanje izkori\u0161\u010danj med izvajanjem.<\/p>\n<h3>Analiza aplikacij<\/h3>\n<p>\nNi presenetljivo, da imajo razli\u010dni distribucijski sistemi razli\u010dne zna\u010dilnosti paketov, mo\u017enosti prevajanja, odvisnosti knji\u017enic itd. Razlike obstajajo celo med <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">sorodnimi<\/a><\/noindex> distribucijami in paketi z malo odvisnostmi (na primer coreutils v Ubuntu ali Debian). Da bi ocenili razlike, smo prenesli vse razpolo\u017eljive pakete, izvlekli njihovo vsebino in analizirali binarne datoteke ter odvisnosti. Za vsak paket smo spremljali druge pakete, od katerih je odvisen, in za vsak binarni element spremljali njegove odvisnosti. V tem razdelku bomo na kratko povzemali ugotovitve.<\/p>\n<h4>Distribucije<\/h4>\n<p>\nSkupaj smo nalo\u017eili 361.556 pakotov za vse distribucije, pri \u010demer smo izvlekli samo pakete z privzetih ogledal. Ignorirali smo pakete brez izvr\u0161nih datotek ELF, kot so izvorne kode, pisave itd. Po filtriranju je ostalo 129.569 paketov, ki vsebujejo skupno 584.457 binarnih datotek. Porazdelitev paketov in datotek po distribucijah je prikazana na sl. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Sl. 3<\/i><\/p>\n<p>Opaziti je mogo\u010de, da imajo novej\u0161e distribucije ve\u010d paketov in binarnih datotek, kar je logi\u010dno. Paketi Ubuntu in Debian vklju\u010dujejo znatno ve\u010d binarnih datotek (tako izvr\u0161nih kot dinami\u010dnih modulov in knji\u017enic) kot CentOS, SUSE in RHEL, kar potencialno vpliva na povr\u0161ino napada Ubuntu in Debian (pomembno je opozoriti, da \u0161tevilke odra\u017eajo vse binarike vseh razli\u010dic paketa, torej se nekatere datoteke analizirajo ve\u010dkrat). To je \u0161e posebej pomembno, \u010de upo\u0161tevamo odvisnosti med paketi. Odkritje ranljivosti v binarni datoteki enega paketa lahko vpliva na mnoge dele ekosistema, tako kot ranljiva knji\u017enica lahko vpliva na vse binarne datoteke, ki jo uva\u017eajo. Kot izhodi\u0161\u010de si oglejmo porazdelitev \u0161tevila odvisnosti po paketih v razli\u010dnih operacijskih sistemih:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/c6570e643d92103c87659e61f5d395a6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Sl. 4<\/i> <\/p>\n<p>Skoraj v vseh distribucijah ima 60 % paketov najmanj 10 odvisnosti. Poleg tega imajo nekateri paketi znatno ve\u010d odvisnosti (ve\u010d kot 100). Enako velja za povratne odvisnosti paketov: kot je bilo pri\u010dakovano, ve\u010d paketov uporablja mnoge druge pakete v distribuciji, zato je tveganje za ranljivosti v teh redkih izbrancih visoko. Kot primer v naslednji tabeli navajamo 20 paketov z najve\u010d povratnimi odvisnostmi v SLES, Centos 7, Debian 9 in Ubuntu 18.04 (v vsaki celici je navedena oznaka paketa in \u0161tevilo povratnih odvisnosti).<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 3<\/i><\/p>\n<p>Zanimiva dejstvo. \u010ceprav so vsi analizirani operacijski sistemi zgrajeni za arhitekturo x86_64, in ima ve\u010dina paketov arhitekturo definirano kot x86_64 in x86, pa paketi pogosto vsebujejo binarne datoteke za druge arhitekture, kot je prikazano na sl. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Sl. 5<\/i><\/p>\n<p>V naslednjem razdelku se poglobimo v zna\u010dilnosti analiziranih binarnih datotek.<\/p>\n<h4>Statistika za\u0161\u010dite binarnih datotek<\/h4>\n<p>\nKot absolutni minimum je treba prou\u010diti osnovni nabor mo\u017enosti za\u0161\u010dite za obstoje\u010de binarne datoteke. Nekateri Linux distribucije prihajajo s skripti, ki izvajajo take preglede. Na primer, v Debianu\/Ubuntuu obstaja tak skript. Tukaj je primer njegove uporabe:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Neodvisna izvr\u0161ljiva datoteka: ja\n Zaslon za\u0161\u010diten: ja\n Fortify Source funkcije: ne, najdene so le ne za\u0161\u010ditene funkcije!\n Najprej samo za branje: ja\n Takoj\u0161nje povezovanje: ja<\/code><\/pre>\n<p>\nSkript preverja pet <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">za\u0161\u010ditnih funkcij<\/a><\/noindex>:<\/p>\n<ul>\n<li>Neodvisna izvr\u0161ljiva datoteka (PIE): ka\u017ee, ali je mogo\u010de v pomnilniku premakniti besedilni oddelek programa, da bi dosegli naklju\u010dnost, \u010de je v jedru omogo\u010den ASLR.\n<\/li>\n<li>Zaslon za\u0161\u010diten: ali so zajeti za\u0161\u010ditni kanar\u010dki za za\u0161\u010dito pred napadi na sklad.\n<\/li>\n<li>Fortify Source: ali se nevarne funkcije (na primer strcpy) zamenjajo z njihovimi bolj varnimi analogi, medtem ko se pri preverjanju v \u010dasu izvajanja uporabljajo njihovi nepreverjeni analogi (na primer memcpy namesto __memcpy_chk).\n<\/li>\n<li>Read-only relocations (RELRO): ali so vnosi v tabeli premikanja ozna\u010deni kot \"samo za branje\", \u010de so delovali pred za\u010detkom izvajanja.\n<\/li>\n<li>Takoj\u0161nje povezovanje: ali izvajalni linker dovoli vse premike pred za\u010detkom izvajanja programa (to je ekvivalentno popolnemu RELRO).<\/li>\n<\/ul>\n<p>\nAli je teh mehanizmov dovolj? Na \u017ealost ni. Znani so na\u010dini zaobiditve vseh zgoraj navedenih za\u0161\u010dit, vendar vi\u0161ja kot je za\u0161\u010dita, vi\u0161ja je tudi meja za napadalca. Na primer, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">metode zaobitja RELRO<\/a><\/noindex> so te\u017eje uporabiti, \u010de deluje PIE in takoj\u0161nje povezovanje. Podobno, popoln ASLR zahteva dodatno delo za ustvarjanje funkcionalnega izkori\u0161\u010da. Vendar so sofisticirani napadalci \u017ee pripravljeni na tak\u0161ne za\u0161\u010dite: njihovo pomanjkanje v bistvu pospe\u0161i hekerske napade. Zato je izjemno pomembno, da se te ukrepe obravnava kot nujne, <i>minimum<\/i>. <\/p>\n<p>\u017deleli smo raziskati, koliko binarnih datotek v obravnavanih distribucijah je za\u0161\u010ditenih s temi, in \u0161e tremi metodami:<\/p>\n<ul>\n<li>Neizvr\u0161ni bit (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) prepre\u010duje izvajanje v katerem koli obmo\u010dju, ki ne bi smelo biti izvr\u0161ljivo, na primer na skladni kup in podobno.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> ozna\u010duje pot izvajanja, ki ga dinami\u010dni nalagalnik uporablja za iskanje ustreznih knji\u017enic. Prvi je <i>obvezen<\/i> \u0437\u0430 \u043b\u044e\u0431\u043e\u0439 \u0441\u043e\u0432\u0440\u0435\u043ceni \u0441\u0438\u0441\u0442\u0435\u043cu: \u0435\u0451 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u0451 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0443\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0432 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0440\u044f\u0434\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">\u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/a><\/noindex>, kao i <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">\u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/a><\/noindex>).<\/li>\n<li>\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u043e\u0442 \u0430\u0442\u0430\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0442\u0435\u043a \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043a\u0443\u0447\u0443). \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0435 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u044b, \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0438\u0435 <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u0447\u0438 \u0432 systemd<\/a><\/noindex>, \u043c\u044b \u0441\u043e\u0447\u043b\u0438 \u0443\u043c\u0435\u0441\u0442\u043d\u044b\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432 \u043d\u0430\u0448 \u043d\u0430\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<\/ul>\n<p>\n\u0418\u0442\u0430\u043a, \u0431\u0435\u0437 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0446\u0435\u0440\u0435\u043c\u043e\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0447\u0438\u0441\u043b\u0430\u043c. \u0422\u0430\u0431\u043b\u0438\u0446\u044b 4 \u0438 5 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432\u044b\u0436\u0438\u043c\u043a\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<ul>\n<li>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0437\u0430\u0449\u0438\u0442\u0430 NX \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432\u0435\u0437\u0434\u0435, \u0437\u0430 \u0440\u0435\u0434\u043a\u0438\u043c\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0435 \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 Ubuntu \u0438 Debian \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 CentOS, RHEL \u0438 OpenSUSE.\n<\/li>\n<li>\u0421\u0442\u0435\u043a\u043e\u0432\u044b\u0435 \u043a\u0430\u043d\u0430\u0440\u0435\u0439\u043a\u0438 \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 Centos, RHEL, Debian \u0438 Ubuntu.\n<\/li>\n<li>\u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c Debian \u0438 Ubuntu 18.04, \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 \u043f\u043b\u043e\u0445\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PIE.\n<\/li>\n<li>\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u0441\u0442\u0435\u043a\u0430 \u0441\u043b\u0430\u0431\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 OpenSUSE, Centos 7 \u0438 RHEL 7 \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445.\n<\/li>\n<li>\u0412\u0441\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b \u0441 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438 \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 RELRO, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 Ubuntu 18.04, \u0430 \u0432\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 Debian.<\/li>\n<\/ul>\n<p>\n\u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u2014 \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044f\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0415\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e \u0446\u0438\u0444\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043c. <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 Debian \u0441 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c PIE<\/a><\/noindex>). \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u043a\u043e\u0434\u0435, \u0430 \u0432 \u043d\u0430\u0448\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0443\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b 5 \u0438\u0437 50 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u0435\u043c\u0443 \u043e\u0446\u0435\u043d\u043a\u0443 0,1, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 10% \u0443\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4. \u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0438\u0441. 3 (\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 5. Lastnosti za\u0161\u010dite za knji\u017enice, prikazane na sl. 3 (izvedba ustreznih funkcij v odstotkih od skupnega \u0161tevila knji\u017enic)<\/i><\/p>\n<p>Torej, napredek obstaja? Nedvomno: to je razvidno iz statistike po posameznih distribucijah (na primer, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), kot tudi iz zgoraj predstavljenih tabel. Kot primer slika 6 prikazuje uvedbo za\u0161\u010ditnih mehanizmov v treh zaporednih distribucijah Ubuntu LTS 5 (statistika za\u0161\u010dite pred naletom sklada je izpu\u0161\u010dena). Opazimo, da od razli\u010dice do razli\u010dice vse ve\u010d datotek podpira kanar\u010dke sklada, prav tako pa tudi vse ve\u010d binarnih datotek prihaja s polno za\u0161\u010dito RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Milioni binarnih datoteka kasnije. Kako se Linux ja\u010dao\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Slika 6<\/i><\/p>\n<p>\u017dal nekateri izvr\u0161ljivi datoteki v razli\u010dnih distribucijah \u0161e vedno nimajo nobene od zgoraj navedenih za\u0161\u010dit. Na primer, ob pogledu na Ubuntu 18.04 lahko opazite binarno datoteko ngetty (nadomestilo za getty), pa tudi lupini mksh in lksh, interpreter picolisp, pakete nvidia-cuda-toolkit (priljubljen paket za aplikacije z GPU pospe\u0161itvijo, kot so ogrodja strojnega u\u010denja) in klibc-utils. Prav tako se binarna datoteka mandos-client (administrativno orodje, ki omogo\u010da samodejno ponovni zagon strojev s \u0161ifriranimi datote\u010dnimi sistemi), pa tudi rsh-redone-client (ponovna implementacija rsh in rlogin) dobavljata brez za\u0161\u010dite NX, \u010deprav imajo pravice SUID :(. Poleg tega ve\u010d binarnih datotek suid nima osnovne za\u0161\u010dite, kot so kanar\u010dki sklada (na primer, binarna datoteka Xorg.wrap iz paketa Xorg).<\/p>\n<h1>Povzetek in zaklju\u010dne opombe<\/h1>\n<p>\nV tem \u010dlanku smo opozorili na nekaj varnostnih lastnosti sodobnih distribucij Linuxa. Analiza je pokazala, da ima najnovej\u0161a distribucija Ubuntu LTS (18.04) povpre\u010dno najmo\u010dne za\u0161\u010ditne mehanizme na ravni operacijskega sistema in aplikacij med distribucijami z razmeroma novimi jedri, kot sta Ubuntu 14.04, 12.04 in Debian 9. Vendar pa obravnavane distribucije CentOS, RHEL in OpenSUSE v na\u0161em naboru podatkov privzeto nudijo bolj gosto izbiro paketov, pri \u010demer imajo najnovej\u0161e razli\u010dice (CentOS in RHEL) vi\u0161ji odstotek izvedbe za\u0161\u010dite pred prelivanjem sklada v primerjavi s konkurenti, ki temeljijo na Debiantu (Debian in Ubuntu). Pri primerjavi razli\u010dic CentOS in RedHat opa\u017eamo velike izbolj\u0161ave pri uvajanju kanar\u010dkov za sklad in RELRO z razli\u010dic 6 na 7, a na splo\u0161no je v CentOS implementiranih ve\u010d funkcij kot v RHEL. Na splo\u0161no bi morali vsi distribucije posvetiti posebno pozornost za\u0161\u010diti PIE, ki je, razen pri Debiantu 9 in Ubuntuju 18.04, implementirana v manj kot 10% binarnih datotek iz na\u0161ega nabora podatkov. <\/p>\n<p>Nazadnje je treba omeniti: \u010deprav smo raziskavo izvedli ro\u010dno, obstaja mnogo varnostnih orodij (na primer, <noindex><a rel=\"nofollow\" href=\"https:\/\/cisofy.com\/lynis\/\">Lynis<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nongnu.org\/tiger\/\">Tiger<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/hubblestack\/hubble\">Hubble<\/a><\/noindex>), ki izvajajo analize in pomagajo prepre\u010devati nevarne konfiguracije. Na \u017ealost niti mo\u010dna za\u0161\u010dita v razumnih konfiguracijah ne zagotavlja brezizhodnosti pred izkori\u0161\u010denji. Zato smo prepri\u010dani, da je izjemno pomembno zagotoviti <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">zanesljiv nadzor in prepre\u010devanje napadov v realnem \u010dasu<\/a><\/noindex>, osredoto\u010dajo\u010d se na vzorce izkori\u0161\u010danj in prepre\u010dujejo njihove izvedbe.<\/p>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444418\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>TL;DR. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b (hardening schemes), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u044f\u0442\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 Linux. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u044f\u0434\u0440\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u0449\u0438\u0442\u044b \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 \u0438 7, \u0430 \u0442\u0430\u043a\u0436\u0435 Ubuntu 14.04, 12.04 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-29880","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"TL;DR.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0441\u043f\u0443\u0441\u0442\u044f. \u041a\u0430\u043a \u0443\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u0441\u044f Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"TL;DR.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:32:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:32:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Milijoni binarnih datotek kasneje. Kako se je okrepil Linux | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u0441\u043f\u0443\u0441\u0442\u044f. \u041a\u0430\u043a \u0443\u043a\u0440\u0435\u043f\u043b\u044f\u043b\u0441\u044f Linux | ProHoster","og:description":"TL;DR.","og:url":"https:\/\/prohoster.info\/sl\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:32:27+00:00","article:modified_time":"2019-10-31T18:32:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"29880","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-20 22:50:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:46:28","updated":"2026-01-20 22:50:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}