{"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\/da\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. I denne artikel unders\u00f8ger vi sikkerhedsskemata (hardening schemes), der fungerer out-of-the-box i fem popul\u00e6re Linux-distributioner. For hver af dem har vi taget den standard kerne-konfiguration, installeret alle pakker og analyseret beskyttelsesskemaerne i de indlejrede bin\u00e6re filer. Distributionerne der unders\u00f8ges er OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 og 7, samt Ubuntu 14.04, 12.04 og 18.04 LTS. <\/p>\n<p>Resultaterne bekr\u00e6fter, at selv grundl\u00e6ggende ordninger som stack canaries og position-independent code endnu ikke anvendes af alle. Situationen er endnu v\u00e6rre for compilerne, n\u00e5r det kommer til beskyttelse mod s\u00e5rbarheder som stack clash, som kom i fokus i januar efter offentligg\u00f8relsen <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">af informationer om s\u00e5rbarheder i systemd<\/a><\/noindex>. Men alt er ikke h\u00e5bl\u00f8st. En betydelig del af bin\u00e6rerne implementerer grundl\u00e6ggende beskyttelsesmetoder, og deres antal vokser fra version til version. <\/p>\n<p>Unders\u00f8gelsen viste, at det st\u00f8rste antal beskyttelsesmetoder er implementeret i Ubuntu 18.04 p\u00e5 OS- og applikationsniveau, efterfulgt af Debian 9. P\u00e5 den anden side implementeres der ogs\u00e5 grundl\u00e6ggende beskyttelsesskemaer i OpenSUSE 12.4, CentOS 7 og RHEL 7, og beskyttelse mod stack clash anvendes endnu bredere med et langt mere t\u00e6tsiddende s\u00e6t af standardpakker.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Introduktion<\/h1>\n<p>\nDet er sv\u00e6rt at sikre h\u00f8j kvalitet af software. P\u00e5 trods af det enorme antal avancerede v\u00e6rkt\u00f8jer til statisk kodeanalyse og dynamisk analyse under k\u00f8rsel, samt betydelige fremskridt i udviklingen af compilere og programmeringssprog, lider moderne software stadig af s\u00e5rbarheder, der konstant udnyttes af angrebere. Situationen er endnu v\u00e6rre i \u00f8kosystemer, der inkluderer for\u00e6ldet kode. I s\u00e5danne tilf\u00e6lde st\u00e5r vi ikke kun over for det evige problem med at finde potentielle udnyttelige fejl, men er ogs\u00e5 begr\u00e6nset af strenge krav om bagudkompatibilitet, som ofte kr\u00e6ver at begr\u00e6nse, og endnu v\u00e6rre, s\u00e5rbar eller buggede kode.<\/p>\n<p>Her kommer metoderne til beskyttelse eller forst\u00e6rkning af programmer (hardening) ind i billedet. Nogle typer fejl kan vi ikke forhindre, men vi kan g\u00f8re livet sv\u00e6rere for angriberen og delvist l\u00f8se problemet ved at forhindre eller hindre. <i>udnyttelse<\/i> disse fejl. Denne beskyttelse anvendes i alle moderne operativsystemer, men metoderne varierer meget i kompleksitet, effektivitet og ydeevne: fra stack canaries og <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> til fuldgyldige 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 artikel vil vi se p\u00e5, hvilke beskyttelsesmetoder der anvendes i de mest popul\u00e6re Linux-distributioner i standardkonfigurationen, samt unders\u00f8ge egenskaberne ved bin\u00e6re filer, der distribueres gennem pakkeh\u00e5ndteringssystemerne for hver distribution.<\/p>\n<h3>CVE og sikkerhed<\/h3>\n<p>\nVi har alle set artikler med titler som \"\u00c5rets mest s\u00e5rbare applikationer\" eller \"De mest s\u00e5rbare operativsystemer\". Normalt indeholder de statistikker om det samlede antal registreringer af s\u00e5rbarheder af 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\/\">National Vulnerability Database (NVD)<\/a><\/noindex> fra <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> og andre kilder. Disse applikationer eller operativsystemer rangeres derefter efter antallet af CVE. Desv\u00e6rre, selvom CVE er meget nyttige til at spore problemer og informere leverand\u00f8rer og brugere, siger de ikke meget om den reelle sikkerhed af software.<\/p>\n<p>Som et eksempel vil vi se p\u00e5 det samlede antal CVE over de seneste fire \u00e5r for Linux-kernen og fem af de mest popul\u00e6re server-distributioner, nemlig Ubuntu, Debian, Red Hat Enterprise Linux og OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1<\/i><\/p>\n<p>Hvad fort\u00e6ller denne graf os? Betyder et h\u00f8jere antal CVE, at en distribution er mere s\u00e5rbar end en anden? Svaret er nej. For eksempel vil du i denne artikel se, at Debian implementerer strengere beskyttelsesmekanismer sammenlignet med for eksempel OpenSUSE eller RedHat Linux, og alligevel har Debian flere CVE. Men de betyder ikke n\u00f8dvendigvis sv\u00e6kket sikkerhed: selv tilstedev\u00e6relsen af CVE indikerer ikke, om en s\u00e5rbarhed <i>kan udnyttes<\/i>. Alvorlighedsscorer giver en indikation af, hvor <i>sandsynligt<\/i> det er, at en s\u00e5rbarhed kan blive udnyttet, men i sidste ende afh\u00e6nger udnytteligheden i h\u00f8j grad af beskyttelsen i de ber\u00f8rte systemer samt ressourcerne og evnerne hos angriberne. Desuden siger frav\u00e6ret af CVE-rapporter ikke noget om andre <i>uregistrerede eller ukendte<\/i> S\u00e5rbarheder. Forskellen i CVE kan forklares ikke ved kvaliteten af softwaren, men af andre faktorer, herunder de ressourcer, der er afsat til testning, eller st\u00f8rrelsen af brugerbasen. I vores eksempel kan det st\u00f8rre antal CVE for Debian simpelthen indikere, at Debian leverer flere softwarepakker. <\/p>\n<p>Selvf\u00f8lgelig giver CVE-systemet nyttig information, der g\u00f8r det muligt at skabe relevante beskyttelser. Jo bedre vi forst\u00e5r \u00e5rsagerne til programsvigt, desto lettere bliver det at identificere mulige angrebsmetoder og udvikle de relevante mekanismer. <i>opdagelse og reaktion<\/i>. Figur 2 viser kategorier af s\u00e5rbarheder for alle distributioner over de sidste fire \u00e5r (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">kilde<\/a><\/noindex>). Det er straks tydeligt, at de fleste CVE falder ind under f\u00f8lgende kategorier: tjenesten\u00e6gtelse (DoS), udf\u00f8relse af kode, buffer-overl\u00f8b, hukommelseskorruption, l\u00e6kage (ekskfiltrering) af oplysninger og privilegieforskydning. Selvom mange CVE er blevet registreret flere gange i forskellige kategorier, forbliver de samme problemer stort set u\u00e6ndrede \u00e5r efter \u00e5r. I n\u00e6ste del af artiklen vil vi vurdere brugen af forskellige beskyttelsesskemaer til at forhindre udnyttelse af de n\u00e6vnte s\u00e5rbarheder.<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Figur 2<\/i><\/p>\n<h3>Opgaver<\/h3>\n<p>\nI denne artikel har vi til hensigt at besvare f\u00f8lgende sp\u00f8rgsm\u00e5l:<\/p>\n<ul>\n<li>Hvor sikker er de forskellige Linux-distributioner? Hvilke beskyttelsesmekanismer findes i kernen og applikationerne i brugerrummet?\n<\/li>\n<li>Hvordan har accepten af beskyttelsesmekanismer \u00e6ndret sig over tid for de forskellige distributioner?\n<\/li>\n<li>Hvad er de gennemsnitlige afh\u00e6ngigheder af pakker og biblioteker for hver distribution?\n<\/li>\n<li>Hvilke beskyttelser er implementeret for hver bin\u00e6rfil?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Valg af distributioner<\/h3>\n<p>\nDet viser sig at v\u00e6re sv\u00e6rt at finde pr\u00e6cise statistikker over installationer af distributioner, da antallet af downloads i de fleste tilf\u00e6lde ikke angiver antallet af faktiske installationer. Ikke desto mindre udg\u00f8r Unix-mulighederne flertallet af serversystemer (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 stiger konstant. Derfor har vi fokuseret vores forskning p\u00e5 distributioner, der er tilg\u00e6ngelige direkte fra leverand\u00f8ren p\u00e5 platformen <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. Vi valgte specifikt f\u00f8lgende operativsystemer:<\/p>\n<p>Distribution\/version<br \/>\nKernel<br \/>\nByg<\/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>Tabel 1<\/i> <\/p>\n<h1>Analyse<\/h1>\n<p>\nVi gennemg\u00e5r standardkernens konfiguration samt egenskaberne for de pakker, der er tilg\u00e6ngelige gennem pakkemanagersystemet i hver distribution fra starten. P\u00e5 denne m\u00e5de ser vi kun p\u00e5 pakker fra de standard spejle for hver distribution, mens vi ignorerer pakker fra ustabile repositories (som \u2018testing\u2019 spejle i Debian) og tredjepartspakker (som Nvidia-pakker fra standard spejle). Derudover ser vi ikke p\u00e5 brugercompilerede kerner eller konfigurationer med \u00f8get sikkerhed.<\/p>\n<h3>Analyse af kernens konfiguration<\/h3>\n<p>\nVi har anvendt en analyzescript baseret p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">den frie checker kconfig<\/a><\/noindex>. Vi ser p\u00e5 de indbyggede sikkerhedsindstillinger for de n\u00e6vnte distributioner og sammenligner dem med listen fra <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Kernel Self-Protection Project<\/a><\/noindex> (KSPP). For hver konfigurationsparameter beskriver tabel 2 den \u00f8nskede indstilling: der er afkrydsning for de distributioner, der opfylder KSPP's anbefalinger (forklaring af termer ses <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">her<\/a><\/noindex>; i kommende artikler vil vi fort\u00e6lle, hvordan mange af disse beskyttelsesmetoder blev til, og hvordan man kan hacke systemet, n\u00e5r de ikke er til stede).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenerelt har nye kerner mere strenge indstillinger fra starten. For eksempel har CentOS 6.10 og RHEL 6.10 p\u00e5 kerne 2.6.32 ikke de fleste kritiske funktioner, der er implementeret i nye kerner, s\u00e5som <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, strenge RWX tilladelser, adresse-randomisering eller copy2usr beskyttelse. Det skal bem\u00e6rkes, at mange af konfigurationsmulighederne i tabellen mangler i \u00e6ldre versioner af kernen og ikke er anvendelige i praksis - derfor angives der stadig mangel p\u00e5 tilstr\u00e6kkelig beskyttelse. P\u00e5 samme m\u00e5de, hvis en konfigurationsparameter mangler i denne version, men for sikkerhed skal denne parameter deaktiveres, s\u00e5 betragtes det som en fornuftig konfiguration. <\/p>\n<p>En anden ting at overveje ved fortolkning af resultaterne: nogle kernekonfigurationer, der \u00f8ger angrebsfladen, kan samtidig bruges til sikkerhed. S\u00e5danne eksempler inkluderer uprobes og kprobes, kernelmoduler samt BPF\/eBPF. Vores anbefaling er at anvende de n\u00e6vnte mekanismer for at sikre reel beskyttelse, da de ikke er triviale at bruge, og deres udnyttelse foruds\u00e6tter, at ondsindede akt\u00f8rer allerede har f\u00e5et fodf\u00e6ste i systemet. Men hvis disse indstillinger er aktiveret, skal systemadministratoren aktivt overv\u00e5ge misbrug.<\/p>\n<p>N\u00e5r vi n\u00e6rmere unders\u00f8ger optagelserne i tabel 2, ser vi, at moderne kerner tilbyder flere muligheder for at beskytte mod udnyttelse af s\u00e5rbarheder s\u00e5som informationsl\u00e6kager og stack\/heap-overl\u00f8b. Dog bem\u00e6rker vi, at selv de nyeste popul\u00e6re distributioner endnu ikke har implementeret mere kompleks beskyttelse (for eksempel med patches <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) eller moderne beskyttelse mod genbrug af kode (for eksempel, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">kombinationen af randomisering med R^X-lignende ordninger for kode<\/a><\/noindex>). Hvad der er endnu v\u00e6rre, selv disse mere avancerede beskyttelsesmidler beskytter ikke mod det fulde spektrum af angreb. Derfor er det vitale for systemadministratorer at supplere rimelige konfigurationer med l\u00f8sninger, der tilbyder detektion og forebyggelse af exploits under k\u00f8rsel.<\/p>\n<h3>Applikationsanalyse<\/h3>\n<p>\nDet er ikke overraskende, at forskellige distributioner har forskellige pakkeegenskaber, kompilationsindstillinger, biblioteksafh\u00e6ngigheder osv. Forskelle findes selv for <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">besl\u00e6gtede<\/a><\/noindex> distributioner og pakker med f\u00e5 afh\u00e6ngigheder (for eksempel coreutils i Ubuntu eller Debian). For at vurdere forskellene har vi downloadet alle tilg\u00e6ngelige pakker, udtrukket deres indhold og analyseret bin\u00e6re filer og afh\u00e6ngigheder. For hver pakke sporede vi de andre pakker, som den afh\u00e6nger af, og for hver bin\u00e6rfil sporede vi dens afh\u00e6ngigheder. I dette afsnit opsummerer vi konklusionerne.<\/p>\n<h4>Distributioner<\/h4>\n<p>\nI alt har vi downloadet 361.556 pakker til alle distributioner, idet vi kun har udvundet pakker fra standardspejle. Vi har ignoreret pakker uden eksekverbare ELF-filer, s\u00e5som kildekoder, skrifttyper osv. Efter filtrering er der tilbageholdt 129.569 pakker, som indeholder i alt 584.457 bin\u00e6re filer. Fordelingen af pakker og filer blandt distributionerne vises i Fig. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3<\/i><\/p>\n<p>Det kan bem\u00e6rkes, at jo mere moderne distributionen er, jo flere pakker og bin\u00e6re filer indeholder den, hvilket er logisk. Samtidig inkluderer pakkerne Ubuntu og Debian v\u00e6sentligt flere bin\u00e6re filer (b\u00e5de eksekverbare og dynamiske moduler og biblioteker) end CentOS, SUSE og RHEL, hvilket potentielt \u00f8ger angrebsoverfladen for Ubuntu og Debian (det skal bem\u00e6rkes, at tallene afspejler alle bin\u00e6rfiler fra alle versioner af pakken, alts\u00e5 nogle filer analyseres flere gange). Dette er is\u00e6r vigtigt i betragtning af afh\u00e6ngighederne mellem pakkerne. En s\u00e5rbarhed i bin\u00e6rfilerne fra \u00e9n pakke kan p\u00e5virke mange dele af \u00f8kosystemet, ligesom en s\u00e5rbar biblioteksfil kan p\u00e5virke alle bin\u00e6re filer, der importerer den. Som et udgangspunkt ser vi p\u00e5 fordelingen af antallet af afh\u00e6ngigheder pr. pakke i forskellige OS:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" 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>I n\u00e6sten alle distributioner har 60% af pakkerne mindst 10 afh\u00e6ngigheder. Desuden har nogle pakker betydeligt flere afh\u00e6ngigheder (over 100). Det samme g\u00e6lder for omvendte pakkeafh\u00e6ngigheder: som forventet anvendes flere pakker af mange andre pakker i distributionen, derfor er s\u00e5rbarheder i disse f\u00e5 udvalgte pakker forbundet med h\u00f8j risiko. Som et eksempel er der i den f\u00f8lgende tabel n\u00e6vnt 20 pakker med det maksimale antal omvendte afh\u00e6ngigheder i SLES, CentOS 7, Debian 9 og Ubuntu 18.04 (i hver celle er angivet pakken og antallet af omvendte afh\u00e6ngigheder).<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabel 3<\/i><\/p>\n<p>Interessant faktum. Selvom alle de analyserede OS'er er bygget til x86_64-arkitekturen, og de fleste pakker er defineret som x86_64 og x86, indeholder pakkerne ofte bin\u00e6re filer til andre arkitekturer, som vist i Fig. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5<\/i><\/p>\n<p>I det n\u00e6ste afsnit dykker vi ned i karakteristikaene ved de analyserede bin\u00e6re filer.<\/p>\n<h4>Statistik for beskyttelse af bin\u00e6re filer<\/h4>\n<p>\nSom det absolutte minimum skal du studere et grundl\u00e6ggende s\u00e6t af beskyttelsesmetoder for eksisterende bin\u00e6re filer. Flere Linux-distributioner leveres med scripts, der udf\u00f8rer s\u00e5danne kontroller. For eksempel har Debian\/Ubuntu s\u00e5dan et script. Her er et eksempel p\u00e5 dets funktion:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Position Independent Executable: yes\n Stack protected: yes\n Fortify Source functions: no, only unprotected functions found!\n Read-only relocations: yes\n Immediate binding: yes<\/code><\/pre>\n<p>\nScriptet kontrollerer fem <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">beskyttelsesfunktioner<\/a><\/noindex>:<\/p>\n<ul>\n<li>Position Independent Executable (PIE): angiver, om tekstafsnittet af programmet kan flyttes i hukommelsen for at opn\u00e5 randomisering, hvis ASLR er aktiveret i kernen.\n<\/li>\n<li>Stack Protected: er stackkanarier aktiveret til at beskytte mod stak-kollisionsangreb.\n<\/li>\n<li>Fortify Source: erstattes usikre funktioner (f.eks. strcpy) med deres mere sikre alternativer, og runtime-kald kontrolleres med deres usikre alternativer (f.eks. memcpy i stedet for __memcpy_chk).\n<\/li>\n<li>Read-only relocations (RELRO): er forsiden af relocation-table markeret som 'kun til l\u00e6sning', hvis de blev aktiveret f\u00f8r programk\u00f8rslen.\n<\/li>\n<li>Immediate binding (\u00f8jeblikkelig binding): tillader linkeren ved k\u00f8rsel at l\u00f8se alle relokationer f\u00f8r programmet k\u00f8rer (svarende til fuld RELRO).<\/li>\n<\/ul>\n<p>\nEr de ovenn\u00e6vnte mekanismer tilstr\u00e6kkelige? Desv\u00e6rre nej. Der er kendte m\u00e5der at omg\u00e5 alle ovenst\u00e5ende beskyttelser, men jo strammere beskyttelsen er, desto sv\u00e6rere bliver det for en angriber. For eksempel er <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">metoder til at omg\u00e5 RELRO<\/a><\/noindex> sv\u00e6rere at anvende, n\u00e5r PIE og \u00f8jeblikkelig binding er aktiveret. Tilsvarende kr\u00e6ver fuld ASLR yderligere arbejde for at skabe et fungerende exploit. Dog er sofistikerede angribere allerede forberedt p\u00e5 s\u00e5danne forsvarsforanstaltninger: frav\u00e6ret af dem vil i praksis fremskynde hackingen. Derfor er det ekstremt vigtigt, at disse foranstaltninger betragtes som n\u00f8dvendige. <i>mindst<\/i>. <\/p>\n<p>Vi \u00f8nskede at unders\u00f8ge, hvor mange bin\u00e6re filer i de betragtede distributioner der er beskyttet af disse samt tre andre metoder:<\/p>\n<ul>\n<li>Ikke-udf\u00f8relsebit (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) forhindrer udf\u00f8relse i ethvert omr\u00e5de, der ikke b\u00f8r v\u00e6re udf\u00f8rbart, for eksempel i stakkens heap osv.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> angiver s\u00f8gestien, der anvendes af den dynamiske loader til at finde de relevante 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, incorrect execution path configurations assist in introducing 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 provides defense against attacks that cause the stack to overlap with other memory areas (for example, the heap). Given recent exploits that exploit <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">heap collision vulnerabilities in systemd<\/a><\/noindex>, we deemed it appropriate to include this mechanism in our dataset.<\/li>\n<\/ul>\n<p>\nSo, without further ado, let's get 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 can be seen, NX protection is implemented everywhere, with few exceptions. Notably, its usage is somewhat lower in the Ubuntu and Debian distributions compared to CentOS, RHEL, and OpenSUSE.\n<\/li>\n<li>Stack canaries are missing in many places, especially in distributions with older kernels. Some progress is observed in the latest distributions of CentOS, RHEL, Debian, and Ubuntu.\n<\/li>\n<li>With the exception of Debian and Ubuntu 18.04, most distributions have poor PIE support.\n<\/li>\n<li>Stack collision protection is poorly implemented in OpenSUSE, CentOS 7, and RHEL 7, and is virtually absent in the others.\n<\/li>\n<li>All distributions with modern kernels have some support for RELRO, with Ubuntu 18.04 leading and Debian coming in second.<\/li>\n<\/ul>\n<p>\nAs mentioned earlier, 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 be different (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 protection of only a few functions in binary code when calculating statistics, whereas our analysis specifies the true percentage of fortified functions. Therefore, if a binary has 5 out of 50 functions protected, we will assign it a score of 0.1, which corresponds to 10% fortified functions.<\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" 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 Fig. 3 (implementation of corresponding functions as a percentage of the total number of executable files)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabel 5. Beskyttelsesegenskaber for biblioteker vist i fig. 3 (implementering af de relevante funktioner i procent af det samlede antal biblioteker)<\/i><\/p>\n<p>Er der fremgang? Bestemt: det kan ses fra statistikken for de enkelte distributioner (for eksempel, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), samt fra de ovenfor n\u00e6vnte tabeller. Som eksempel vises i fig. 6 implementeringen af beskyttelsesmekanismer i tre p\u00e5 hinanden f\u00f8lgende Ubuntu LTS 5 distributioner (vi har udeladt statistikken for beskyttelse mod stakoverl\u00f8b). Vi bem\u00e6rker, at fra version til version st\u00f8tter flere og flere filer stakcanarier, og desuden leveres der gradvist flere bin\u00e6re filer med fuld RELRO-beskyttelse.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Millioner af bin\u00e6re filer senere. Hvordan Linux blev styrket\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Fig. 6<\/i><\/p>\n<p>Desv\u00e6rre har en r\u00e6kke eksekverbare filer i forskellige distributioner stadig ikke nogen af de ovenn\u00e6vnte beskyttelser. For eksempel, hvis man ser p\u00e5 Ubuntu 18.04, kan man bem\u00e6rke bin\u00e6ren ngetty (en erstatning for getty), s\u00e5vel som skalene mksh og lksh, interpreter picolisp, pakkerne nvidia-cuda-toolkit (en popul\u00e6r pakke til GPU-accelererede applikationer, s\u00e5som maskinl\u00e6ringsrammer) og klibc-utils. Tilsvarende leveres bin\u00e6ren mandos-client (et administrationsv\u00e6rkt\u00f8j, der muligg\u00f8r automatisk genstart af maskiner med krypterede filsystemer), samt rsh-redone-client (en genimplementering af rsh og rlogin) uden NX-beskyttelse, selvom de har SUID-rettigheder :(. Derudover har flere suid-bin\u00e6re filer ikke grundl\u00e6ggende beskyttelse, s\u00e5som stakcanarier (for eksempel bin\u00e6rfilen Xorg.wrap fra Xorg-pakken).<\/p>\n<h1>Resum\u00e9 og afsluttende bem\u00e6rkninger<\/h1>\n<p>\nI denne artikel fremh\u00e6ver vi flere sikkerhedsegenskaber ved moderne Linux-distributioner. Analysen viser, at den seneste distribution af Ubuntu LTS (18.04) i gennemsnit har det st\u00e6rkeste niveau af OS- og applikationsbeskyttelse blandt distributioner med relativt nye kerner, s\u00e5som Ubuntu 14.04, 12.04 og Debian 9. Dog leverer de overvejede distributioner CentOS, RHEL og OpenSUSE i vores datas\u00e6t som standard et mere t\u00e6t s\u00e6t pakker, og de seneste versioner (CentOS og RHEL) har en h\u00f8jere procentdel af implementering af beskyttelse mod stack-kollidering sammenlignet med konkurrenter baseret p\u00e5 Debian (Debian og Ubuntu). N\u00e5r vi sammenligner versionerne CentOS og RedHat, bem\u00e6rker vi store forbedringer i implementeringen af stack canaries og RELRO fra version 6 til 7, men i gennemsnit er der implementeret flere funktioner i CentOS end i RHEL. Generelt b\u00f8r alle distributioner have s\u00e6rlig fokus p\u00e5 PIE-beskyttelse, som, undtagen Debian 9 og Ubuntu 18.04, er implementeret i mindre end 10% af de bin\u00e6re filer i vores datas\u00e6t. <\/p>\n<p>Endelig skal det bem\u00e6rkes: selvom vi udf\u00f8rte unders\u00f8gelsen manuelt, findes der mange sikkerhedsv\u00e6rkt\u00f8jer (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 udf\u00f8rer analyser og hj\u00e6lper med at undg\u00e5 usikre konfigurationer. Desv\u00e6rre garanterer selv st\u00e6rk beskyttelse med rimelige konfigurationer ikke frav\u00e6ret af exploits. Derfor er vi fast overbevist om, at det er afg\u00f8rende at sikre <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">p\u00e5lidelig overv\u00e5gning og forebyggelse af angreb i realtid<\/a><\/noindex>, med fokus p\u00e5 udnyttelsesm\u00f8nstre og forhindring af 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.3 - 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\/da\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 af bin\u00e6re filer senere. Hvordan Linux er blevet styrket | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}