{"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\/es\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","title":{"rendered":"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/bf51e5698530d4a6a44ff97f542a2a87.png\" style=\"display:block;margin: 0 auto;\" \/><b>TL;DR<\/b>. En este art\u00edculo, exploramos los esquemas de endurecimiento (hardening schemes) que funcionan de f\u00e1brica en cinco distribuciones populares de Linux. Para cada una, tomamos la configuraci\u00f3n predeterminada del n\u00facleo, cargamos todos los paquetes y analizamos los esquemas de protecci\u00f3n en los binarios anidados. Se consideran las distribuciones OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 y 7, as\u00ed como Ubuntu 14.04, 12.04 y 18.04 LTS. <\/p>\n<p>Los resultados confirman que incluso los esquemas b\u00e1sicos, como las canarias en la pila y el c\u00f3digo independiente de la posici\u00f3n, a\u00fan no son utilizados por todos. La situaci\u00f3n es a\u00fan peor para los compiladores cuando se trata de protegerse contra vulnerabilidades como el choque de pila (stack clash), que llegaron al centro de atenci\u00f3n en enero tras la publicaci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">de informaci\u00f3n sobre vulnerabilidades en systemd<\/a><\/noindex>. Pero no todo est\u00e1 perdido. En una parte significativa de los binarios se implementan m\u00e9todos b\u00e1sicos de protecci\u00f3n, y su n\u00famero aumenta de versi\u00f3n en versi\u00f3n. <\/p>\n<p>La verificaci\u00f3n mostr\u00f3 que la mayor cantidad de m\u00e9todos de protecci\u00f3n se implement\u00f3 en Ubuntu 18.04 a nivel de sistema operativo y aplicaciones, seguido de Debian 9. Por otro lado, OpenSUSE 12.4, CentOS 7 y RHEL 7 tambi\u00e9n implementaron esquemas b\u00e1sicos de protecci\u00f3n, y la protecci\u00f3n contra el choque de pila se aplica de manera a\u00fan m\u00e1s extensa con un conjunto de paquetes predeterminados mucho m\u00e1s denso.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Introducci\u00f3n<\/h1>\n<p>\nEs dif\u00edcil asegurar la alta calidad del software. A pesar de la gran cantidad de herramientas avanzadas para el an\u00e1lisis est\u00e1tico del c\u00f3digo y el an\u00e1lisis din\u00e1mico en tiempo de ejecuci\u00f3n, as\u00ed como del significativo progreso en el desarrollo de compiladores y lenguajes de programaci\u00f3n, el software moderno sigue sufriendo de vulnerabilidades que son constantemente explotadas por delincuentes. La situaci\u00f3n es a\u00fan peor en los ecosistemas que incluyen c\u00f3digo obsoleto. En tales casos, no solo enfrentamos el eterno problema de encontrar posibles errores explotables, sino que tambi\u00e9n estamos limitados por estrictos marcos de compatibilidad hacia atr\u00e1s que a menudo requieren conservar c\u00f3digo limitado, y a\u00fan peor, vulnerable o defectuoso.<\/p>\n<p>Aqu\u00ed es donde entran en juego los m\u00e9todos de protecci\u00f3n o endurecimiento de programas (hardening). Algunos tipos de errores no podemos prevenir, pero podemos dificultar la vida de los delincuentes y resolver parcialmente el problema, previniendo o interrumpiendo. <i>la operaci\u00f3n<\/i> estos errores. Esta protecci\u00f3n se utiliza en todos los sistemas operativos modernos, aunque los m\u00e9todos difieren en gran medida en complejidad, eficacia y rendimiento: desde canarias de pila (stack canaries) y <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><\/noindex> hasta protecciones completas <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Control-flow_integrity\">CFI<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\">ROP<\/a><\/noindex>. En este art\u00edculo, examinaremos qu\u00e9 m\u00e9todos de protecci\u00f3n se aplican en las distribuciones de Linux m\u00e1s populares en su configuraci\u00f3n predeterminada, as\u00ed como tambi\u00e9n estudiaremos las propiedades de los binarios que se distribuyen a trav\u00e9s de los sistemas de gesti\u00f3n de paquetes de cada distribuci\u00f3n.<\/p>\n<h3>CVE y seguridad<\/h3>\n<p>\nTodos hemos visto art\u00edculos con t\u00edtulos como \u00abLas aplicaciones m\u00e1s vulnerables del a\u00f1o\u00bb o \u00abLos sistemas operativos m\u00e1s vulnerables\u00bb. Normalmente, ah\u00ed se presenta estad\u00edsticas sobre el n\u00famero total de registros de vulnerabilidades del tipo <noindex><a rel=\"nofollow\" href=\"https:\/\/cve.mitre.org\/\">CVE (Common Vulnerability and Exposures)<\/a><\/noindex>, obtenidas de <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/\">la Base Nacional de Vulnerabilidades (NVD)<\/a><\/noindex> desde <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nist.gov\/\">NIST<\/a><\/noindex> y otras fuentes. Posteriormente, estas aplicaciones o sistemas operativos se clasifican seg\u00fan la cantidad de CVE. Desafortunadamente, aunque los CVE son muy \u00fatiles para rastrear problemas e informar a proveedores y usuarios, dicen poco sobre la verdadera seguridad del software.<\/p>\n<p>Por ejemplo, consideremos el n\u00famero total de CVE en los \u00faltimos cuatro a\u00f1os para el n\u00facleo de Linux y cinco de las distribuciones de servidor m\u00e1s populares, a saber, Ubuntu, Debian, Red Hat Enterprise Linux y OpenSUSE.<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/16d74634f010e340aedbce441513e3f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1<\/i><\/p>\n<p>\u00bfQu\u00e9 nos dice este gr\u00e1fico? \u00bfSignifica que una mayor cantidad de CVE indica que una distribuci\u00f3n es m\u00e1s vulnerable que otra? La respuesta es no. Por ejemplo, en este art\u00edculo ver\u00e1s que Debian implementa mecanismos de protecci\u00f3n m\u00e1s estrictos en comparaci\u00f3n con, digamos, OpenSUSE o RedHat Linux, y aun as\u00ed, Debian tiene m\u00e1s CVE. Sin embargo, esto no necesariamente significa que la seguridad est\u00e9 debilitada: incluso la presencia de CVE no indica si la vulnerabilidad <i>es explotable<\/i>. Los puntajes de gravedad dan una idea de cu\u00e1n <i>probable<\/i> es la explotaci\u00f3n de la vulnerabilidad, pero en \u00faltima instancia, la explotabilidad depende en gran medida de la protecci\u00f3n presente en los sistemas afectados, as\u00ed como de los recursos y capacidades de los atacantes. Adem\u00e1s, la ausencia de informes de CVE no dice nada sobre otras <i>vulnerabilidades no registradas o desconocidas<\/i> Las vulnerabilidades. La diferencia en CVE puede explicarse no por la calidad del software, sino por otros factores, incluidos los recursos asignados a las pruebas o el tama\u00f1o de la base de usuarios. En nuestro ejemplo, un mayor n\u00famero de CVE en Debian puede simplemente indicar que Debian ofrece m\u00e1s paquetes de software. <\/p>\n<p>Por supuesto, el sistema CVE proporciona informaci\u00f3n \u00fatil que permite crear defensas adecuadas. Cuanto mejor comprendamos las causas del fallo de un programa, m\u00e1s f\u00e1cil ser\u00e1 identificar posibles m\u00e9todos de explotaci\u00f3n y desarrollar mecanismos correspondientes. <i>de detecci\u00f3n y respuesta.<\/i>En la Fig. 2 se muestran las categor\u00edas de vulnerabilidades para todas las distribuciones en los \u00faltimos cuatro a\u00f1os (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.cvedetails.com\/top-50-products.php\">fuente<\/a><\/noindex>). Es evidente que la mayor\u00eda de los CVE caen en las siguientes categor\u00edas: denegaci\u00f3n de servicio (DoS), ejecuci\u00f3n de c\u00f3digo, desbordamiento, corrupci\u00f3n de memoria, fuga (exfiltraci\u00f3n) de informaci\u00f3n y escalamiento de privilegios. Aunque muchos CVE se registran varias veces en diferentes categor\u00edas, en general, los mismos problemas persisten a\u00f1o tras a\u00f1o. En la siguiente parte del art\u00edculo, evaluaremos el uso de varios esquemas de defensa para prevenir la explotaci\u00f3n de estas vulnerabilidades.<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/45948bc64673540cfb3e1774c3247634.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2<\/i><\/p>\n<h3>Tareas<\/h3>\n<p>\nEn este art\u00edculo, tenemos la intenci\u00f3n de responder las siguientes preguntas:<\/p>\n<ul>\n<li>\u00bfCu\u00e1l es la seguridad de las diferentes distribuciones de Linux? \u00bfQu\u00e9 mecanismos de defensa existen en el n\u00facleo y en las aplicaciones del espacio de usuario?\n<\/li>\n<li>\u00bfC\u00f3mo ha cambiado la adopci\u00f3n de los mecanismos de defensa a lo largo del tiempo para las diferentes distribuciones?\n<\/li>\n<li>\u00bfCu\u00e1les son las dependencias promedio de los paquetes y bibliotecas de cada distribuci\u00f3n?\n<\/li>\n<li>\u00bfQu\u00e9 defensas se implementan para cada binario?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Selecci\u00f3n de distribuciones<\/h3>\n<p>\nResulta complicado encontrar estad\u00edsticas precisas sobre instalaciones de distribuciones, ya que en la mayor\u00eda de los casos el n\u00famero de descargas no indica cu\u00e1ntas instalaciones reales se han realizado. No obstante, las variantes de Unix constituyen la mayor\u00eda de los sistemas de servidor (69.2% en los servidores web, seg\u00fan <noindex><a rel=\"nofollow\" href=\"https:\/\/w3techs.com\/technologies\/overview\/operating_system\/all\">estad\u00edsticas<\/a><\/noindex> W3techs y otras fuentes), y su cuota sigue creciendo. As\u00ed, para nuestra investigaci\u00f3n, nos centramos en las distribuciones que est\u00e1n disponibles de forma predeterminada en la plataforma <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/\">Google Cloud<\/a><\/noindex>. En particular, elegimos los siguientes sistemas operativos:<\/p>\n<p>Distribuci\u00f3n\/version<br \/>\nN\u00facleo<br \/>\nConstrucci\u00f3n<\/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>Tabla 1<\/i> <\/p>\n<h1>An\u00e1lisis<\/h1>\n<p>\nExaminaremos la configuraci\u00f3n del kernel por defecto, as\u00ed como las caracter\u00edsticas de los paquetes disponibles a trav\u00e9s del gestor de paquetes de cada distribuci\u00f3n desde el principio. De este modo, solo consideramos los paquetes de los espejos por defecto de cada distribuci\u00f3n, ignorando los paquetes de repositorios inestables (por ejemplo, los espejos 'testing' en Debian) y los paquetes de terceros (como los paquetes de Nvidia desde los espejos est\u00e1ndar). Adem\u00e1s, no consideramos las compilaciones personalizadas del kernel ni las configuraciones con mayor seguridad.<\/p>\n<h3>An\u00e1lisis de la configuraci\u00f3n del kernel<\/h3>\n<p>\nAplicamos un script de an\u00e1lisis basado en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/a13xp0p0v\/kconfig-hardened-check\">el verificador de configuraci\u00f3n kconfig gratuito<\/a><\/noindex>. Consideramos los par\u00e1metros de seguridad por defecto en las distribuciones mencionadas y los comparamos con la lista de <noindex><a rel=\"nofollow\" href=\"http:\/\/kernsec.org\/wiki\/index.php\/Kernel_Self_Protection_Project\/Recommended_Settings\">Proyecto de Autoprotecci\u00f3n del Kernel<\/a><\/noindex> (KSPP). Para cada par\u00e1metro de configuraci\u00f3n, la tabla 2 describe la configuraci\u00f3n deseada: se marca con una palomita para las distribuciones que cumplen con las recomendaciones del KSSP (la explicaci\u00f3n de los t\u00e9rminos se encuentra en <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/kernel-configuration-glossary\/\">aqu\u00ed<\/a><\/noindex>; en futuros art\u00edculos hablaremos sobre c\u00f3mo se desarrollaron muchos de estos m\u00e9todos de seguridad y c\u00f3mo vulnerar el sistema en su ausencia).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/dx\/oh\/o0\/dxoho0z-lifjcybajszqb-aiirq.png\"><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b1a42826f4afc78a2b25d158100b2ba4.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/2177579e65e4fe6bb320903756a04b9b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn general, los nuevos kernels tienen configuraciones m\u00e1s estrictas por defecto. Por ejemplo, CentOS 6.10 y RHEL 6.10 en el kernel 2.6.32 carecen de la mayor\u00eda de las funciones cr\u00edticas implementadas en los nuevos kernels, tales como <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Supervisor_Mode_Access_Prevention\">SMAP<\/a><\/noindex>, permisos RWX estrictos, aleatorizaci\u00f3n de direcciones o protecci\u00f3n copy2usr. Cabe destacar que muchas de las opciones de configuraci\u00f3n de la tabla no est\u00e1n presentes en versiones anteriores del kernel y no son aplicables en la pr\u00e1ctica; en la tabla se indica esto como una falta de protecci\u00f3n adecuada. De igual manera, si un par\u00e1metro de configuraci\u00f3n est\u00e1 ausente en esta versi\u00f3n y es necesario deshabilitar este par\u00e1metro por razones de seguridad, se considera una configuraci\u00f3n razonable. <\/p>\n<p>Otro aspecto a tener en cuenta al interpretar los resultados es que algunas configuraciones del n\u00facleo que aumentan la superficie de ataque tambi\u00e9n pueden utilizarse para la seguridad. Ejemplos de esto incluyen uprobes y kprobes, m\u00f3dulos del n\u00facleo y BPF\/eBPF. Nuestra recomendaci\u00f3n es utilizar los mecanismos mencionados para garantizar una protecci\u00f3n real, ya que no son triviales de usar y su explotaci\u00f3n supone que los actores malintencionados ya est\u00e1n anclados en el sistema. Sin embargo, si estas opciones est\u00e1n habilitadas, el administrador del sistema debe supervisar activamente posibles abusos.<\/p>\n<p>Al analizar m\u00e1s a fondo las entradas de la tabla 2, vemos que los n\u00facleos modernos ofrecen varias opciones para proteger contra la explotaci\u00f3n de vulnerabilidades como las fugas de informaci\u00f3n y el desbordamiento de pila\/mont\u00f3n. Sin embargo, notamos que incluso las distribuciones m\u00e1s recientes y populares a\u00fan no han implementado protecciones m\u00e1s complejas (por ejemplo, con parches <noindex><a rel=\"nofollow\" href=\"https:\/\/grsecurity.net\/\">grsecurity<\/a><\/noindex>), o protecciones modernas contra ataques de reutilizaci\u00f3n de c\u00f3digo (por ejemplo, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.cs.columbia.edu\/~theofilos\/files\/slides\/krx.pdf\">una combinaci\u00f3n de aleatorizaci\u00f3n con esquemas de tipo R^X para el c\u00f3digo<\/a><\/noindex>). Lo que es a\u00fan peor, incluso estas herramientas de protecci\u00f3n m\u00e1s avanzadas no protegen contra todo el espectro de ataques. Por lo tanto, es de suma importancia que los administradores de sistemas complementen configuraciones razonables con soluciones que ofrezcan detecci\u00f3n y prevenci\u00f3n de exploits en tiempo de ejecuci\u00f3n.<\/p>\n<h3>An\u00e1lisis de aplicaciones<\/h3>\n<p>\nNo es sorprendente que diferentes distribuciones tengan diferentes caracter\u00edsticas de paquetes, opciones de compilaci\u00f3n, dependencias de bibliotecas, etc. Existen diferencias incluso para <noindex><a rel=\"nofollow\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/1b\/Linux_Distribution_Timeline.svg\">distribuciones<\/a><\/noindex> relacionadas y paquetes con pocas dependencias (por ejemplo, coreutils en Ubuntu o Debian). Para evaluar las diferencias, descargamos todos los paquetes disponibles, extra\u00edmos su contenido y analizamos los archivos binarios y sus dependencias. Para cada paquete, rastreamos otros paquetes de los que depende, y para cada binario, rastreamos sus dependencias. En esta secci\u00f3n, resumiremos nuestras conclusiones.<\/p>\n<h4>Distribuciones<\/h4>\n<p>\nEn total, hemos descargado 361,556 paquetes para todas las distribuciones, extrayendo solo paquetes de los espejos predeterminados. Ignoramos los paquetes sin archivos ejecutables ELF, como c\u00f3digos fuente, fuentes, etc. Despu\u00e9s de la filtraci\u00f3n, quedaron 129,569 paquetes que contienen un total de 584,457 archivos binarios. La distribuci\u00f3n de paquetes y archivos por distribuciones se muestra en la Fig. 3.<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/a24975fba7413ac8069c07412e5476cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3<\/i><\/p>\n<p>Se puede notar que cuanto m\u00e1s moderna es la distribuci\u00f3n, m\u00e1s paquetes y archivos binarios contiene, lo cual es l\u00f3gico. Al mismo tiempo, los paquetes de Ubuntu y Debian incluyen muchos m\u00e1s archivos binarios (tanto ejecutables como m\u00f3dulos din\u00e1micos y bibliotecas) que CentOS, SUSE y RHEL, lo que potencialmente afecta la superficie de ataque de Ubuntu y Debian (hay que notar que las cifras reflejan todos los binarios de todas las versiones del paquete, es decir, algunos archivos se analizan varias veces). Esto es especialmente importante si consideramos las dependencias entre paquetes. Por lo tanto, una vulnerabilidad en el binario de un paquete puede afectar a muchas partes del ecosistema, as\u00ed como una biblioteca vulnerable puede afectar a todos los archivos binarios que la importan. Tomemos como referencia la distribuci\u00f3n del n\u00famero de dependencias por paquetes en diferentes sistemas operativos:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ii\/e3\/e5\/iie3e5-ei26ezg5yvcyvtzqzl80.png\"><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" 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>Casi en todas las distribuciones, el 60% de los paquetes tienen al menos 10 dependencias. Adem\u00e1s, algunos paquetes tienen un n\u00famero significativamente mayor de dependencias (m\u00e1s de 100). Lo mismo se aplica a las dependencias inversas de los paquetes: como era de esperar, varios paquetes son utilizados por muchos otros paquetes en la distribuci\u00f3n, por lo que las vulnerabilidades en esos pocos elegidos tienen un alto riesgo. Como ejemplo, en la siguiente tabla se enumeran 20 paquetes con la m\u00e1xima cantidad de dependencias inversas en SLES, CentOS 7, Debian 9 y Ubuntu 18.04 (en cada celda se indica el paquete y el n\u00famero de dependencias inversas).<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/0aa544db8be1af7bffe21b6314537e18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabla 3<\/i><\/p>\n<p>Dato curioso. Aunque todos los sistemas operativos analizados est\u00e1n construidos para la arquitectura x86_64, y la mayor\u00eda de los paquetes tienen su arquitectura definida como x86_64 y x86, los paquetes a menudo contienen archivos binarios para otras arquitecturas, como se muestra en la Fig. 5.<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/b40f607e0c2f169bd1df21bd9994de8c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5<\/i><\/p>\n<p>En la siguiente secci\u00f3n profundizaremos en las caracter\u00edsticas de los binarios analizados.<\/p>\n<h4>Estad\u00edsticas de protecci\u00f3n de archivos binarios<\/h4>\n<p>\nComo m\u00ednimo absoluto, se debe estudiar un conjunto b\u00e1sico de opciones de protecci\u00f3n para los archivos binarios existentes. Varios distribuciones de Linux vienen con scripts que realizan tales comprobaciones. Por ejemplo, en Debian\/Ubuntu hay un script. Aqu\u00ed hay un ejemplo de su funcionamiento:<\/p>\n<pre><code class=\"bash\">$ hardening-check $(which docker)\n\/usr\/bin\/docker:\n Ejecutable independiente de posici\u00f3n: s\u00ed\n Pila protegida: s\u00ed\n Funciones de fuente reforzada: no, \u00a1solo se encontraron funciones no protegidas!\n Relocalizaciones de solo lectura: s\u00ed\n V\u00ednculo inmediato: s\u00ed<\/code><\/pre>\n<p>\nEl script verifica cinco <noindex><a rel=\"nofollow\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/hardening-check.1.html\">funciones de protecci\u00f3n<\/a><\/noindex>:<\/p>\n<ul>\n<li>Ejecutable independiente de posici\u00f3n (PIE): indica si se puede mover en memoria la secci\u00f3n de texto del programa para lograr aleatorizaci\u00f3n, si ASLR est\u00e1 habilitado en el n\u00facleo.\n<\/li>\n<li>Pila protegida: si se han habilitado las canarias de pila para proteger contra ataques de colisi\u00f3n de pila.\n<\/li>\n<li>Fortify Source: si se reemplazan las funciones inseguras (por ejemplo, strcpy) por sus equivalentes m\u00e1s seguros, y si las llamadas verificadas en tiempo de ejecuci\u00f3n son sus equivalentes no verificadas (por ejemplo, memcpy en lugar de __memcpy_chk).\n<\/li>\n<li>Relocalizaciones de solo lectura (RELRO): si las entradas de la tabla de relocaci\u00f3n est\u00e1n marcadas como \u2018solo lectura\u2019, si se activaron antes de comenzar la ejecuci\u00f3n.\n<\/li>\n<li>V\u00ednculo inmediato: si el enlazador de tiempo de ejecuci\u00f3n resuelve todos los movimientos antes de que comience la ejecuci\u00f3n del programa (esto es equivalente a RELRO completo).<\/li>\n<\/ul>\n<p>\n\u00bfSon suficientes los mecanismos mencionados anteriormente? Desafortunadamente, no. Se conocen formas de eludir todas las protecciones mencionadas, pero cuanto m\u00e1s dura sea la protecci\u00f3n, mayor ser\u00e1 la barra para el atacante. Por ejemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/usenixsecurity15\/sec15-paper-di-frederico.pdf\">los m\u00e9todos para eludir RELRO<\/a><\/noindex> son m\u00e1s dif\u00edciles de aplicar si PIE y el v\u00ednculo inmediato est\u00e1n en funcionamiento. De manera similar, ASLR completo requiere trabajo adicional para crear un exploit funcional. Sin embargo, los atacantes sofisticados ya est\u00e1n listos para afrontar tales protecciones: su ausencia, en esencia, acelera el hackeo. Por lo tanto, es extremadamente importante que estas medidas se consideren como imprescindibles. <i>un m\u00ednimo de<\/i>. <\/p>\n<p>Quer\u00edamos estudiar cu\u00e1ntos archivos binarios en las distribuciones consideradas est\u00e1n protegidos por estas y otras tres metodolog\u00edas:<\/p>\n<ul>\n<li>El bit no ejecutable (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Executable_space_protection\">NX<\/a><\/noindex>) previene la ejecuci\u00f3n en cualquier regi\u00f3n que no deber\u00eda ser ejecutable, como en el mont\u00f3n de pila, etc.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Rpath\">RPATH\/RUNPATH<\/a><\/noindex> indica la ruta de ejecuci\u00f3n utilizada por el cargador din\u00e1mico para buscar las bibliotecas correspondientes. El primero es <i>obligatorio<\/i> Para cualquier sistema moderno: su ausencia permite a los atacantes escribir de forma arbitraria carga \u00fatil en la memoria y ejecutarla tal cual. Para el segundo, las configuraciones incorrectas de las rutas de ejecuci\u00f3n ayudan a introducir c\u00f3digo poco fiable, lo que puede provocar una serie de problemas (por ejemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nth-dimension.org.uk\/pub\/BTL.pdf\">escalada de privilegios<\/a><\/noindex>, as\u00ed como <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.debian.org\/RpathIssue\">otros problemas<\/a><\/noindex>).<\/li>\n<li>La protecci\u00f3n contra colisiones de pila proporciona defensa contra ataques que hacen que la pila se superponga a otras \u00e1reas de memoria (por ejemplo, a la heap). Dado los recientes exploits que abusan <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/blog\/exploiting-systemd-journald-part-1\/\">de vulnerabilidades de colisi\u00f3n en la heap en systemd<\/a><\/noindex>, consideramos apropiado incluir este mecanismo en nuestro conjunto de datos.<\/li>\n<\/ul>\n<p>\nAs\u00ed que, sin m\u00e1s pre\u00e1mbulos, pasemos a los n\u00fameros. Las tablas 4 y 5 contienen un resumen del an\u00e1lisis de archivos ejecutables y bibliotecas de varias distribuciones, respectivamente.<\/p>\n<ul>\n<li>Como se puede observar, la protecci\u00f3n NX est\u00e1 implementada en todas partes, con algunas excepciones. En particular, se puede se\u00f1alar un uso algo m\u00e1s bajo en las distribuciones Ubuntu y Debian en comparaci\u00f3n con CentOS, RHEL y OpenSUSE.\n<\/li>\n<li>Las canarios de pila faltan en muchas partes, especialmente en distribuciones con kernels antiguos. Se ha observado cierto progreso en las \u00faltimas distribuciones de CentOS, RHEL, Debian y Ubuntu.\n<\/li>\n<li>Con la excepci\u00f3n de Debian y Ubuntu 18.04, la mayor\u00eda de las distribuciones tienen un soporte deficiente para PIE.\n<\/li>\n<li>La protecci\u00f3n contra colisiones de pila est\u00e1 d\u00e9bilmente implementada en OpenSUSE, CentOS 7 y RHEL 7 y pr\u00e1cticamente no existe en los dem\u00e1s.\n<\/li>\n<li>Todas las distribuciones con kernels modernos tienen alg\u00fan soporte para RELRO, liderando Ubuntu 18.04, seguida de Debian.<\/li>\n<\/ul>\n<p>\nComo ya se mencion\u00f3, las m\u00e9tricas en esta tabla son promedios de todas las versiones del archivo binario. Si se observan solo las \u00faltimas versiones de los archivos, los n\u00fameros ser\u00e1n diferentes (por ejemplo, ver <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">el progreso de Debian en la implementaci\u00f3n de PIE<\/a><\/noindex>). Adem\u00e1s, la mayor\u00eda de las distribuciones, al calcular estad\u00edsticas, verifican la protecci\u00f3n solo de algunas funciones en el c\u00f3digo binario, mientras que nuestro an\u00e1lisis indica el verdadero porcentaje de funciones aseguradas. Por lo tanto, si en el binario est\u00e1n protegidas 5 de 50 funciones, le asignaremos una calificaci\u00f3n de 0.1, que corresponde al 10% de funciones aseguradas.<\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/82e881c5ba2a3911f3a0ffae1a3475f4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabla 4. Caracter\u00edsticas de protecci\u00f3n para archivos ejecutables, mostrados en la figura 3 (implementaci\u00f3n de funciones relevantes como porcentaje del total de archivos ejecutables)<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" src=\"\/wp-content\/uploads\/2019\/03\/57c8e67be7a57341105262c6e956594c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Tabla 5. Caracter\u00edsticas de seguridad para las bibliotecas mostradas en la fig. 3 (implementaci\u00f3n de las funciones correspondientes en porcentaje del total de bibliotecas)<\/i><\/p>\n<p>\u00bfHay progreso? Definitivamente s\u00ed: esto se muestra en las estad\u00edsticas de distribuciones individuales (por ejemplo, <noindex><a rel=\"nofollow\" href=\"http:\/\/outflux.net\/debian\/hardening\/\">Debian<\/a><\/noindex>), as\u00ed como en las tablas anteriores. Como ejemplo, en la fig. 6 se muestra la implementaci\u00f3n de mecanismos de seguridad en tres distribuciones sucesivas de Ubuntu LTS 5 (hemos omitido la estad\u00edstica de protecci\u00f3n contra desbordamiento de pila). Observamos que de una versi\u00f3n a otra, cada vez m\u00e1s archivos admiten canarios de pila, y tambi\u00e9n que cada vez m\u00e1s archivos binarios se entregan con protecci\u00f3n completa RELRO.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/d1\/ni\/or\/d1niordj1hmiklmg2-w5rsk6dla.png\"><img decoding=\"async\" alt=\"Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux\" 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>Desafortunadamente, varios archivos ejecutables en diferentes distribuciones a\u00fan no cuentan con ninguna de las protecciones mencionadas anteriormente. Por ejemplo, al mirar Ubuntu 18.04, se puede notar el binario ngetty (sustituto de getty), as\u00ed como las shell mksh y lksh, el int\u00e9rprete picolisp, los paquetes nvidia-cuda-toolkit (paquete popular para aplicaciones con aceleraci\u00f3n por GPU, como los marcos de aprendizaje autom\u00e1tico) y klibc-utils. De manera similar, el binario mandos-client (herramienta administrativa que permite reiniciar autom\u00e1ticamente m\u00e1quinas con sistemas de archivos cifrados), as\u00ed como rsh-redone-client (reescritura de rsh y rlogin) se entregan sin protecci\u00f3n NX, a pesar de que tienen permisos SUID :(. Adem\u00e1s, en varios binarios SUID no hay protecci\u00f3n b\u00e1sica, como los canarios de pila (por ejemplo, el archivo binario Xorg.wrap del paquete Xorg).<\/p>\n<h1>Resumen y observaciones finales<\/h1>\n<p>\nEn este art\u00edculo, hemos destacado varias caracter\u00edsticas de seguridad de las distribuciones modernas de Linux. El an\u00e1lisis mostr\u00f3 que la \u00faltima distribuci\u00f3n LTS de Ubuntu (18.04) implementa, en promedio, la protecci\u00f3n m\u00e1s fuerte a nivel de sistema operativo y aplicaciones entre distribuciones con n\u00facleos relativamente recientes, como Ubuntu 14.04, 12.04 y Debian 9. Sin embargo, las distribuciones consideradas, CentOS, RHEL y OpenSUSE, ofrecen por defecto un conjunto de paquetes m\u00e1s completo, y en las \u00faltimas versiones (CentOS y RHEL) tienen un porcentaje m\u00e1s alto de implementaci\u00f3n de protecci\u00f3n contra colisiones en la pila, en comparaci\u00f3n con sus competidores basados en Debian (Debian y Ubuntu). Al comparar las versiones de CentOS y RedHat, notamos grandes mejoras en la implementaci\u00f3n de canarias en la pila y RELRO de las versiones 6 a 7, aunque en promedio, CentOS presenta m\u00e1s funciones que RHEL. En general, todas las distribuciones deber\u00edan prestar especial atenci\u00f3n a la protecci\u00f3n PIE, que, a excepci\u00f3n de Debian 9 y Ubuntu 18.04, se implementa en menos del 10% de los archivos binarios de nuestro conjunto de datos. <\/p>\n<p>Finalmente, es importante se\u00f1alar: aunque realizamos la investigaci\u00f3n manualmente, existen muchas herramientas de seguridad (por ejemplo, <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 realizan an\u00e1lisis y ayudan a evitar configuraciones inseguras. Desafortunadamente, incluso una fuerte protecci\u00f3n en configuraciones razonables no garantiza la ausencia de exploits. Por eso estamos firmemente convencidos de que es vital asegurar <noindex><a rel=\"nofollow\" href=\"https:\/\/capsule8.com\/\">una vigilancia fiable y la prevenci\u00f3n de ataques en tiempo real<\/a><\/noindex>, centr\u00e1ndose en los patrones de explotaci\u00f3n y previni\u00e9ndolos.<\/p>\n<p>Fuente: <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.2 - 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\/es\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Millones de binarios despu\u00e9s. C\u00f3mo se fortaleci\u00f3 Linux | ProHoster","description":"TL;DR.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/milliony-binarnikov-spustya-kak-ukreplyalsya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/29880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=29880"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/29880\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=29880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=29880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=29880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}