{"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\/no\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. I denne artikkelen utforskar vi sikringsordningar (hardening schemes) som kjem standard i fem popul\u00e6re Linux-distribusjonar. For kvar av dei har vi brukt standard kjernekonfigurasjon, lasta ned alle pakkar og analysert sikringsskjemer i innbundne bin\u00e6rar. Vi vurderer distribusjonane OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 og 7, samt Ubuntu 14.04, 12.04 og 18.04 LTS. <\/p>\n<p>Resultata bekreftar at sj\u00f8lv grunnleggjande skjemer som stabelkanariar og posisjonsuavhengig kode, enno ikkje blir brukt av alle. Situasjonen er enda verre for kompilatorar n\u00e5r det kjem til \u00e5 sikre mot s\u00e5rbarheiter som stabelkollisjon (stack clash), som fekk oppmerksomheit i januar etter publiseringa av <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">informasjon om s\u00e5rbarheiter i systemd<\/a><\/noindex>. Men ikkje alt er s\u00e5 h\u00e5plaust. I ein betydelig del av bin\u00e6rane er grunnleggjande sikre metodar implementert, og talet p\u00e5 desse auke fr\u00e5 versjon til versjon. <\/p>\n<p>Sjekken viste at det st\u00f8rste antallet sikre metodar er implementert i Ubuntu 18.04 p\u00e5 eit OS- og applikasjonsniv\u00e5, deretter kjem Debian 9. P\u00e5 den andere sida har OpenSUSE 12.4, CentOS 7 og RHEL 7 ogs\u00e5 basale sikringsordningar, og beskyttinga mot stabelkollisjon blir utnytta enda breiare med eit mykje tettare sett av pakkar som standard.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Innledning<\/h1>\n<p>\nDet er vanskeleg \u00e5 sikre h\u00f8g kvalitet p\u00e5 programvara. Til tross for det enorme antallet av avanserte verkt\u00f8y for statisk kodeanalyse og dynamisk analyse under kj\u00f8ring, samt betydelig framgang i utviklinga av kompilatorar og programmeringsspr\u00e5k, lider moderne programvare framleis av s\u00e5rbarheiter som stadig blir utnytta av angriparar. Situasjonen er enda meir prek\u00e6r i \u00f8kosystem som inkluderer foreldra kode. I slike tilfeller m\u00f8ter vi ikkje berre det evige problemet med \u00e5 finne potensielle utnyttbare feil, men ogs\u00e5 er vi avgrensa av strenge rammer for bakoverkompatibilitet som ofte krev at vi m\u00e5 bevare begrensa, og enda verre, s\u00e5rbar eller feilaktig kode.<\/p>\n<p>Her kjem sikringsmetodane eller forsterkende program (hardening) inn i spelet. Nokre typar feil kan vi ikkje forhindre, men vi kan gjere livet til angriparen meir komplisert og delvis l\u00f8yse problemet ved \u00e5 forhindre eller hindre <i>utnyttelse<\/i> disse feilene. Slik beskyttelse brukes i alle moderne operativsystemer, men metodene varierer sterkt i kompleksitet, effektivitet og ytelse: fra stakkens kanarifugler (stack canaries) og <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> til fullverdige beskyttelser <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. I denne artikkelen vil vi se p\u00e5 hvilke beskyttelsesmetoder som brukes i de mest popul\u00e6re Linux-distribusjonene med standardkonfigurasjon, samt unders\u00f8ke egenskapene til bin\u00e6rfiler som distribueres gjennom pakkebehandlingssystemene til hver distribusjon.<\/p>\n<h3>CVE og sikkerhet<\/h3>\n<p>\nVi har alle sett artikler med titler som \u00abDe mest s\u00e5rbare applikasjonene i \u00e5ret\u00bb eller \u00abDe mest s\u00e5rbare operativsystemene\u00bb. Vanligvis presenteres det statistikk over det totale antallet registreringer av s\u00e5rbarheter av typen <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, hentet fra <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">Nasjonal s\u00e5rbarhetsdatabase (NVD)<\/a><\/noindex> fra <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> og andre kilder. Senere rangeres disse applikasjonene eller OSene ut fra antall CVE. Dessverre, selv om CVE er sv\u00e6rt nyttige for \u00e5 redusere problemer og informere leverand\u00f8rer og brukere, sier de lite om den faktiske sikkerheten til programvaren.<\/p>\n<p>Som et eksempel kan vi se p\u00e5 det totale antallet CVE de siste fire \u00e5rene for Linux-kjernen og de fem mest popul\u00e6re serverdistribusjonene, nemlig Ubuntu, Debian, Red Hat Enterprise Linux og OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1<\/i><\/p>\n<p>Hva forteller denne grafen oss? Betyr et h\u00f8yere antall CVE at en distribusjon er mer s\u00e5rbar enn en annen? Svaret er nei. For eksempel, i denne artikkelen vil du se at Debian har implementert strengere beskyttelsesmekanismer sammenlignet med for eksempel OpenSUSE eller RedHat Linux, og allikevel har Debian flere CVE. Men de betyr ikke n\u00f8dvendigvis svekket sikkerhet: selv tilstedev\u00e6relsen av CVE sier ikke noe om en s\u00e5rbarhet er <i>utnyttbar<\/i>. Alvorlighetsgradsratinger gir en indikasjon p\u00e5 hvor <i>sannsynlig<\/i> det er at en s\u00e5rbarhet blir utnyttet, men til syvende og sist avhenger utnyttbarheten i stor grad av beskyttelsen som er til stede i de ber\u00f8rte systemene, samt ressursene og evnene til angriperne. Videre sier frav\u00e6ret av CVE-rapporter ikke noe om andre <i>uregistrerte eller ukjente<\/i> Sikkerhetsproblemer. Forskjellen i CVE kan forklares ikke med kvaliteten p\u00e5 programvaren, men med andre faktorer, inkludert ressursene som er avsatt til testing, eller st\u00f8rrelsen p\u00e5 brukerbasen. I v\u00e5rt eksempel kan et h\u00f8yere antall CVE hos Debian bare indikere at Debian leverer flere programvarepakker. <\/p>\n<p>Selvf\u00f8lgelig gir CVE-systemet nyttig informasjon som muliggj\u00f8r utvikling av passende beskyttelser. Jo bedre vi forst\u00e5r \u00e5rsakene til programfeil, desto enklere er det \u00e5 identifisere mulige utnyttelsesmetoder og utvikle relevante mekanismer <i>for oppdagelse og respons.<\/i>Fig. 2 viser kategoriene av s\u00e5rbarheter for alle distribusjoner de siste fire \u00e5rene (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">kilde<\/a><\/noindex>). Det er umiddelbart synlig at de fleste CVE faller innenfor f\u00f8lgende kategorier: tjenestenekt (DoS), kodegjennomf\u00f8ring, buffer-overl\u00f8p, minneskade, lekkasje (eksfiltrering) av informasjon og privilegieheving. Selv om mange CVE er registrert flere ganger under forskjellige kategorier, forblir de samme problemene generelt \u00e5r etter \u00e5r. I neste del av artikkelen vil vi vurdere bruken av forskjellige beskyttelsesskjemaer for \u00e5 forhindre utnyttelse av de nevnte s\u00e5rbarhetene.<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2<\/i><\/p>\n<h3>Oppgaver<\/h3>\n<p>\nI denne artikkelen har vi til hensikt \u00e5 svare p\u00e5 f\u00f8lgende sp\u00f8rsm\u00e5l:<\/p>\n<ul>\n<li>Hva er sikkerheten til de ulike Linux-distribusjonene? Hvilke beskyttelsesmekanismer eksisterer i kjernen og i applikasjoner i brukerrommet?\n<\/li>\n<li>Hvordan har bruken av beskyttelsesmekanismer endret seg over tid for ulike distribusjoner?\n<\/li>\n<li>Hva er de gjennomsnittlige avhengighetene av pakker og biblioteker for hver distribusjon?\n<\/li>\n<li>Hvilke beskyttelser er implementert for hvert bin\u00e6rprogram?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Valg av distribusjoner<\/h3>\n<p>\nDet viser seg \u00e5 v\u00e6re vanskelig \u00e5 finne n\u00f8yaktig statistikk om installasjoner av distribusjoner, siden antall nedlastinger i de fleste tilfeller ikke indikerer antall reelle installasjoner. Likevel utgj\u00f8r Unix-alternativer flertallet av serverbaserte systemer (69,2 % p\u00e5 webservere, if\u00f8lge <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">statistikkerne<\/a><\/noindex> W3techs og andre kilder), og deres andel vokser stadig. S\u00e5 for v\u00e5r studie har vi fokusert p\u00e5 distribusjoner tilgjengelig ut av boksen p\u00e5 plattformen <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. Spesielt valgte vi f\u00f8lgende OS:<\/p>\n<p>Distribusjon\/versjon<br \/>\nKjerne<br \/>\nBygg<\/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>Tabell 1<\/i> <\/p>\n<h1>Analyse<\/h1>\n<p>\nVi vil se p\u00e5 standard kjernekonfigurasjon samt egenskaper ved pakkene tilgjengelig via pakkebehandleren for hver distribusjon fra starten av. Dermed vurderer vi kun pakkene fra standard speil for hver distribusjon, mens vi fors\u00f8mmer pakker fra ustabile depot (f.eks. speil \u2018testing\u2019 i Debian) og tredjeparts pakker (f.eks. Nvidia-pakker fra standard speil). I tillegg vurderer vi ikke brukerspesifikke kernelkompileringer eller konfigurasjoner med \u00f8kt sikkerhet.<\/p>\n<h3>Analyse av kjernekonfigurasjon<\/h3>\n<p>\nVi har brukt et analyseskjema basert p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">den frie sjekker kconfig<\/a><\/noindex>. Vi vurderer sikkerhetsinnstillingene fra starten av for de nevnte distribusjonene og sammenligner dem med listen fra <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Prosjektet for kjernebeskyttelse<\/a><\/noindex> (KSPP). For hver konfigurasjonsinnstilling beskriver tabell 2 \u00f8nsket konfigurasjon: en avkryssing gjelder for distribusjoner som f\u00f8lger anbefalingene fra KSSP (forklaring av begrepene se <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">her<\/a><\/noindex>; i kommende artikler vil vi forklare hvordan mange av disse beskyttelsestiltakene oppsto og hvordan man kan hacke systemet i deres frav\u00e6r).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenerelt har de nye kjernene strengere standardinnstillinger. For eksempel har CentOS 6.10 og RHEL 6.10 med kernel 2.6.32 de fleste kritiske funksjonene implementert i de nye kjernene, slik som <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, strenge RWX-tilganger, adresse-randomisering eller beskyttelse av copy2usr. Det er verdt \u00e5 merke seg at mange av konfigurasjonsalternativene fra tabellen mangler i eldre versjoner av kjernen og ikke er anvendelige i praksis \u2014 selv om dette angis i tabellen som mangel p\u00e5 tilstrekkelig beskyttelse. P\u00e5 samme m\u00e5te, dersom en konfigurasjonsparameter mangler i denne versjonen, men for sikkerhetens skyld m\u00e5 denne parameteren deaktiveres, anses dette som en rimelig konfigurasjon. <\/p>\n<p>En annen viktig faktor ved tolkning av resultater er at noen kjernekonfigurasjoner, som \u00f8ker angrepsflaten, samtidig kan brukes til sikkerhet. Eksempler inkluderer uprobes og kprobes, kjernekmoduler og BPF\/eBPF. V\u00e5r anbefaling er \u00e5 bruke de nevnte mekanismene for \u00e5 sikre faktisk beskyttelse, da de ikke er trivielle \u00e5 bruke, og deres utnyttelse forutsetter at ondsinnede akt\u00f8rer allerede har f\u00e5tt fotfeste i systemet. Men hvis disse alternativene er aktivert, b\u00f8r systemadministratoren aktivt overv\u00e5ke misbruk.<\/p>\n<p>Ved videre studier av tabell 2 ser vi at moderne kjerner tilbyr flere alternativer for beskyttelse mot utnyttelse av s\u00e5rbarheter som informasjonslekkasje og stakk\/heap-overl\u00f8p. Vi merker imidlertid at selv de nyeste popul\u00e6re distribusjonene enn\u00e5 ikke har implementert mer avansert beskyttelse (for eksempel med lappene <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) eller moderne beskyttelse mot angrep med kodegjengivelse (for eksempel, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">kombinasjon av tilfeldiggj\u00f8ring med R^X-ordninger for kode<\/a><\/noindex>). Hva som er enda mer bekymringsfullt, er at selv disse mer avanserte beskyttelsene ikke beskytter mot hele spekteret av angrep. Det er derfor kritisk for systemadministratorer \u00e5 supplere fornuftige konfigurasjoner med l\u00f8sninger som tilbyr oppdagelse og forebygging av utnyttelser under kj\u00f8ring.<\/p>\n<h3>Applikasjonsanalyse<\/h3>\n<p>\nDet er ikke overraskende at forskjellige distribusjoner har forskjellige egenskaper som pakkekomprimering, kompilasjonsinnstillinger, biblioteksavhengigheter osv. Det er til og med forskjeller for <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">beslektede<\/a><\/noindex> distribusjoner og pakker med f\u00e5 avhengigheter (for eksempel coreutils i Ubuntu eller Debian). For \u00e5 vurdere forskjellene lastet vi ned alle tilgjengelige pakker, ekstraherte innholdet og analyserte bin\u00e6rfilene og avhengighetene. For hver pakke sporet vi andre pakker som den er avhengig av, og for hver bin\u00e6rfil sporet vi avhengighetene. I dette avsnittet gir vi en kort oppsummering av funnene.<\/p>\n<h4>Distribusjoner<\/h4>\n<p>\nTotalt har vi lastet opp 361\u00a0556 pakker for alle distribusjoner, og trukket ut kun pakker fra standard speil. Vi ignorerte pakker uten ELF-kj\u00f8rbare filer, som kildekoder, skrifttyper osv. Etter filtrering gjensto 129\u00a0569 pakker som til sammen inneholder 584\u00a0457 bin\u00e6re filer. Fordelingen av pakker og filer blant distribusjonene er vist i figur 3.<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3<\/i><\/p>\n<p>Det er tydelig at jo mer moderne distribusjonen er, desto flere pakker og bin\u00e6re filer inneholder den, noe som er logisk. Samtidig inkluderer pakker fra Ubuntu og Debian betydelig flere bin\u00e6re filer (b\u00e5de kj\u00f8rbare og dynamiske moduler og biblioteker) enn CentOS, SUSE og RHEL, noe som potensielt p\u00e5virker angrepsflaten til Ubuntu og Debian (det er verdt \u00e5 merke seg at tallene reflekterer alle bin\u00e6rere av alle versjoner av pakken, noe som betyr at enkelte filer analyseres flere ganger). Dette er spesielt viktig \u00e5 ta i betraktning n\u00e5r vi ser p\u00e5 avhengighetene mellom pakkene. Dermed kan en s\u00e5rbarhet i bin\u00e6ren av \u00e9n pakke p\u00e5virke mange deler av \u00f8kosystemet, ettersom en s\u00e5rbar biblioteksfil kan p\u00e5virke alle bin\u00e6re filer som importerer den. Vi tar som utgangspunkt fordelingen av antall avhengigheter blant pakkene i ulike OS:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/c6570e643d92103c87659e61f5d395a6.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Fig. 4<\/i> <\/p>\n<p>Nesten alle distribusjoner har 60% av pakkene med minst 10 avhengigheter. I tillegg har noen pakker et betydelig h\u00f8yere antall avhengigheter (over 100). Det samme gjelder for omvendte avhengigheter av pakkene: som ventet brukes flere pakker av mange andre pakker i distribusjonen, s\u00e5 s\u00e5rbarheter i disse f\u00e5 utvalgte har en h\u00f8y risiko. Som et eksempel er de 20 pakkene med flest omvendte avhengigheter i SLES, Centos 7, Debian 9 og Ubuntu 18.04 listet opp i tabellen nedenfor (hver celle indikerer pakken og antall omvendte avhengigheter).<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabell 3<\/i><\/p>\n<p>Et interessant faktum. Selv om alle analyserte OS-er er bygget for x86_64-arkitekturen, og for de fleste pakker er arkitekturen definert som x86_64 og x86, inneholder pakkene ofte bin\u00e6re filer for andre arkitekturer, som vist i figur 5.<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5<\/i><\/p>\n<p>I neste del vil vi dykke dypere inn i egenskapene til de analyserte bin\u00e6rfilene.<\/p>\n<h4>Statistikk om beskyttelse av bin\u00e6re filer<\/h4>\n<p>\nSom minimum m\u00e5 du l\u00e6re grunnleggende beskyttelsesalternativer for eksisterende bin\u00e6rfiler. Flere Linux-distribusjoner leveres med skript som utf\u00f8rer slike sjekker. For eksempel har Debian\/Ubuntu et slikt skript. Her er et eksempel p\u00e5 hvordan det fungerer:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Posisjon Uavhengig Kj\u00f8rbar: ja\n Stakk beskyttet: ja\n Fortify Source-funksjoner: nei, kun ubeskyttede funksjoner funnet!\n Skrivbeskyttede omplasseringer: ja\n Umiddelbar binding: ja<\/code><\/pre>\n<p>\nSkriptet sjekker fem <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">beskyttelsesfunksjoner<\/a><\/noindex>:<\/p>\n<ul>\n<li>Posisjon Uavhengig Kj\u00f8rbar (PIE): indikerer om tekstseksjonen til programmet kan flyttes i minnet for \u00e5 oppn\u00e5 tilfeldig plassering, hvis ASLR er aktivert i kjernen.\n<\/li>\n<li>Stakk Beskyttet: om stakk-kanarifugler er aktivert for beskyttelse mot stakk-kollisjonsangrep.\n<\/li>\n<li>Fortify Source: om usikre funksjoner (for eksempel strcpy) blir erstattet med mer sikre alternativer, og runtime-kall som sjekkes er deres usjekkede alternativer (for eksempel memcpy i stedet for __memcpy_chk).\n<\/li>\n<li>Skrivbeskyttede omplasseringer (RELRO): om oppf\u00f8ringer i omplasseringsbordet er merket som 'bare for lesing', hvis de ble aktivert f\u00f8r programutf\u00f8relsen begynte.\n<\/li>\n<li>Umiddelbar binding: tillater omkobler av runtime \u00e5 resolvere alle omplasseringer f\u00f8r programmet startes (dette er ekvivalent med full RELRO).<\/li>\n<\/ul>\n<p>\nEr de nevnte mekanismene tilstrekkelige? Dessverre nei. Det er kjente metoder for \u00e5 omg\u00e5 alle nevnte beskyttelser, men jo strengere beskyttelsen er, jo h\u00f8yere er terskelen for angriperen. For eksempel, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">metoder for \u00e5 omg\u00e5 RELRO<\/a><\/noindex> er vanskeligere \u00e5 anvende n\u00e5r PIE og umiddelbar binding er aktiv. Tilsvarende krever full ASLR mer arbeid for \u00e5 lage en fungerende eksploit. Imidlertid er sofistikerte angripere allerede klare til \u00e5 m\u00f8te slike beskyttelser: frav\u00e6ret av dem vil i praksis akselerere angrepene. Derfor er det ekstremt viktig at disse tiltakene vurderes som et n\u00f8dvendig <i>minimum<\/i>. <\/p>\n<p>Vi \u00f8nsket \u00e5 unders\u00f8ke hvor mange bin\u00e6rfiler i de aktuelle distribusjonene som er beskyttet av disse, samt tre andre metoder:<\/p>\n<ul>\n<li>Ikke-kj\u00f8rbar bit (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) forhindrer kj\u00f8ring i hvilken som helst region som ikke skal v\u00e6re kj\u00f8rbar, for eksempel p\u00e5 stakkhopen, osv.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> angir kj\u00f8rebanen som brukes av den dynamiske lasteren for \u00e5 finne riktige biblioteker. Den f\u00f8rste er <i>obligatorisk<\/i> for any modern system: its absence allows attackers to arbitrarily write payloads into memory and execute them as-is. For the second point, incorrect execution path configurations contribute to the introduction of unreliable code, which can lead to a number of issues (for example, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">privilege escalation<\/a><\/noindex>, samt <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">other issues<\/a><\/noindex>).<\/li>\n<li>Stack collision protection safeguards against attacks that make the stack overlap with other memory areas (for example, with the heap). Considering recent exploits that take advantage of <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">heap collision vulnerabilities in systemd<\/a><\/noindex>, we found it appropriate to include this mechanism in our dataset.<\/li>\n<\/ul>\n<p>\nSo, without further ado, let's move on to the numbers. Tables 4 and 5 provide a summary of the analysis of executable files and libraries from various distributions, respectively.<\/p>\n<ul>\n<li>As you can see, NX protection is implemented everywhere, with few exceptions. Notably, there is somewhat lower usage in the Ubuntu and Debian distributions compared to CentOS, RHEL, and OpenSUSE.\n<\/li>\n<li>Stack canaries are often absent, especially in distributions with older kernels. Some progress is observed in the latest distributions of CentOS, RHEL, Debian, and Ubuntu.\n<\/li>\n<li>Except for Debian and Ubuntu 18.04, most distributions have poor PIE support.\n<\/li>\n<li>Stack collision protection is weakly implemented in OpenSUSE, CentOS 7, and RHEL 7, and is virtually absent in others.\n<\/li>\n<li>All distributions with modern kernels have some support for RELRO, with Ubuntu 18.04 leading, followed by Debian.<\/li>\n<\/ul>\n<p>\nAs mentioned, the metrics in this table are averages across all versions of the binary file. If we look only at the latest versions of the files, the numbers will differ (for example, see <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian's progress with the implementation of PIE<\/a><\/noindex>). Moreover, most distributions typically check the security of only a few functions in the binary code when calculating statistics, while our analysis indicates the true percentage of fortified functions. Therefore, if 5 out of 50 functions are secured in a binary, we will give it a score of 0.1, representing 10% fortified functions.<\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Table 4. Protection characteristics for executable files shown in Figure 3 (implementation of relevant functions as a percentage of the total number of executable files)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabell 5. Beskyttelsesegenskaper for bibliotekene vist i figur 3 (implementering av de aktuelle funksjonene i prosent av totalt antall biblioteker)<\/i><\/p>\n<p>Er det fremgang? Definitivt: dette kan sees i statistikken for individuelle distribusjoner (for eksempel <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), samt i tabellene som er nevnt ovenfor. Som et eksempel viser figur 6 implementeringen av beskyttelsesmekanismer i tre p\u00e5f\u00f8lgende distribusjoner av Ubuntu LTS 5 (vi har utelatt statistikken for beskyttelse mot stakkoverl\u00f8p). Vi ser at fra versjon til versjon st\u00f8tter stadig flere filer stakk-kanyler, og at stadig flere bin\u00e6re filer leveres med full RELRO-beskyttelse.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Millionar av bin\u00e6rar seinare. Korleis Linux har styrkt seg\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Figur 6<\/i><\/p>\n<p>Dessverre har en rekke kj\u00f8rbare filer i forskjellige distribusjoner fremdeles ikke noen av beskyttelsene nevnt ovenfor. For eksempel, ved \u00e5 se p\u00e5 Ubuntu 18.04, kan man observere bin\u00e6ren ngetty (erstatning for getty), samt skallene mksh og lksh, tolken picolisp, pakkene nvidia-cuda-toolkit (en popul\u00e6r pakke for applikasjoner med GPU-akselerasjon, som maskinl\u00e6ringsrammeverk) og klibc-utils. Tilsvarende leveres bin\u00e6ren mandos-client (et administrasjonsverkt\u00f8y som automatisk kan starte opp maskiner med krypterte filsystemer), samt rsh-redone-client (en nyimplementering av rsh og rlogin) uten NX-beskyttelse, selv om de har SUID-rettigheter :(. I tillegg er det i flere suid-bin\u00e6re filer ingen grunnleggende beskyttelse, som stakk-kanyler (for eksempel bin\u00e6rfilen Xorg.wrap fra pakken Xorg).<\/p>\n<h1>Sammendrag og avsluttende bemerkninger<\/h1>\n<p>\nI denne artikkelen har vi fremhevet flere sikkerhetsegenskaper ved moderne Linux-distribusjoner. Analysen viste at den nyeste Ubuntu LTS-distribusjonen (18.04) i gjennomsnitt har det sterkeste sikkerhetsniv\u00e5et for operativsystem og applikasjoner blant distribusjoner med relativt nye kjerner, som Ubuntu 14.04, 12.04 og Debian 9. Derimot leverer distribusjonene CentOS, RHEL og OpenSUSE i v\u00e5rt datasett som standard et tettere pakket sett, og i de nyeste versjonene (CentOS og RHEL) har de en h\u00f8yere prosentandel av implementering av beskyttelse mot stakkekollisjon, sammenlignet med konkurrentene basert p\u00e5 Debian (Debian og Ubuntu). N\u00e5r vi sammenligner versjoner av CentOS og RedHat, ser vi store forbedringer i implementeringen av stakkekanari og RELRO fra versjon 6 til 7, men i snitt er det implementert flere funksjoner i CentOS enn i RHEL. Generelt b\u00f8r alle distribusjoner ha et spesielt fokus p\u00e5 PIE-beskyttelse, som, unntatt Debian 9 og Ubuntu 18.04, er implementert i mindre enn 10 % av de bin\u00e6re filene i v\u00e5rt datasett. <\/p>\n<p>Til slutt b\u00f8r det bemerkes: selv om vi har utf\u00f8rt forskningen manuelt, finnes det mange sikkerhetsverkt\u00f8y (for eksempel, <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>), som foretar analyser og hjelper med \u00e5 unng\u00e5 usikre konfigurasjoner. Dessverre garanterer selv sterk beskyttelse i rimelige konfigurasjoner ikke frav\u00e6r av exploits. Derfor er vi fast overbevist om at det er avgj\u00f8rende \u00e5 sikre <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">p\u00e5litelige overv\u00e5king og beskyttelse mot angrep i sanntid<\/a><\/noindex>, med fokus p\u00e5 utnyttelsesmodeller og forhindre dem.<\/p>\n<p>Kilde: <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.5 - 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\/no\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Millioner av bin\u00e6rfiler senere. Hvordan Linux har blitt sterkere | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}