{"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\/pt\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>Neste artigo, exploramos os esquemas de prote\u00e7\u00e3o (hardening schemes) que funcionam por padr\u00e3o em cinco distribui\u00e7\u00f5es populares do Linux. Para cada uma, utilizamos a configura\u00e7\u00e3o padr\u00e3o do kernel, carregamos todos os pacotes e analisamos os esquemas de prote\u00e7\u00e3o nos bin\u00e1rios incorporados. As distribui\u00e7\u00f5es consideradas s\u00e3o OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 e 7, al\u00e9m do Ubuntu 14.04, 12.04 e 18.04 LTS. <\/p>\n<p>Os resultados confirmam que at\u00e9 mesmo os esquemas b\u00e1sicos, como can\u00e1rios de pilha e c\u00f3digo independente de posi\u00e7\u00e3o, ainda n\u00e3o s\u00e3o amplamente utilizados. A situa\u00e7\u00e3o \u00e9 ainda pior entre os compiladores quando se trata de prote\u00e7\u00e3o contra vulnerabilidades como o stack clash, que ganhou destaque em janeiro ap\u00f3s a divulga\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">de informa\u00e7\u00f5es sobre vulnerabilidades no systemd.<\/a><\/noindex>Mas nem tudo est\u00e1 perdido. Uma parte significativa dos bin\u00e1rios implementa m\u00e9todos b\u00e1sicos de prote\u00e7\u00e3o, e esse n\u00famero est\u00e1 crescendo a cada vers\u00e3o. <\/p>\n<p>A verifica\u00e7\u00e3o mostrou que a maior quantidade de m\u00e9todos de prote\u00e7\u00e3o foi implementada no Ubuntu 18.04 a n\u00edvel de sistema operacional e aplicativos, seguido pelo Debian 9. Por outro lado, no OpenSUSE 12.4, CentOS 7 e RHEL 7, tamb\u00e9m foram implementados esquemas b\u00e1sicos de prote\u00e7\u00e3o, e a prote\u00e7\u00e3o contra o stack clash \u00e9 ainda mais abrangente em um conjunto de pacotes por padr\u00e3o consideravelmente mais denso.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Introdu\u00e7\u00e3o<\/h1>\n<p>\n\u00c9 dif\u00edcil garantir a alta qualidade do software. Apesar da enorme quantidade de ferramentas avan\u00e7adas para an\u00e1lise est\u00e1tica de c\u00f3digo e an\u00e1lise din\u00e2mica em tempo de execu\u00e7\u00e3o, al\u00e9m do progresso significativo no desenvolvimento de compiladores e linguagens de programa\u00e7\u00e3o, o software moderno ainda sofre de vulnerabilidades que s\u00e3o constantemente exploradas por criminosos. A situa\u00e7\u00e3o \u00e9 ainda pior em ecossistemas que incluem c\u00f3digo legado. Nesses casos, n\u00e3o apenas enfrentamos o eterno problema de encontrar erros potencialmente explor\u00e1veis, mas tamb\u00e9m estamos limitados por r\u00edgidos limites de compatibilidade que frequentemente exigem a manuten\u00e7\u00e3o de c\u00f3digo restrito, e ainda pior, vulner\u00e1vel ou com falhas.<\/p>\n<p>\u00c9 aqui que entram os m\u00e9todos de prote\u00e7\u00e3o ou hardening. Alguns tipos de erros n\u00e3o conseguimos evitar, mas podemos dificultar a vida do criminoso e parcialmente resolver o problema, prevenindo ou interferindo. <i>opera\u00e7\u00e3o<\/i> esses erros. Essa prote\u00e7\u00e3o \u00e9 utilizada em todos os sistemas operacionais modernos, no entanto, os m\u00e9todos diferem significativamente em complexidade, efic\u00e1cia e desempenho: desde can\u00e1rios de pilha (stack canaries) at\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> prote\u00e7\u00f5es completas <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. Neste artigo, veremos quais m\u00e9todos de prote\u00e7\u00e3o s\u00e3o aplicados nas distribui\u00e7\u00f5es Linux mais populares na configura\u00e7\u00e3o padr\u00e3o, al\u00e9m de examinarmos as propriedades dos bin\u00e1rios que s\u00e3o distribu\u00eddos atrav\u00e9s dos sistemas de gerenciamento de pacotes de cada distribui\u00e7\u00e3o.<\/p>\n<h3>CVE e seguran\u00e7a<\/h3>\n<p>\nTodos n\u00f3s j\u00e1 vimos artigos com t\u00edtulos como \"Os aplicativos mais vulner\u00e1veis do ano\" ou \"Os sistemas operacionais mais vulner\u00e1veis\". Geralmente, s\u00e3o apresentadas estat\u00edsticas sobre o n\u00famero total de registros de vulnerabilidades do tipo <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, obtidas a partir de <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">Banco Nacional de Vulnerabilidades (NVD)<\/a><\/noindex> de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> e outras fontes. Posteriormente, esses aplicativos ou sistemas operacionais s\u00e3o classificados de acordo com o n\u00famero de CVEs. Infelizmente, embora os CVEs sejam muito \u00fateis para rastrear problemas e informar fornecedores e usu\u00e1rios, eles oferecem poucas informa\u00e7\u00f5es sobre a seguran\u00e7a real do software.<\/p>\n<p>Para ilustrar, vejamos o n\u00famero total de CVEs nos \u00faltimos quatro anos para o kernel Linux e cinco das distribui\u00e7\u00f5es de servidores mais populares, ou seja, Ubuntu, Debian, Red Hat Enterprise Linux e OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1<\/i><\/p>\n<p>O que este gr\u00e1fico nos diz? Um maior n\u00famero de CVEs significa que uma distribui\u00e7\u00e3o \u00e9 mais vulner\u00e1vel que outra? A resposta \u00e9 n\u00e3o. Por exemplo, neste artigo, voc\u00ea ver\u00e1 que o Debian aplica mecanismos de prote\u00e7\u00e3o mais rigorosos em compara\u00e7\u00e3o, digamos, com OpenSUSE ou RedHat Linux, e mesmo assim, o Debian possui mais CVEs. No entanto, isso n\u00e3o necessariamente indica uma seguran\u00e7a enfraquecida: mesmo a presen\u00e7a de CVEs n\u00e3o significa que a vulnerabilidade <i>\u00e9 explor\u00e1vel<\/i>. As pontua\u00e7\u00f5es de gravidade d\u00e3o uma ideia de qu\u00e3o <i>prov\u00e1vel<\/i> \u00e9 a explora\u00e7\u00e3o da vulnerabilidade, mas, no final das contas, a explorabilidade depende em grande parte das prote\u00e7\u00f5es presentes nos sistemas afetados, assim como dos recursos e capacidades dos invasores. Al\u00e9m disso, a aus\u00eancia de relat\u00f3rios de CVEs n\u00e3o diz nada sobre outras <i>vulnerabilidades n\u00e3o registradas ou desconhecidas<\/i> vulnerabilidades. A diferen\u00e7a em CVE pode ser explicada n\u00e3o pela qualidade do software, mas por outros fatores, incluindo os recursos alocados para teste ou o tamanho da base de usu\u00e1rios. No nosso exemplo, o maior n\u00famero de CVEs no Debian pode simplesmente indicar que o Debian fornece mais pacotes de software. <\/p>\n<p>Certamente, o sistema CVE oferece informa\u00e7\u00f5es \u00fateis que permitem criar as devidas prote\u00e7\u00f5es. Quanto melhor entendemos as causas de falha do programa, mais f\u00e1cil \u00e9 identificar poss\u00edveis maneiras de explora\u00e7\u00e3o e desenvolver os mecanismos adequados <i>de detec\u00e7\u00e3o e resposta<\/i>. Na Fig. 2, est\u00e3o mostradas as categorias de vulnerabilidades para todas as distribui\u00e7\u00f5es nos \u00faltimos quatro anos (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">fonte<\/a><\/noindex>). \u00c9 imediatamente evidente que a maioria dos CVEs se enquadra nas seguintes categorias: nega\u00e7\u00e3o de servi\u00e7o (DoS), execu\u00e7\u00e3o de c\u00f3digo, estouro de buffer, corrup\u00e7\u00e3o de mem\u00f3ria, vazamento (exfiltra\u00e7\u00e3o) de informa\u00e7\u00f5es e escalada de privil\u00e9gios. Embora muitos CVEs sejam contabilizados v\u00e1rias vezes em diferentes categorias, no geral, os mesmos problemas persistem ano ap\u00f3s ano. Na pr\u00f3xima parte do artigo, avaliaremos o uso de diferentes esquemas de prote\u00e7\u00e3o para evitar a explora\u00e7\u00e3o das vulnerabilidades citadas.<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2<\/i><\/p>\n<h3>Tarefas<\/h3>\n<p>\nNeste artigo, pretendemos responder \u00e0s seguintes perguntas:<\/p>\n<ul>\n<li>Qual \u00e9 a seguran\u00e7a das diversas distribui\u00e7\u00f5es Linux? Quais mecanismos de prote\u00e7\u00e3o existem no n\u00facleo e nas aplica\u00e7\u00f5es do espa\u00e7o do usu\u00e1rio?\n<\/li>\n<li>Como a aceita\u00e7\u00e3o dos mecanismos de prote\u00e7\u00e3o mudou ao longo do tempo para diferentes distribui\u00e7\u00f5es?\n<\/li>\n<li>Quais s\u00e3o as depend\u00eancias m\u00e9dias de pacotes e bibliotecas de cada distribui\u00e7\u00e3o?\n<\/li>\n<li>Quais prote\u00e7\u00f5es est\u00e3o implementadas para cada bin\u00e1rio?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Escolha das distribui\u00e7\u00f5es<\/h3>\n<p>\nAparentemente, \u00e9 dif\u00edcil encontrar estat\u00edsticas precisas sobre as instala\u00e7\u00f5es das distribui\u00e7\u00f5es, uma vez que, na maioria das vezes, o n\u00famero de downloads n\u00e3o indica o n\u00famero real de instala\u00e7\u00f5es. No entanto, as op\u00e7\u00f5es Unix representam a maioria dos sistemas de servidores (em servidores web, 69,2%, conforme <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">estat\u00edsticas<\/a><\/noindex> W3techs e outras fontes), e sua participa\u00e7\u00e3o est\u00e1 em constante crescimento. Assim, para nossa pesquisa, concentramos-nos nas distribui\u00e7\u00f5es dispon\u00edveis 'prontas para uso' na plataforma <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. Em particular, escolhemos os seguintes sistemas operacionais:<\/p>\n<p>Distribui\u00e7\u00e3o\/vers\u00e3o<br \/>\nKernel<br \/>\nBuild<\/p>\n<p>OpenSUSE 12.4<br \/>\n4.12.14-95.3-default<br \/>\n#1 SMP Wed Dec 5 06:00:48 UTC 2018 (63a8d29)<\/p>\n<p>Debian 9 (stretch)<br \/>\n4.9.0-8-amd64<br \/>\n#1 SMP Debian 4.9.130-2 (2018-10-27)<\/p>\n<p>CentOS 6.10<br \/>\n2.6.32-754.10.1.el6.x86_64<br \/>\n#1 SMP Tue Jan 15 17:07:28 UTC 2019<\/p>\n<p>CentOS 7<br \/>\n3.10.0-957.5.1.el7.x86_64<br \/>\n#1 SMP Fri Feb 1 14:54:57 UTC 2019<\/p>\n<p>Red Hat Enterprise Linux Server 6.10 (Santiago)<br \/>\n2.6.32-754.9.1.el6.x86_64<br \/>\n#1 SMP Wed Nov 21 15:08:21 EST 2018<\/p>\n<p>Red Hat Enterprise Linux Server 7.6 (Maipo)<br \/>\n3.10.0-957.1.3.el7.x86_64<br \/>\n#1 SMP Thu Nov 15 17:36:42 UTC 2018<\/p>\n<p>Ubuntu 14.04 (Trusty Tahr)<br \/>\n4.4.0\u2013140-generic<br \/>\n <br \/>\n#166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 20\u2026<\/p>\n<p>Ubuntu 16.04 (Xenial Xerus)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27~16.04.1-Ubuntu SMP Fri Dec 7 09:59:47 UTC 2018<\/p>\n<p>Ubuntu 18.04 (Bionic Beaver)<br \/>\n4.15.0\u20131026-gcp<br \/>\n#27-Ubuntu SMP Thu Dec 6 18:27:01 UTC 2018<\/p>\n<p><i>Tabela 1<\/i> <\/p>\n<h1>An\u00e1lise<\/h1>\n<p>\nVamos estudar a configura\u00e7\u00e3o do kernel padr\u00e3o, bem como as propriedades dos pacotes dispon\u00edveis atrav\u00e9s do gerenciador de pacotes de cada distribui\u00e7\u00e3o 'out of the box'. Assim, estaremos considerando apenas pacotes dos espelhos padr\u00e3o de cada distribui\u00e7\u00e3o, ignorando pacotes de reposit\u00f3rios inst\u00e1veis (como os espelhos 'testing' no Debian) e pacotes de terceiros (como os pacotes da Nvidia dos espelhos padr\u00e3o). Al\u00e9m disso, n\u00e3o consideraremos compila\u00e7\u00f5es de kernels personalizadas ou configura\u00e7\u00f5es com seguran\u00e7a aprimorada.<\/p>\n<h3>An\u00e1lise da configura\u00e7\u00e3o do kernel<\/h3>\n<p>\nAplicamos um script de an\u00e1lise com base no <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">verificador de kconfig livre<\/a><\/noindex>. Consideramos os par\u00e2metros de seguran\u00e7a padr\u00e3o nas distribui\u00e7\u00f5es mencionadas e os comparamos com a lista de <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Projeto de Autoprote\u00e7\u00e3o do Kernel<\/a><\/noindex> (KSPP). Para cada par\u00e2metro de configura\u00e7\u00e3o, a tabela 2 descreve a configura\u00e7\u00e3o desejada: a marca est\u00e1 presente para distribui\u00e7\u00f5es que atendem \u00e0s recomenda\u00e7\u00f5es do KSSP (explica\u00e7\u00f5es dos termos podem ser encontradas em <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">aqui<\/a><\/noindex>; em artigos futuros, contaremos como muitos desses m\u00e9todos de prote\u00e7\u00e3o surgiram e como comprometer um sistema na aus\u00eancia deles).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe modo geral, os novos kernels t\u00eam configura\u00e7\u00f5es padr\u00e3o mais rigorosas. Por exemplo, o CentOS 6.10 e o RHEL 6.10 com kernel 2.6.32 n\u00e3o apresentam a maioria das funcionalidades cr\u00edticas implementadas em novos kernels, como <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, permiss\u00f5es estritas RWX, randomiza\u00e7\u00e3o de endere\u00e7os ou prote\u00e7\u00e3o copy2usr. \u00c9 importante notar que muitas das op\u00e7\u00f5es de configura\u00e7\u00e3o da tabela est\u00e3o ausentes em vers\u00f5es mais antigas do kernel e n\u00e3o se aplicam na pr\u00e1tica \u2014 na tabela, isso ainda \u00e9 indicado como a aus\u00eancia de prote\u00e7\u00e3o adequada. Da mesma forma, se um par\u00e2metro de configura\u00e7\u00e3o estiver ausente nesta vers\u00e3o, e para seguran\u00e7a esse par\u00e2metro precisar ser desativado, isso \u00e9 considerado uma configura\u00e7\u00e3o razo\u00e1vel. <\/p>\n<p>Mais um ponto a ser considerado na interpreta\u00e7\u00e3o dos resultados: algumas configura\u00e7\u00f5es do n\u00facleo que aumentam a superf\u00edcie de ataque tamb\u00e9m podem ser usadas para seguran\u00e7a. Exemplos incluem uprobes e kprobes, m\u00f3dulos do n\u00facleo e BPF\/eBPF. Nossa recomenda\u00e7\u00e3o \u00e9 usar os mecanismos mencionados acima para garantir prote\u00e7\u00e3o real, j\u00e1 que eles n\u00e3o s\u00e3o triviais de usar, e sua explora\u00e7\u00e3o pressup\u00f5e que agentes maliciosos j\u00e1 est\u00e3o consolidados no sistema. Mas se essas op\u00e7\u00f5es forem habilitadas, o administrador do sistema deve monitorar ativamente abusos.<\/p>\n<p>Ao revisar as entradas da tabela 2, vemos que os n\u00facleos modernos oferecem v\u00e1rias op\u00e7\u00f5es para se proteger contra a explora\u00e7\u00e3o de vulnerabilidades, como vazamento de informa\u00e7\u00f5es e estouro de pilha\/mont\u00e3o. No entanto, notamos que at\u00e9 mesmo as distribui\u00e7\u00f5es mais recentes e populares ainda n\u00e3o implementaram prote\u00e7\u00f5es mais complexas (por exemplo, com patches <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>) ou prote\u00e7\u00f5es modernas contra ataques de reutiliza\u00e7\u00e3o de c\u00f3digo (por exemplo, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">uma combina\u00e7\u00e3o de randomiza\u00e7\u00e3o com esquemas do tipo R^X para c\u00f3digo<\/a><\/noindex>). O que \u00e9 ainda pior, mesmo essas ferramentas de prote\u00e7\u00e3o mais avan\u00e7adas n\u00e3o protegem contra o espectro completo de ataques. Assim, \u00e9 crucial que os administradores do sistema complementem configura\u00e7\u00f5es razo\u00e1veis com solu\u00e7\u00f5es que ofere\u00e7am detec\u00e7\u00e3o e preven\u00e7\u00e3o de exploits em tempo de execu\u00e7\u00e3o.<\/p>\n<h3>An\u00e1lise de aplica\u00e7\u00f5es<\/h3>\n<p>\nN\u00e3o \u00e9 surpreendente que diferentes distribui\u00e7\u00f5es apresentem diferentes caracter\u00edsticas de pacotes, op\u00e7\u00f5es de compila\u00e7\u00e3o, depend\u00eancias de bibliotecas e assim por diante. Existem diferen\u00e7as at\u00e9 mesmo para <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">distribui\u00e7\u00f5es<\/a><\/noindex> parentes e pacotes com poucas depend\u00eancias (por exemplo, coreutils no Ubuntu ou Debian). Para avaliar as diferen\u00e7as, baixamos todos os pacotes dispon\u00edveis, extra\u00edmos seu conte\u00fado e analisamos os arquivos bin\u00e1rios e suas depend\u00eancias. Para cada pacote, rastreamos outros pacotes dos quais ele depende, e para cada bin\u00e1rio, rastreamos suas depend\u00eancias. Nesta se\u00e7\u00e3o, resumiremos nossas conclus\u00f5es.<\/p>\n<h4>Distribui\u00e7\u00f5es<\/h4>\n<p>\nNo total, carregamos 361.556 pacotes para todas as distribui\u00e7\u00f5es, extraindo apenas pacotes dos espelhos padr\u00e3o. Ignoramos pacotes sem arquivos execut\u00e1veis ELF, como c\u00f3digos-fonte, fontes, etc. Ap\u00f3s a filtragem, restaram 129.569 pacotes, contendo um total de 584.457 arquivos bin\u00e1rios. A distribui\u00e7\u00e3o de pacotes e arquivos por distribui\u00e7\u00f5es \u00e9 mostrada na Fig. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3<\/i><\/p>\n<p>Pode-se notar que quanto mais moderna a distribui\u00e7\u00e3o, maior o n\u00famero de pacotes e arquivos bin\u00e1rios, o que \u00e9 l\u00f3gico. Al\u00e9m disso, os pacotes Ubuntu e Debian cont\u00eam muito mais arquivos bin\u00e1rios (tanto execut\u00e1veis quanto m\u00f3dulos e bibliotecas din\u00e2micas) do que CentOS, SUSE e RHEL, o que potencialmente afeta a superf\u00edcie de ataque do Ubuntu e do Debian (vale ressaltar que os n\u00fameros refletem todos os bin\u00e1rios de todas as vers\u00f5es do pacote, ou seja, alguns arquivos s\u00e3o analisados v\u00e1rias vezes). Isso \u00e9 especialmente importante ao considerar as depend\u00eancias entre pacotes. Dessa forma, uma vulnerabilidade em um bin\u00e1rio de um pacote pode afetar muitas partes do ecossistema, j\u00e1 que uma biblioteca vulner\u00e1vel pode impactar todos os arquivos bin\u00e1rios que a importam. Como ponto de partida, vamos olhar para a distribui\u00e7\u00e3o do n\u00famero de depend\u00eancias entre pacotes em diferentes sistemas operacionais:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" 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>Quase em todas as distribui\u00e7\u00f5es, 60% dos pacotes t\u00eam pelo menos 10 depend\u00eancias. Al\u00e9m disso, alguns pacotes t\u00eam um n\u00famero significativamente maior de depend\u00eancias (mais de 100). O mesmo se aplica a depend\u00eancias reversas de pacotes: como esperado, v\u00e1rios pacotes s\u00e3o usados por muitos outros pacotes na distribui\u00e7\u00e3o, portanto, vulnerabilidades nesses poucos escolhidos t\u00eam um alto risco. Como exemplo, na tabela a seguir, est\u00e3o listados 20 pacotes com o maior n\u00famero de depend\u00eancias reversas no SLES, CentOS 7, Debian 9 e Ubuntu 18.04 (cada c\u00e9lula indica o pacote e o n\u00famero de depend\u00eancias reversas).<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 3<\/i><\/p>\n<p>Um fato interessante. Embora todos os sistemas operacionais analisados sejam constru\u00eddos para a arquitetura x86_64 e a maioria dos pacotes tenha a arquitetura definida como x86_64 e x86, os pacotes frequentemente cont\u00eam arquivos bin\u00e1rios para outras arquiteturas, conforme mostrado na Fig. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5<\/i><\/p>\n<p>Na pr\u00f3xima se\u00e7\u00e3o, vamos nos aprofundar nas caracter\u00edsticas dos bin\u00e1rios analisados.<\/p>\n<h4>Estat\u00edsticas de prote\u00e7\u00e3o de arquivos bin\u00e1rios<\/h4>\n<p>\nComo m\u00ednimo absoluto, \u00e9 necess\u00e1rio estudar um conjunto b\u00e1sico de variantes de prote\u00e7\u00e3o para os arquivos bin\u00e1rios existentes. V\u00e1rios distribuidores do Linux v\u00eam com scripts que executam essas verifica\u00e7\u00f5es. Por exemplo, no Debian\/Ubuntu existe um script assim. Aqui est\u00e1 um exemplo de seu funcionamento:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Execut\u00e1vel Independente de Posi\u00e7\u00e3o: sim\n Stack protegido: sim\n Fun\u00e7\u00f5es Fortificadas de Fonte: n\u00e3o, apenas fun\u00e7\u00f5es n\u00e3o protegidas encontradas!\n Rela\u00e7\u00f5es somente leitura: sim\n Liga\u00e7\u00e3o imediata: sim<\/code><\/pre>\n<p>\nO script verifica cinco <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">fun\u00e7\u00f5es de prote\u00e7\u00e3o<\/a><\/noindex>:<\/p>\n<ul>\n<li>Execut\u00e1vel Independente de Posi\u00e7\u00e3o (PIE): indica se \u00e9 poss\u00edvel mover a se\u00e7\u00e3o de texto do programa na mem\u00f3ria para conseguir randomiza\u00e7\u00e3o, se o ASLR estiver ativado no n\u00facleo.\n<\/li>\n<li>Stack Protegido: se can\u00e1rios de pilha est\u00e3o habilitados para prote\u00e7\u00e3o contra ataques de colis\u00e3o de pilha.\n<\/li>\n<li>Fortify Source: se fun\u00e7\u00f5es inseguras (como strcpy) s\u00e3o substitu\u00eddas por suas contrapartes mais seguras, enquanto chamadas verificadas em tempo de execu\u00e7\u00e3o s\u00e3o suas contrapartes n\u00e3o verificadas (como memcpy em vez de __memcpy_chk).\n<\/li>\n<li>Rela\u00e7\u00f5es Somente Leitura (RELRO): se as entradas da tabela de relocation est\u00e3o marcadas como \"somente leitura\", caso tenham sido ativadas antes do in\u00edcio da execu\u00e7\u00e3o.\n<\/li>\n<li>Liga\u00e7\u00e3o imediata: se o vinculador de tempo de execu\u00e7\u00e3o resolve todas as relocations antes do in\u00edcio da execu\u00e7\u00e3o do programa (isso \u00e9 equivalente ao RELRO completo).<\/li>\n<\/ul>\n<p>\nOs mecanismos acima s\u00e3o suficientes? Infelizmente, n\u00e3o. Existem formas conhecidas de contornar todas as prote\u00e7\u00f5es acima, mas quanto mais r\u00edgida a prote\u00e7\u00e3o, maior o desafio para o atacante. Por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">as t\u00e9cnicas de contorno RELRO<\/a><\/noindex> s\u00e3o mais dif\u00edceis de aplicar se PIE e liga\u00e7\u00e3o imediata estiverem ativados. Da mesma forma, ASLR completo requer trabalho adicional para criar um exploit funcional. Entretanto, invasores sofisticados j\u00e1 est\u00e3o prontos para enfrentar tais prote\u00e7\u00f5es: sua aus\u00eancia, na verdade, acelera a invas\u00e3o. Portanto, \u00e9 extremamente importante que essas medidas sejam consideradas como necess\u00e1rias. <i>pelo menos<\/i>. <\/p>\n<p>Quer\u00edamos investigar quantos arquivos bin\u00e1rios nos distribuidores examinados est\u00e3o protegidos por essas e tamb\u00e9m por mais tr\u00eas m\u00e9todos:<\/p>\n<ul>\n<li>O bit n\u00e3o execut\u00e1vel (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) impede a execu\u00e7\u00e3o em qualquer regi\u00e3o que n\u00e3o deva ser executada, por exemplo, na pilha do heap, etc.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> designa o caminho de execu\u00e7\u00e3o usado pelo carregador din\u00e2mico para localizar as bibliotecas correspondentes. O primeiro \u00e9 <i>obrigat\u00f3rio<\/i> para qualquer sistema moderno: sua aus\u00eancia permite que invasores gravem arbitrariamente a carga \u00fatil na mem\u00f3ria e a executem como est\u00e1. Para o segundo, configura\u00e7\u00f5es incorretas do caminho de execu\u00e7\u00e3o ajudam na introdu\u00e7\u00e3o de c\u00f3digo n\u00e3o confi\u00e1vel, o que pode levar a uma s\u00e9rie de problemas (por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">eleva\u00e7\u00e3o de privil\u00e9gios<\/a><\/noindex>, al\u00e9m de <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">outros problemas<\/a><\/noindex>).<\/li>\n<li>A prote\u00e7\u00e3o contra colis\u00e3o de pilha garante defesa contra ataques que for\u00e7am a pilha a sobrepor-se a outras \u00e1reas de mem\u00f3ria (por exemplo, \u00e0 heap). Considerando os recentes exploits que abusam <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">de vulnerabilidades de colis\u00e3o de heap no systemd,<\/a><\/noindex>consideramos apropriado incluir esse mecanismo em nosso conjunto de dados.<\/li>\n<\/ul>\n<p>\nAssim, sem mais delongas, vamos aos n\u00fameros. As Tabelas 4 e 5 cont\u00eam um resumo da an\u00e1lise de arquivos execut\u00e1veis e bibliotecas de v\u00e1rias distribui\u00e7\u00f5es, respectivamente.<\/p>\n<ul>\n<li>Como pode ser observado, a prote\u00e7\u00e3o NX est\u00e1 implementada em quase todos os lugares, com raras exce\u00e7\u00f5es. Em particular, pode-se notar um uso um pouco mais baixo em distribui\u00e7\u00f5es Ubuntu e Debian em compara\u00e7\u00e3o com CentOS, RHEL e OpenSUSE.\n<\/li>\n<li>Can\u00e1rios de pilha est\u00e3o ausentes em muitos lugares, especialmente em distribui\u00e7\u00f5es com n\u00facleos antigos. Algum progresso \u00e9 observado nas \u00faltimas distribui\u00e7\u00f5es do CentOS, RHEL, Debian e Ubuntu.\n<\/li>\n<li>Exceto Debian e Ubuntu 18.04, a maioria das distribui\u00e7\u00f5es tem um suporte ruim a PIE.\n<\/li>\n<li>A prote\u00e7\u00e3o contra colis\u00f5es de pilha \u00e9 fraca no OpenSUSE, CentOS 7 e RHEL 7 e praticamente ausente nas demais.\n<\/li>\n<li>Todas as distribui\u00e7\u00f5es com n\u00facleos modernos t\u00eam algum suporte a RELRO, sendo que a lideran\u00e7a \u00e9 de Ubuntu 18.04 e o segundo lugar vai para Debian.<\/li>\n<\/ul>\n<p>\nComo j\u00e1 mencionado, as m\u00e9tricas nesta tabela s\u00e3o m\u00e9dias de todas as vers\u00f5es do arquivo bin\u00e1rio. Se considerarmos apenas as \u00faltimas vers\u00f5es dos arquivos, os n\u00fameros ser\u00e3o diferentes (por exemplo, veja <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">o progresso do Debian com a implementa\u00e7\u00e3o de PIE)<\/a><\/noindex>. Al\u00e9m disso, a maioria das distribui\u00e7\u00f5es geralmente conta apenas com a prote\u00e7\u00e3o de algumas fun\u00e7\u00f5es no c\u00f3digo bin\u00e1rio ao calcular estat\u00edsticas, e em nossa an\u00e1lise indicamos a verdadeira porcentagem de fun\u00e7\u00f5es refor\u00e7adas. Portanto, se 5 das 50 fun\u00e7\u00f5es em um bin\u00e1rio est\u00e3o protegidas, atribu\u00edmos uma pontua\u00e7\u00e3o de 0,1, o que corresponde a 10% de fun\u00e7\u00f5es refor\u00e7adas.<\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 4. Caracter\u00edsticas de prote\u00e7\u00e3o para arquivos execut\u00e1veis, mostrados na Fig. 3 (implementa\u00e7\u00e3o das fun\u00e7\u00f5es correspondentes em porcentagem do total de arquivos execut\u00e1veis)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabela 5. Caracter\u00edsticas de prote\u00e7\u00e3o para bibliotecas mostradas na Fig. 3 (implementa\u00e7\u00e3o das fun\u00e7\u00f5es correspondentes em porcentagem do total de bibliotecas)<\/i><\/p>\n<p>Ent\u00e3o, existe progresso? Definitivamente existe: isso \u00e9 evidente nas estat\u00edsticas de distribui\u00e7\u00f5es individuais (por exemplo, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), assim como nas tabelas apresentadas acima. Como exemplo, a Fig. 6 mostra a implementa\u00e7\u00e3o de mecanismos de prote\u00e7\u00e3o em tr\u00eas distribui\u00e7\u00f5es consecutivas do Ubuntu LTS 5 (omitimos a estat\u00edstica sobre prote\u00e7\u00e3o contra colis\u00f5es de pilha). Notamos que de vers\u00e3o para vers\u00e3o, cada vez mais arquivos suportam can\u00e1rios de pilha, e gradativamente, um n\u00famero maior de arquivos bin\u00e1rios \u00e9 fornecido com prote\u00e7\u00e3o completa RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu\" 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>Infelizmente, v\u00e1rios arquivos execut\u00e1veis em diferentes distribui\u00e7\u00f5es ainda n\u00e3o possuem nenhuma das prote\u00e7\u00f5es mencionadas acima. Por exemplo, ao observar o Ubuntu 18.04, podemos notar o bin\u00e1rio ngetty (substituto do getty), assim como os shells mksh e lksh, o interpretador picolisp, os pacotes nvidia-cuda-toolkit (pacote popular para aplica\u00e7\u00f5es com acelera\u00e7\u00e3o por GPU, como frameworks de aprendizado de m\u00e1quina) e klibc-utils. Da mesma forma, o bin\u00e1rio mandos-client (ferramenta administrativa que permite reiniciar automaticamente m\u00e1quinas com sistemas de arquivos criptografados), assim como o rsh-redone-client (implementa\u00e7\u00e3o revisada do rsh e rlogin) s\u00e3o fornecidos sem a prote\u00e7\u00e3o NX, embora possuam direitos SUID :(. Al\u00e9m disso, v\u00e1rios bin\u00e1rios SUID n\u00e3o possuem prote\u00e7\u00e3o b\u00e1sica, como can\u00e1rios de pilha (por exemplo, o arquivo bin\u00e1rio Xorg.wrap do pacote Xorg).<\/p>\n<h1>Resumo e considera\u00e7\u00f5es finais<\/h1>\n<p>\nNeste artigo, destacamos algumas caracter\u00edsticas de seguran\u00e7a das distribui\u00e7\u00f5es modernas do Linux. A an\u00e1lise mostrou que a vers\u00e3o mais recente do Ubuntu LTS (18.04) implementa, em m\u00e9dia, a prote\u00e7\u00e3o mais forte em n\u00edvel de sistema operacional e aplicativos entre distribui\u00e7\u00f5es com n\u00facleos relativamente novos, como o Ubuntu 14.04, 12.04 e Debian 9. No entanto, as distribui\u00e7\u00f5es analisadas, como CentOS, RHEL e OpenSUSE, em nosso conjunto de dados, oferecem por padr\u00e3o um conjunto mais robusto de pacotes e, nas vers\u00f5es mais recentes (CentOS e RHEL), t\u00eam uma porcentagem mais alta de implementa\u00e7\u00e3o de prote\u00e7\u00e3o contra estouro de pilha, em compara\u00e7\u00e3o com os concorrentes baseados em Debian (Debian e Ubuntu). Ao comparar as vers\u00f5es do CentOS e RedHat, notamos grandes melhorias na implementa\u00e7\u00e3o de can\u00e1rios de pilha e RELRO das vers\u00f5es 6 para 7, mas, em m\u00e9dia, o CentOS tem mais recursos implementados do que o RHEL. De modo geral, todas as distribui\u00e7\u00f5es devem prestar especial aten\u00e7\u00e3o \u00e0 prote\u00e7\u00e3o PIE, que, exceto no Debian 9 e Ubuntu 18.04, est\u00e1 implementada em menos de 10% dos arquivos bin\u00e1rios do nosso conjunto de dados. <\/p>\n<p>Por fim, \u00e9 importante notar: embora tenhamos realizado a pesquisa manualmente, existem v\u00e1rias ferramentas de seguran\u00e7a (como <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>), que realizam an\u00e1lises e ajudam a evitar configura\u00e7\u00f5es inseguras. Infelizmente, mesmo com forte prote\u00e7\u00e3o em configura\u00e7\u00f5es razo\u00e1veis, n\u00e3o h\u00e1 garantia de aus\u00eancia de exploits. \u00c9 por isso que estamos firmemente convencidos de que \u00e9 vital garantir <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">monitoramento confi\u00e1vel e preven\u00e7\u00e3o de ataques em tempo real<\/a><\/noindex>, concentrando-se em padr\u00f5es de explora\u00e7\u00e3o e prevenindo-os.<\/p>\n<p>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Milh\u00f5es de bin\u00e1rios depois. Como o Linux se fortaleceu | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}