{"id":81,"date":"2008-02-11T01:31:23","date_gmt":"2008-02-11T00:31:23","guid":{"rendered":"https:\/\/blogs.ua.es\/jgaliana\/2008\/02\/11\/bug-en-el-nucleo-linux-afecta-a-versiones-anteriores-a-26241\/"},"modified":"2008-03-14T09:44:35","modified_gmt":"2008-03-14T08:44:35","slug":"bug-en-el-nucleo-linux-afecta-a-versiones-anteriores-a-26241","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/jgaliana\/2008\/02\/11\/bug-en-el-nucleo-linux-afecta-a-versiones-anteriores-a-26241\/","title":{"rendered":"Grave fallo en el n\u00facleo Linux afecta a versiones entre 2.6.17 y 2.6.24.1: Soluci\u00f3n"},"content":{"rendered":"<p>Ha salido a la luz un bug en el kernel Linux que afecta a versiones entre la 2.6.17 y 2.6.24.1. En concreto afecta a la syscall vmsplice y permite a usuarios no autorizados leer y escribir en posiciones de memoria arbitrarias haciendo posible una escala de privilegios local a root.<\/p>\n<p><strong>Las distribuciones m\u00e1s importantes en sus versiones del kernel por defecto est\u00e1n afectadas: Ubuntu Gutsy 7.10, Fedora 8, OpenSuse 7.3, Debian, etc<\/strong><\/p>\n<p>En securityfocus han archivado el advisory de seguridad, podeis leerlo en <a href=\"http:\/\/www.securityfocus.com\/bid\/27704\/info\">Linux Kernel Multiple Prior to 2.6.24.1 Multiple Memory Access Vulnerabilities.<\/a> Incluye informaci\u00f3n para solucionar el problema, adem\u00e1s de c\u00f3digo para saber si tu kernel est\u00e1 afectado.<\/p>\n<p><strong>SOLUCI\u00d3N<\/strong><\/p>\n<p>Existe un parche para desactivar vmsplice en vivo (en el aire) y de esta manera el parche no funcionar\u00e1, ya que busca la direcci\u00f3n de sys_vmsplice (via \/proc\/kallsyms) y reemplaza el primer byte con una instrucci\u00f3n RET (mediante mmap a \/dev\/kmem), lo podeis encontrar aqu\u00ed:<\/p>\n<p><a href=\"http:\/\/www.ping.uio.no\/~mortehu\/disable-vmsplice-if-exploitable.c\">http:\/\/www.ping.uio.no\/~mortehu\/disable-vmsplice-if-exploitable.c<\/a><\/p>\n<p><strike>Pero la soluci\u00f3n realmente pasa por actualizar a 2.6.24.1.<\/strike><\/p>\n<p><strong>ACTUALIZACI\u00d3N 01:00 AM<\/strong>: Al parecer el kernel 2.6.24.1 s\u00f3lo corrige parcialmente el fallo.<\/p>\n<p>Seg\u00fan indican en la <a href=\"http:\/\/lkml.org\/lkml\/2008\/2\/10\/131\">lkml<\/a> existe una variante que a\u00fan afecta a esta versi\u00f3n y explican c\u00f3mo <strong>solucionar completamente esta fallo<\/strong>.<\/p>\n<p>He adaptado estas instrucciones para crear un <strong>parche que funcione en la versi\u00f3n 2.6.24.1 y corrige totalmente el fallo del vmsplice, est\u00e1 probado y funciona perfectamente<\/strong>:<\/p>\n<blockquote><p> &#8212; a\/fs\/splice.c    2008-02-08 20:55:30.000000000 +0100<br \/>\n+++ b\/fs\/splice.c    2008-02-11 22:00:53.000000000 +0100<br \/>\n@@ -1242,6 +1242,12 @@<br \/>\nif (unlikely(!base))<br \/>\nbreak;<\/p>\n<p>+        \/* CVE-2008-0009, CVE-2008-0010 fix *\/<br \/>\n+        if(!access_ok(VERIFY_READ, base, len)) {<br \/>\n+            error = -EFAULT;<br \/>\n+            break;<br \/>\n+        }<br \/>\n+<br \/>\n\/*<br \/>\n* Get this base offset and number of pages, then map<br \/>\n* in the user pages.<\/p><\/blockquote>\n<p>Lo podeis descargar desde <a href=\"http:\/\/www.alu.ua.es\/j\/jgl14\/patch-vmsplice-2.6.24.1.diff.gz\">aqui<\/a>.<\/p>\n<p>Para aplicarlo simplemente:<\/p>\n<blockquote><p> penelope:\/usr\/src\/linux# patch -p1 &lt;..\/patch-vmsplice-2.6.24.1.diff<br \/>\npatching file fs\/splice.c<\/p><\/blockquote>\n<p>S\u00f3lo queda recompilar el kernel e instalarlo.<\/p>\n<p><strong>ACTUALIZACI\u00d3N 10:00 AM: <\/strong>kernel.org ha lanzado la versi\u00f3n oficial 2.6.24.2 que corrige totalmente el fallo de igual manera.<\/p>\n<p>De todos modos el bug ya estaba corregido en versiones git, y no afectaba a kernels securizados con grsecurity, pax o selinux.<\/p>\n<p>Podeis encontrarlo en <a href=\"http:\/\/kernel.org\">kernel.org<\/a><\/p>\n<p>Este es un ejemplo de la rapidez con la que responde el software libre ante problemas de seguridad, algo impensable en el modelo de software privativo en el c\u00faal normalmente se demora demasiado el lanzamiento de parches o soluciones ante incidencias de seguridad cr\u00edticas, algo inaceptable.<\/p>\n<p>Podeis encontrar informaci\u00f3n sobre la incidencia y parches no oficiales para los kernels por defecto de Debian:<br \/>\n<a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=464953\"><br \/>\nhttp:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=464953<\/a><\/p>\n<p><strike>En la rama oficial no estoy seguro si ya se ha incluido el parche ya que yo uso un n\u00facleo personalizado.<\/strike><\/p>\n<p><strong>Ya se ha producido la actualizaci\u00f3n de los n\u00facleos de debian<\/strong>, teneis m\u00e1s informaci\u00f3n en el <a href=\"http:\/\/www.debian.org\/security\/2008\/dsa-1494\">informe detallado junto con los paquetes deb<\/a>.<\/p>\n<p><strong>ACTUALIZACI\u00d3N: <\/strong>aep nos cuenta en los comentarios que existe un <a href=\"http:\/\/www.linux.it\/~md\/software\/novmsplice.tgz\">m\u00f3dulo para el kernel<\/a> que soluciona el fallo en el aire, para los servidores que no hayan podido reiniciarse a\u00fan.<\/p>\n<p>En la nueva versi\u00f3n 2.6.24.1 y 2.6.24.2 sigue funcionando el parche de bootsplash 3.1.6 <a href=\"https:\/\/blogs.ua.es\/jgaliana\/2008\/01\/28\/parche-para-el-nuevo-kernel-de-linux-version-2624-de-bootsplash-316\/\">presentado anteriormente en este blog<\/a>.<\/p>\n<p>Feliz upgrade!<\/p>\n<p><strong>Este post fue barrapunteado<\/strong>: <a href=\"http:\/\/barrapunto.com\/article.pl?sid=08\/02\/11\/106213\">post original<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ha salido a la luz un bug en el kernel Linux que afecta a versiones entre la 2.6.17 y 2.6.24.1. En concreto afecta a la syscall vmsplice y permite a usuarios no autorizados leer y escribir en posiciones de memoria arbitrarias haciendo posible una escala de privilegios local a root. Las distribuciones m\u00e1s importantes en [&hellip;]<\/p>\n","protected":false},"author":139,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135],"tags":[836,8029,8034],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-linux","tag-kernel","tag-linux","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}