{"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\/hr\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. U ovom \u010dlanku istra\u017eujemo sheme za\u0161tite (hardening schemes) koje su ugra\u0111ene u pet popularnih Linux distribucija. Za svaku od njih uzeli smo konfiguraciju jezgre prema zadanim postavkama, preuzeli sve pakete i analizirali sheme za\u0161tite unutar binarnih datoteka. Razmatrane 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 i osnovne sheme, poput kanarinskog steka i koda neovisnog o polo\u017eaju, jo\u0161 uvijek nisu u potpunosti kori\u0161tene. Situacija je jo\u0161 gora kod kompajlera, kada je rije\u010d o za\u0161titi od ranjivosti kao \u0161to je sudar steka (stack clash), koje su do\u0161le u sredi\u0161te pa\u017enje u sije\u010dnju nakon objave <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">informacija o ranjivostima u systemd<\/a><\/noindex>. No, nije sve tako beznadno. U zna\u010dajnom dijelu binarnih datoteka implementirane su osnovne metode za\u0161tite, a njihov broj raste iz verzije u verziju. <\/p>\n<p>Istra\u017eivanje je pokazalo da je najve\u0107i broj metoda za\u0161tite implementiran u Ubuntu 18.04 na razini operativnog sustava i aplikacija, zatim slijedi Debian 9. S druge strane, OpenSUSE 12.4, CentOS 7 i RHEL 7 tako\u0111er imaju implementirane osnovne sheme za\u0161tite, a za\u0161tita od sudara steka primjenjuje se jo\u0161 \u0161ire uz mnogo gu\u0161\u0107i skup paketa prema zadanim postavkama.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Uvod<\/h1>\n<p>\nTe\u0161ko je osigurati visoku kvalitetu softvera. Unato\u010d ogromnom broju naprednih alata za stati\u010dku analizu koda i dinami\u010dku analizu tijekom izvo\u0111enja, kao i zna\u010dajnom napretku u razvoju kompajlera i jezika programiranja, suvremeni softver jo\u0161 uvijek pati od ranjivosti koje se neprekidno eksploatiraju od strane napada\u010da. Situacija je jo\u0161 gora u ekosustavima koji uklju\u010duju zastarjeli kod. U takvim slu\u010dajevima ne samo da se suo\u010davamo s vje\u010dnim problemom otkrivanja mogu\u0107ih eksploatabilnih gre\u0161aka, ve\u0107 smo i ograni\u010deni strogim okvirima unazadne kompatibilnosti, koji \u010desto zahtijevaju o\u010duvanje ograni\u010denog, a jo\u0161 gore ranjivog ili kvarnog koda.<\/p>\n<p>Tu na scenu stupaju metode za\u0161tite ili poja\u010danja softvera (hardening). Neke vrste gre\u0161aka ne mo\u017eemo sprije\u010diti, ali mo\u017eemo ote\u017eati \u017eivot napada\u010du i djelomi\u010dno rije\u0161iti problem spre\u010davaju\u0107i ili ometaju\u0107i. <i>iskori\u0161tavanja<\/i> ovih gre\u0161aka. Ova za\u0161tita se koristi u svim modernim operativnim sustavima, ali se metode uvelike razlikuju po slo\u017eenosti, efikasnosti i performansama: od stog kanarinca (stack canaries) i <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> do potpune za\u0161tite <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. U ovom \u010dlanku \u0107emo raspraviti koje metode za\u0161tite se primenjuju u najpopularnijim distribucijama Linuxa u podrazumevanju, kao i istra\u017eiti svojstva binarnih datoteka koje se distribuiraju putem sistema za upravljanje paketima svake distribucije.<\/p>\n<h3>CVE i sigurnost<\/h3>\n<p>\nSvi smo videli \u010dlanke sa naslovima poput \"Najranjivijih aplikacija godine\" ili \"Najranjivijih operativnih sistema\". Obi\u010dno se navodi statistika o ukupnom broju zapisa o ranjivostima tipa <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, dobijenih iz <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">Nacionalne baze ranjivosti (NVD)<\/a><\/noindex> od <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> i drugih izvora. Nakon toga, ove aplikacije ili OS-ovi se rangiraju prema broju CVE. Na\u017ealost, iako su CVE veoma korisni za pra\u0107enje problema i obave\u0161tavanje dobavlja\u010da i korisnika, malo govore o stvarnoj sigurnosti softvera.<\/p>\n<p>Na primer, razmotrimo ukupan broj CVE u protekle \u010detiri godine za Linux kernel i pet najpopularnijih server distribucija, a to su Ubuntu, Debian, Red Hat Enterprise Linux i OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Sl. 1<\/i><\/p>\n<p>\u0160ta nam govori ova grafika? Zna\u010di li ve\u0107i broj CVE da je jedna distribucija ranjivija od druge? Odgovor je ne. Na primer, u ovom \u010dlanku \u0107ete videti da Debian ima stro\u017ee mehanizme za\u0161tite u pore\u0111enju, recimo, s OpenSUSE ili RedHat Linuxom, a ipak Debian ima vi\u0161e CVE. Me\u0111utim, to ne zna\u010di nu\u017eno slabiju sigurnost: \u010dak i postojanje CVE ne govori da li je ranjivost <i>eksploatisana<\/i>. Bodovi ozbiljnosti daju uvid u to koliko je <i>verovatno<\/i> iskori\u0161\u0107avanje ranjivosti, ali na kraju, eksploatabilnost u velikoj meri zavisi od za\u0161tite prisutne u pogo\u0111enim sistemima, kao i od resursa i mogu\u0107nosti napada\u010da. \u0160tavi\u0161e, odsustvo CVE izve\u0161taja ne govori ni\u0161ta o drugim <i>registriranim ili nepoznatim<\/i> ranjivostima. Razlika u CVE mo\u017ee se objasniti ne kvalitetom softvera, ve\u0107 drugim faktorima, uklju\u010duju\u0107i resurse dodijeljene za testiranje ili veli\u010dinu korisni\u010dke baze. U na\u0161em primjeru ve\u0107i broj CVE u Debi\u00e1nu mo\u017ee jednostavno ukazivati na to da Debian pru\u017ea vi\u0161e paketa softvera. <\/p>\n<p>Naravno, CVE sustav pru\u017ea korisne informacije koje omogu\u0107uju izradu odgovaraju\u0107ih za\u0161tita. \u0160to bolje razumijemo uzroke programskih gre\u0161aka, lak\u0161e je odrediti mogu\u0107e na\u010dine iskori\u0161tavanja i razviti odgovaraju\u0107e mehanizme <i>otkrivanja i reagiranja<\/i>. Na slikama 2 prikazane su kategorije ranjivosti za sve distribucije u posljednje \u010detiri godine (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">izvor<\/a><\/noindex>). Odmah je vidljivo da ve\u0107ina CVE spada u sljede\u0107e kategorije: uskra\u0107ivanje usluga (DoS), izvr\u0161avanje koda, prelivanja, o\u0161te\u0107enje memorije, curenje (ekstrakcija) informacija i eskalacija privilegija. Iako su mnogi CVE zabilje\u017eeni vi\u0161e puta u razli\u010ditim kategorijama, u cjelini se isti problemi zadr\u017eavaju iz godine u godinu. U sljede\u0107em dijelu \u010dlanka ocijenit \u0107emo kori\u0161tenje razli\u010ditih shema za\u0161tite za sprje\u010davanje iskori\u0161tavanja navedenih ranjivosti.<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" 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 planiramo odgovoriti na sljede\u0107a pitanja:<\/p>\n<ul>\n<li>Koja je sigurnost razli\u010ditih distribucija Linuxa? Koji mehanizmi za\u0161tite postoje u kernelu i aplikacijama korisni\u010dkog prostora?\n<\/li>\n<li>Kako se tijekom vremena promijenila prihva\u0107enost mehanizama za\u0161tite za razli\u010dite distribucije?\n<\/li>\n<li>Koje su prosje\u010dne zavisnosti paketa i biblioteka svake distribucije?\n<\/li>\n<li>Koje su za\u0161tite implementirane za svaki binarni paket?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Odabir distribucija<\/h3>\n<p>\nIspostavlja se da je te\u0161ko prona\u0107i to\u010dnu statistiku o instalacijama distribucija, budu\u0107i da u ve\u0107ini slu\u010dajeva broj preuzimanja ne ukazuje na broj stvarnih instalacija. Ipak, Unix opcije \u010dine ve\u0107inu serverskih sistema (na web poslu\u017eiteljima 69,2%, prema <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">statistikama<\/a><\/noindex> W3techs i drugim izvorima), a njihov udio stalno raste. Stoga smo se za na\u0161e istra\u017eivanje fokusirali na distribucije dostupne iz kutije na platformi <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. Konkretno, odabrali smo sljede\u0107e OS:<\/p>\n<p>Distribucija\/verzija<br \/>\nJezgra<br \/>\nGradnja<\/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>Tablica 1<\/i> <\/p>\n<h1>Analiza<\/h1>\n<p>\nIstra\u017eit \u0107emo zadanu konfiguraciju jezgre, kao i svojstva paketa dostupnih kroz paketni menad\u017eer svakog distribucije 'iz kutije'. Tako \u0107emo razmotriti samo pakete iz zadnjih zrcala svake distribucije, ignoriraju\u0107i pakete iz nestabilnih repozitorija (primjerice, zrcala 'testing' u Debianu) i vanjske pakete (na primjer, pakete Nvidia sa standardnih zrcala). Osim toga, ne\u0107emo razmatrati korisni\u010dke kompilacije jezgre ili konfiguracije s poja\u010danom za\u0161titom.<\/p>\n<h3>Analiza konfiguracije jezgre<\/h3>\n<p>\nPrimijenili smo skriptu za analizu temeljenu na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">slobodnom provjeriva\u010du kconfig<\/a><\/noindex>. Razmatramo opcije za\u0161tite 'iz kutije' za navedene distribucije i uspore\u0111ujemo ih s popisom od <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Projekta samopomo\u0107i jezgre<\/a><\/noindex> (KSPP). Za svaku opciju konfiguracije, Tablica 2 opisuje \u017eeljenu postavku: kva\u010dica ozna\u010dava distribucije koje se pridr\u017eavaju preporuka KSSP (obja\u0161njenje pojmova vidi <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">ovdje<\/a><\/noindex>; u budu\u0107im \u010dlancima \u0107emo objasniti kako su se mnoge od ovih metoda za\u0161tite pojavile i kako ugroziti 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=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU cjelini, nove jezgre imaju stro\u017ee postavke 'iz kutije'. Na primjer, kod CentOS 6.10 i RHEL 6.10 sa jezgrom 2.6.32 nedostaju ve\u0107ina kriti\u010dnih funkcija implementiranih u novim jezgrama, kao \u0161to su <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, stroge dozvole RWX, randomizacija adresa ili za\u0161tita copy2usr. Treba napomenuti da mnoge opcije konfiguracije iz tablice nedostaju u starijim verzijama jezgre i nisu primjenjive u stvarnosti \u2014 u tablici je to i dalje navedeno kao nedostatak adekvatne za\u0161tite. Sli\u010dno tome, ako opcija konfiguracije nedostaje u ovoj verziji, a za sigurnost ju je potrebno onemogu\u0107iti, to se smatra razumnom konfiguracijom. <\/p>\n<p>Jo\u0161 jedna stvar pri tuma\u010denju rezultata: neke konfiguracije jezgre koje pove\u0107avaju povr\u0161inu napada mogu se istovremeno koristiti za sigurnost. Takvi primjeri uklju\u010duju uprobes i kprobes, module jezgre i BPF\/eBPF. Na\u0161a preporuka je koristiti navedene mehanizme za osiguranje stvarne za\u0161tite, budu\u0107i da su netrivijalni za upotrebu, a njihova eksploatacija podrazumijeva da su zlonamjerni subjekti ve\u0107 uspostavljeni u sustavu. No, ako su te opcije uklju\u010dene, sistemski administrator treba aktivno pratiti zloupotrebe.<\/p>\n<p>Daljnjim prou\u010davanjem unosa u tablici 2, vidimo da moderna jezgra nude nekoliko opcija za za\u0161titu od eksploatacije takvih ranjivosti kao \u0161to su curenje informacija i prelivanje stoga\/heap-a. Ipak, primje\u0107ujemo da \u010dak ni najnovije popularne distribucije jo\u0161 nisu implementirale slo\u017eeniju za\u0161titu (na primjer, s ispravkama <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) ili modernu za\u0161titu od napada ponovne upotrebe koda (na primjer, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">kombinaciju randomizacije sa shemama tipa R^X za kod<\/a><\/noindex>). \u0160to je jo\u0161 gore, \u010dak ni ovi napredniji alati za\u0161tite ne \u0161tite od cijelog spektra napada. Stoga je za sistemske administratore od iznimne va\u017enosti dopuniti razumnu konfiguraciju rje\u0161enjima koja nude otkrivanje i sprje\u010davanje eksploatacija tijekom izvo\u0111enja.<\/p>\n<h3>Analiza aplikacija<\/h3>\n<p>\nNije iznena\u0111uju\u0107e \u0161to razli\u010dite distribucije imaju razli\u010dite karakteristike paketa, opcije kompajliranja, zavisnosti biblioteka itd. Razlike postoje \u010dak i za <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">rodne<\/a><\/noindex> distribucije i pakete s malim brojem zavisnosti (na primjer, coreutils u Ubuntu ili Debian). Kako bismo procijenili razlike, preuzeli smo sve dostupne pakete, izdvojili njihovu sadr\u017einu i analizirali binarne datoteke i zavisnosti. Za svaki paket pratili smo druge pakete od kojih ovisi, a za svaku binarnu datoteku pratili smo njene zavisnosti. U ovom odjeljku ukratko \u0107emo iznijeti zaklju\u010dke.<\/p>\n<h4>Distribucije<\/h4>\n<p>\nUkupno smo preuzeli 361.556 paketa za sve distribucije, izvla\u010de\u0107i samo pakete sa zrcala prema zadanim postavkama. Ignorirali smo pakete bez izvr\u0161nih ELF datoteka, poput izvornog koda, fontova itd. Nakon filtriranja ostalo je 129.569 paketa koji sadr\u017ee ukupno 584.457 binarnih datoteka. Distribucija paketa i datoteka po distribucijama prikazana je na slici 3.<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Sl. 3<\/i><\/p>\n<p>Mo\u017ee se primijetiti da \u0161to je distribucija modernija, to ima vi\u0161e paketa i binarnih datoteka, \u0161to je logi\u010dno. Me\u0111utim, paketi Ubuntu i Debian uklju\u010duju mnogo vi\u0161e binarnih datoteka (kako izvr\u0161ivih, tako i dinami\u010dkih modula i biblioteka) nego CentOS, SUSE i RHEL, \u0161to potencijalno utje\u010de na povr\u0161inu napada Ubuntu i Debiana (valja napomenuti da brojke odra\u017eavaju sve binarije svih verzija paketa, odnosno neki se datoteke analiziraju vi\u0161e puta). Ovo je posebno va\u017eno uzimaju\u0107i u obzir ovisnosti izme\u0111u paketa. Tako ranjivost u binariji jednog paketa mo\u017ee utjecati na mnoge dijelove ekosustava, dok ranjiva biblioteka mo\u017ee utjecati na sve binarne datoteke koje je uvoze. Kao referencu, pogledajmo distribuciju broja ovisnosti po paketima u razli\u010ditim OS-ovima:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" 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>U gotovo svim distribucijama 60% paketa ima najmanje 10 ovisnosti. Osim toga, neki paketi imaju zna\u010dajno vi\u0161e ovisnosti (vi\u0161e od 100). Isto vrijedi i za povratne ovisnosti paketa: kao \u0161to se i o\u010dekivalo, nekoliko paketa koristi mnogo drugih paketa u distribuciji, pa ranjivosti u tim nekolicinama imaju visoki rizik. Kao primjer, u sljede\u0107oj tablici navedeno je 20 paketa s maksimalnim brojem povratnih ovisnosti u SLES, CentOS 7, Debian 9 i Ubuntu 18.04 (u svakoj \u0107eliji navode se paket i broj povratnih ovisnosti).<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tablica 3<\/i><\/p>\n<p>Zanimljiva \u010dinjenica. Iako su svi analizirani OS-ovi izgra\u0111eni za arhitekturu x86_64, a ve\u0107ina paketa ima arhitekturu definiranu kao x86_64 i x86, paketi \u010desto sadr\u017ee binarne datoteke za druge arhitekture, kao \u0161to je prikazano na slici 5.<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Slika 5<\/i><\/p>\n<p>U sljede\u0107em odjeljku produbiti \u0107emo se u karakteristike analiziranih binarnih datoteka.<\/p>\n<h4>Statistika za\u0161tite binarnih datoteka<\/h4>\n<p>\nKao apsolutni minimum, potrebno je prou\u010diti osnovni set opcija za\u0161tite za postoje\u0107e binarne datoteke. Nekoliko Linux distribucija dolazi sa skriptama koje obavljaju takve provjere. Na primjer, u Debianu\/Ubuntu postoji takva skripta. Evo primjera njenog rada:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Pozicija neovisna izvr\u0161na datoteka: da\n Za\u0161tita staka: da\n Fortify Source funkcije: ne, prona\u0111ene samo neza\u0161ti\u0107ene funkcije!\n Samo za \u010ditanje relokacije: da\n Neposredna vezivanje: da<\/code><\/pre>\n<p>\nSkripta provjerava pet <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">funkcija za\u0161tite<\/a><\/noindex>:<\/p>\n<ul>\n<li>Pozicija neovisna izvr\u0161na datoteka (PIE): ozna\u010dava je li mogu\u0107e premjestiti odjeljak s kodom programa u memoriji kako bi se postigla nasumi\u010dnost, ako je ASLR uklju\u010dena u jezgru.\n<\/li>\n<li>Za\u0161tita staka: je li omogu\u0107ena za\u0161tita od napada kroz kanarince na staku.\n<\/li>\n<li>Fortify Source: zamjenjuju li se nesigurne funkcije (na primjer, strcpy) njihovim sigurnijim analogama, a pozivi koji se provjeravaju u vrijeme izvo\u0111enja \u2013 njihovim neprovjeravanim analogama (na primjer, memcpy umjesto __memcpy_chk).\n<\/li>\n<li>Relokacije samo za \u010ditanje (RELRO): jesu li unosi u tablici premje\u0161tanja ozna\u010deni kao \u201esamo za \u010ditanje\u201c, ako su aktivirani prije po\u010detka izvo\u0111enja.\n<\/li>\n<li>Neposredna vezivanje (immediate binding): omogu\u0107uje li dinami\u010dki linker sve premje\u0161taje prije po\u010detka izvo\u0111enja programa (to je ekvivalentno potpunom RELRO-u).<\/li>\n<\/ul>\n<p>\nJesu li dovoljni navedeni mehanizmi? Na\u017ealost, nisu. Poznate su metode za zaobila\u017eenje svih navedenih za\u0161tita, ali \u0161to je za\u0161tita ja\u010da, to je vi\u0161a granica za napada\u010da. Na primjer, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">metode zaobila\u017eenja RELRO-a<\/a><\/noindex> te\u017ee je primijeniti ako su aktivni PIE i neposredna vezivanje. Sli\u010dno tome, potpuni ASLR zahtijeva dodatni rad za stvaranje radnog eksploita. Me\u0111utim, sofisticirani zlonamjernici ve\u0107 su spremni za takve za\u0161tite: njihovo odsustvo zapravo ubrzava napad. Stoga je izuzetno va\u017eno da se ove mjere smatraju nu\u017enim <i>minimumom<\/i>. <\/p>\n<p>\u017deljeli smo istra\u017eiti koliko su mnoge binarne datoteke u razmatranim distribucijama za\u0161ti\u0107ene ovim, kao i jo\u0161 tri metode:<\/p>\n<ul>\n<li>Neizvr\u0161ni bit (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) sprje\u010dava izvr\u0161avanje u bilo kojem podru\u010dju koje ne bi trebalo biti izvr\u0161no, na primjer, u hrpi, na staku itd.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> ozna\u010dava put izvo\u0111enja koji dinami\u010dki u\u010ditava\u010d koristi za pronala\u017eenje odgovaraju\u0107ih biblioteka. Prvi je <i>obavezan<\/i> za svaki moderni sustav: njegovo odsustvo omogu\u0107uje napada\u010dima da slobodno upisuju teret u memoriju i izvr\u0161avaju ga kao takvog. U drugom slu\u010daju, neto\u010dne konfiguracije putanje izvr\u0161enja poma\u017eu u uvo\u0111enju nepouzdanog koda, \u0161to mo\u017ee dovesti do niza problema (na primjer, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">eskalacija privilegija<\/a><\/noindex>, kao i <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">druge pote\u0161ko\u0107e<\/a><\/noindex>).<\/li>\n<li>Za\u0161tita od preklapanja stoga osigurava za\u0161titu od napada koji uzrokuju da se stog preklopi s drugim podru\u010djima memorije (na primjer, na hrpu). Uzimaju\u0107i u obzir nedavne eksploite koji iskori\u0161tavaju <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">ranjivosti preklapanja hrpe u systemd<\/a><\/noindex>, smatrali smo prikladnim uklju\u010diti ovaj mehanizam u na\u0161 skup podataka.<\/li>\n<\/ul>\n<p>\nDakle, bez daljnjeg odga\u0111anja, prije\u0111imo na brojke. Tablice 4 i 5 sadr\u017ee sa\u017eetak analize izvr\u0161nih datoteka i biblioteka razli\u010ditih distribucija, redom.<\/p>\n<ul>\n<li>Kao \u0161to se mo\u017ee primijetiti, NX za\u0161tita je implementirana svugdje, uz rijetke iznimke. Konkretno, mo\u017ee se primijetiti ne\u0161to ni\u017ea implementacija u distribucijama Ubuntu i Debian u usporedbi s CentOS-om, RHEL-om i OpenSUSE-om.\n<\/li>\n<li>Stogovi kanarinca su u velikoj mjeri odsutni, posebno u distribucijama sa starim kernelima. Neki napredak zabilje\u017een je u posljednjim distribucijama CentOS-a, RHEL-a, Debiana i Ubuntua.\n<\/li>\n<li>Osim Debiana i Ubuntua 18.04, ve\u0107ina distribucija slabo podr\u017eava PIE.\n<\/li>\n<li>Za\u0161tita od preklapanja stoga slabo je implementirana u OpenSUSE-u, CentOS-u 7 i RHEL-u 7, dok prakti\u010dki ne postoji kod ostalih.\n<\/li>\n<li>Sve distribucije s modernim kernelima imaju neku podr\u0161ku za RELRO, pri \u010demu prednja\u010di Ubuntu 18.04, a drugo mjesto zauzima Debian.<\/li>\n<\/ul>\n<p>\nKao \u0161to je ve\u0107 spomenuto, metrike u ovoj tablici su prosjeke za sve verzije binarne datoteke. Ako se gledaju samo najnovije verzije datoteka, brojevi \u0107e biti druga\u010diji (na primjer, pogledajte <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">napredak Debiana s uvo\u0111enjem PIE<\/a><\/noindex>). \u0160tovi\u0161e, ve\u0107ina distribucija obi\u010dno pri izra\u010dunu statistike provjerava za\u0161titu samo nekoliko funkcija u binarnoj datoteci, a u na\u0161oj analizi navedeni su stvarni postotci oja\u010danih funkcija. Dakle, ako je u binarnoj datoteci za\u0161ti\u0107eno 5 od 50 funkcija, dodijelit \u0107emo mu ocjenu 0,1, \u0161to odgovara 10% oja\u010danih funkcija.<\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tablica 4. Zna\u010dajke za\u0161tite za izvr\u0161ne datoteke prikazane na slici 3 (implementacija odgovaraju\u0107ih funkcija u postotcima od ukupnog broja izvr\u0161nih datoteka)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tablica 5. Karakteristike za\u0161tite za biblioteke prikazane na sl. 3 (implementacija odgovaraju\u0107ih funkcija u procentima od ukupnog broja biblioteka)<\/i><\/p>\n<p>Dakle, ima napretka? Definitivno ima: to se mo\u017ee vidjeti iz statistike za pojedina\u010dne distribucije (na primjer, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), kao i iz gornjih tabela. Kao primjer, na sl. 6 prikazana je implementacija za\u0161titnih mehanizama u tri uzastopne distribucije Ubuntu LTS 5 (izostavili smo statistiku za\u0161tite od sukoba steka). Primje\u0107ujemo da iz verzije u verziju sve vi\u0161e datoteka podr\u017eava kanarince steka, a tako\u0111er se postepeno sve vi\u0161e binarnih datoteka isporu\u010duje s potpunom za\u0161titom RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Milijuni binarnih datoteka kasnije. Kako se Linux u\u010dvrstio\" src=\"\/wp-content\/uploads\/2019\/03\/9130099db6d59106da8f0a0fc760410e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Sl. 6<\/i><\/p>\n<p>Na\u017ealost, niz izvr\u0161nih datoteka u razli\u010ditim distribucijama i dalje nema nijednu od gore navedenih za\u0161tita. Na primjer, kada pogledate Ubuntu 18.04, mo\u017eete primijetiti binarno datoteku ngetty (zamjena za getty), kao i ljuske mksh i lksh, interpreter picolisp, pakete nvidia-cuda-toolkit (popularni paket za aplikacije s GPU ubrzanjem, kao \u0161to su okviri za ma\u0161insko u\u010denje) i klibc-utils. Sli\u010dno, binarna datoteka mandos-client (administrativni alat koji omogu\u0107ava automatsko ponovo pokretanje ra\u010dunara sa \u0161ifriranim datote\u010dnim sistemima), kao i rsh-redone-client (ponovna implementacija rsh i rlogin) isporu\u010duju se bez za\u0161tite NX, iako imaju SUID prava :(. \u0160tavi\u0161e, u nekoliko SUID binarnih datoteka nedostaje osnovna za\u0161tita poput kanarinca steka (na primjer, binarna datoteka Xorg.wrap iz paketa Xorg).<\/p>\n<h1>Sa\u017eetak i kona\u010dne napomene<\/h1>\n<p>\nU ovom \u010dlanku istaknuli smo nekoliko sigurnosnih osobina modernih Linux distribucija. Analiza je pokazala da najnovija LTS distribucija Ubuntu (18.04) pru\u017ea, u prosjeku, najsna\u017eniju za\u0161titu na razini operativnog sustava i aplikacija me\u0111u distribucijama s relativno novim jezgrama, kao \u0161to su Ubuntu 14.04, 12.04 i Debian 9. Me\u0111utim, razmatrane distribucije CentOS, RHEL i OpenSUSE u na\u0161em skupu podataka zadano nude gusto pakiranje paketa, a u najnovijim verzijama (CentOS i RHEL) imaju vi\u0161i postotak implementacije za\u0161tite od sudara steka, u usporedbi s konkurentima temeljenim na Debianku (Debian i Ubuntu). U usporedbi verzija CentOS i RedHat primje\u0107ujemo velika pobolj\u0161anja u implementaciji kanarinca steka i RELRO s verzija 6 na 7, ali u prosjeku je u CentOS-u implementirano vi\u0161e funkcija nego u RHEL-u. Sveukupno, svim distribucijama treba posvetiti posebnu pa\u017enju za\u0161titi PIE, koja je, osim Debiana 9 i Ubuntua 18.04, implementirana u manje od 10% binarnih datoteka iz na\u0161eg skupa podataka. <\/p>\n<p>Na kraju, treba napomenuti: iako smo ru\u010dno proveli istra\u017eivanje, postoji mnogo sigurnosnih alata (npr., <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>), koji obavljaju analizu i poma\u017eu u izbjegavanju nesigurnih konfiguracija. Na\u017ealost, \u010dak i sna\u017ena za\u0161tita u razumnim konfiguracijama ne jam\u010di odsutnost exploita. Zato \u010dvrsto vjerujemo da je od vitalne va\u017enosti osigurati <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">pouzdano pra\u0107enje i sprje\u010davanje napada u stvarnom vremenu<\/a><\/noindex>, fokusiraju\u0107i se na obrasce eksploatacije i sprje\u010davaju\u0107i ih.<\/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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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\udd47Milijuni binarnih datoteka kasnije. Kako se Linux osna\u017eio | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}