[{"data":1,"prerenderedAt":760},["ShallowReactive",2],{"switcher-blog-pareja":3,"art-cve-2026-46333-ssh-keysign-pwn-kernel-linux-es":6},{"es":4,"en":5},"\u002Fes\u002Fblog\u002Fcve-2026-46333-ssh-keysign-pwn-kernel-linux\u002F","\u002Fen\u002Fblog\u002Fcve-2026-46333-ssh-keysign-pwn-linux-kernel\u002F",{"id":7,"title":8,"author":9,"body":10,"date":745,"description":746,"extension":747,"image":748,"meta":749,"navigation":380,"pareja":750,"path":751,"seo":752,"stem":753,"tags":754,"__hash__":759},"blogEs\u002Fes\u002Fblog\u002Fcve-2026-46333-ssh-keysign-pwn-kernel-linux.md","CVE-2026-46333 «ssh-keysign-pwn»: la grieta del kernel Linux que llevaba seis años escondida","Paco Cubel",{"type":11,"value":12,"toc":729},"minimark",[13,18,32,39,43,73,76,80,110,117,121,124,156,163,167,170,280,294,298,301,306,317,408,419,423,426,432,453,456,482,488,517,527,533,537,540,574,577,581,588,632,635,639,642,662,669,673,676,700,703,707,725],[14,15,17],"h2",{"id":16},"la-llamada-del-viernes","La llamada del viernes",[19,20,21,22,26,27,31],"p",{},"El viernes pasado, varios clientes nos escribieron con la misma frase: «He visto algo de una CVE crítica del kernel, ¿estamos afectados?». La respuesta corta fue ",[23,24,25],"strong",{},"sí, casi todos los servidores Linux del mundo lo están",". La buena noticia: el parche está disponible y se aplica en minutos. La mala: hasta que se aplica, un usuario local sin privilegios puede leerse las claves SSH del root y el ",[28,29,30],"code",{},"\u002Fetc\u002Fshadow"," sin necesidad de exploit complicado.",[19,33,34,35,38],{},"Esta es la historia de ",[23,36,37],{},"CVE-2026-46333",", bautizada como «ssh-keysign-pwn» por los investigadores que la publicaron. Y de por qué un fallo que entró en el kernel en 2017 ha estado seis años a tiro de cualquiera sin que nadie levantara la mano.",[14,40,42],{"id":41},"en-una-frase","En una frase",[19,44,45,46,49,50,53,54,57,58,61,62,65,66,69,70,72],{},"Hay una condición de carrera en la ruta de salida (",[28,47,48],{},"do_exit",") del kernel Linux. Durante una ventana muy estrecha mientras un proceso se está cerrando, las comprobaciones de ",[28,51,52],{},"ptrace"," se relajan más de la cuenta. Un usuario local puede aprovechar ese instante con ",[28,55,56],{},"pidfd_getfd(2)"," para ",[23,59,60],{},"copiar descriptores de fichero abiertos de un proceso privilegiado"," — por ejemplo ",[28,63,64],{},"ssh-keysign"," (que abre claves SSH privadas) o ",[28,67,68],{},"chage"," (que abre ",[28,71,30],{},").",[19,74,75],{},"Sin ser root. Sin permisos especiales. Con un binario que ya estaba ahí.",[14,77,79],{"id":78},"a-quién-afecta","A quién afecta",[81,82,83,90,100],"ul",{},[84,85,86,89],"li",{},[23,87,88],{},"Distribuciones afectadas",": Ubuntu, Debian, Arch Linux, CentOS, AlmaLinux, RHEL, CloudLinux, Raspberry Pi OS. Es decir, prácticamente toda la base instalada de servidores.",[84,91,92,95,96,99],{},[23,93,94],{},"Versiones de kernel",": la condición de carrera se introdujo en Linux v4.10-rc1 (enero de 2017, commit ",[28,97,98],{},"bfedb589","). Todos los kernels posteriores tienen la grieta. Cualquier servidor con kernel 4.10 o más nuevo está potencialmente expuesto.",[84,101,102,105,106,109],{},[23,103,104],{},"Quién la puede explotar",": cualquier usuario local. No vale para atacar desde fuera por sí sola, pero ",[23,107,108],{},"cualquier escenario con usuarios SSH no privilegiados, hosting compartido, contenedores con privilegios mal acotados o procesos automáticos con cuenta propia"," entra en el perímetro de riesgo.",[19,111,112,113,116],{},"El detalle que la hace especialmente desagradable: hay ",[23,114,115],{},"prueba de concepto pública en GitHub"," desde el mismo día del disclosure. No es teórica.",[14,118,120],{"id":119},"por-qué-seis-años-sin-detectarse","Por qué seis años sin detectarse",[19,122,123],{},"La pregunta razonable: si la introdujeron en 2017, ¿cómo es que ha tardado tanto en aparecer? Tres razones combinadas:",[125,126,127,141,147],"ol",{},[84,128,129,130,133,134,136,137,140],{},"La ventana de carrera es ",[23,131,132],{},"muy estrecha",": hay que coincidir con el ",[28,135,48],{}," de un proceso privilegiado. El PoC publicado necesita entre ",[23,138,139],{},"100 y 2000 intentos"," para tener éxito.",[84,142,143,144,146],{},"La vía de explotación moderna depende de ",[28,145,56],{},", que se añadió al kernel en 2020. Antes de esa fecha, la condición de carrera estaba ahí pero no había una primitiva pública cómoda para aprovecharla.",[84,148,149,150,152,153,155],{},"Los binarios con SUID que dan acceso a secretos críticos (",[28,151,64],{},", ",[28,154,68],{},") son pocos y específicos. Hay que conocer el conjunto exacto para saber qué pedir.",[19,157,158,159,162],{},"Es decir: ",[23,160,161],{},"el fallo lleva ahí desde 2017, pero solo se ha vuelto realmente explotable desde 2020 y nadie había juntado las piezas hasta este mes",". Una buena lección sobre por qué auditar el kernel es duro hasta para los buenos.",[14,164,166],{"id":165},"versiones-parcheadas-por-distribución","Versiones parcheadas por distribución",[19,168,169],{},"La tabla siguiente la hemos comprobado contra los avisos oficiales de cada distro. Los números pueden subir conforme salgan revisiones menores, pero estos son los hitos mínimos a partir de los cuales el fallo está cerrado:",[171,172,173,186],"table",{},[174,175,176],"thead",{},[177,178,179,183],"tr",{},[180,181,182],"th",{},"Distribución",[180,184,185],{},"Kernel parcheado",[187,188,189,201,211,221,231,241,251,261,270],"tbody",{},[177,190,191,195],{},[192,193,194],"td",{},"Ubuntu 24.04 LTS",[192,196,197,200],{},[28,198,199],{},"6.8.0-58.61"," o superior",[177,202,203,206],{},[192,204,205],{},"Ubuntu 22.04 LTS",[192,207,208,200],{},[28,209,210],{},"5.15.0-138.149",[177,212,213,216],{},[192,214,215],{},"Debian 13 (trixie)",[192,217,218,200],{},[28,219,220],{},"6.12.27-2",[177,222,223,226],{},[192,224,225],{},"Debian 12 (bookworm)",[192,227,228,200],{},[28,229,230],{},"6.1.140-1",[177,232,233,236],{},[192,234,235],{},"RHEL 9 \u002F AlmaLinux 9",[192,237,238],{},[28,239,240],{},"kernel-5.14.0-611.54.6.el9_7",[177,242,243,246],{},[192,244,245],{},"RHEL 8 \u002F AlmaLinux 8",[192,247,248],{},[28,249,250],{},"kernel-4.18.0-553.124.4.el8",[177,252,253,256],{},[192,254,255],{},"CloudLinux 10",[192,257,258],{},[28,259,260],{},"kernel-6.12.0-124.56.5.el10_1",[177,262,263,266],{},[192,264,265],{},"CloudLinux 9",[192,267,268],{},[28,269,240],{},[177,271,272,275],{},[192,273,274],{},"CloudLinux 8",[192,276,277],{},[28,278,279],{},"kernel-4.18.0-553.124.4.lve.el8",[281,282,283],"blockquote",{},[19,284,285,286,289,290,293],{},"Si tu servidor no aparece en esta tabla, comprueba la versión del kernel con ",[28,287,288],{},"uname -r"," y consulta el aviso de seguridad de tu distribución. ",[23,291,292],{},"No te fíes del número de versión \"oficial\" sin verificar la fecha del paquete",": algunas distros mantienen la versión y solo backportean el fix.",[14,295,297],{"id":296},"qué-tienes-que-hacer-hoy","Qué tienes que hacer hoy",[19,299,300],{},"Sin rodeos. Lo que aplicamos nosotros estos días en las máquinas de clientes:",[302,303,305],"h3",{"id":304},"_1-actualizar-el-kernel-y-reiniciar","1. Actualizar el kernel y reiniciar",[19,307,308,309,312,313,316],{},"Es la única solución definitiva. Y sí, requiere reinicio (o ",[28,310,311],{},"kpatch","\u002F",[28,314,315],{},"kexec"," si tienes contratado live-patching).",[318,319,324],"pre",{"className":320,"code":321,"language":322,"meta":323,"style":323},"language-bash shiki shiki-themes github-light github-dark","# Debian \u002F Ubuntu\nsudo apt update && sudo apt install --only-upgrade linux-image-generic\nsudo reboot\n\n# RHEL \u002F AlmaLinux \u002F Rocky \u002F CloudLinux\nsudo dnf update kernel\nsudo reboot\n","bash","",[28,325,326,335,367,375,382,388,401],{"__ignoreMap":323},[327,328,331],"span",{"class":329,"line":330},"line",1,[327,332,334],{"class":333},"sJ8bj","# Debian \u002F Ubuntu\n",[327,336,338,342,346,349,353,355,357,360,364],{"class":329,"line":337},2,[327,339,341],{"class":340},"sScJk","sudo",[327,343,345],{"class":344},"sZZnC"," apt",[327,347,348],{"class":344}," update",[327,350,352],{"class":351},"sVt8B"," && ",[327,354,341],{"class":340},[327,356,345],{"class":344},[327,358,359],{"class":344}," install",[327,361,363],{"class":362},"sj4cs"," --only-upgrade",[327,365,366],{"class":344}," linux-image-generic\n",[327,368,370,372],{"class":329,"line":369},3,[327,371,341],{"class":340},[327,373,374],{"class":344}," reboot\n",[327,376,378],{"class":329,"line":377},4,[327,379,381],{"emptyLinePlaceholder":380},true,"\n",[327,383,385],{"class":329,"line":384},5,[327,386,387],{"class":333},"# RHEL \u002F AlmaLinux \u002F Rocky \u002F CloudLinux\n",[327,389,391,393,396,398],{"class":329,"line":390},6,[327,392,341],{"class":340},[327,394,395],{"class":344}," dnf",[327,397,348],{"class":344},[327,399,400],{"class":344}," kernel\n",[327,402,404,406],{"class":329,"line":403},7,[327,405,341],{"class":340},[327,407,374],{"class":344},[19,409,410,411,414,415,418],{},"Antes de reiniciar, asegúrate de que el grub apunta al kernel nuevo (",[28,412,413],{},"grubby --default-kernel"," en familia RHEL, ",[28,416,417],{},"dpkg --list | grep linux-image"," en Debian\u002FUbuntu). Reiniciar a la antigua versión por error es muy fácil cuando se trabaja a las tres de la madrugada.",[302,420,422],{"id":421},"_2-mitigación-temporal-mientras-no-puedes-reiniciar","2. Mitigación temporal mientras no puedes reiniciar",[19,424,425],{},"Si el servidor no admite parada inmediata (caja en producción con cliente final, ventana de mantenimiento cerrada), hay dos paliativos:",[19,427,428,431],{},[23,429,430],{},"Bloquear el ptrace de usuario"," vía sysctl. No requiere reinicio:",[318,433,435],{"className":320,"code":434,"language":322,"meta":323,"style":323},"sudo sysctl -w kernel.user_ptrace=0\n",[28,436,437],{"__ignoreMap":323},[327,438,439,441,444,447,450],{"class":329,"line":330},[327,440,341],{"class":340},[327,442,443],{"class":344}," sysctl",[327,445,446],{"class":362}," -w",[327,448,449],{"class":344}," kernel.user_ptrace=",[327,451,452],{"class":362},"0\n",[19,454,455],{},"Para hacerlo persistente entre reinicios:",[318,457,459],{"className":320,"code":458,"language":322,"meta":323,"style":323},"echo \"kernel.user_ptrace=0\" | sudo tee \u002Fetc\u002Fsysctl.d\u002F99-cve-2026-46333.conf\n",[28,460,461],{"__ignoreMap":323},[327,462,463,466,469,473,476,479],{"class":329,"line":330},[327,464,465],{"class":362},"echo",[327,467,468],{"class":344}," \"kernel.user_ptrace=0\"",[327,470,472],{"class":471},"szBVR"," |",[327,474,475],{"class":340}," sudo",[327,477,478],{"class":344}," tee",[327,480,481],{"class":344}," \u002Fetc\u002Fsysctl.d\u002F99-cve-2026-46333.conf\n",[19,483,484,487],{},[23,485,486],{},"Quitar el SUID a los binarios sensibles",", si no los necesitas:",[318,489,491],{"className":320,"code":490,"language":322,"meta":323,"style":323},"sudo chmod u-s \u002Fusr\u002Flibexec\u002Fopenssh\u002Fssh-keysign\nsudo chmod u-s \u002Fusr\u002Fbin\u002Fchage\n",[28,492,493,506],{"__ignoreMap":323},[327,494,495,497,500,503],{"class":329,"line":330},[327,496,341],{"class":340},[327,498,499],{"class":344}," chmod",[327,501,502],{"class":344}," u-s",[327,504,505],{"class":344}," \u002Fusr\u002Flibexec\u002Fopenssh\u002Fssh-keysign\n",[327,507,508,510,512,514],{"class":329,"line":337},[327,509,341],{"class":340},[327,511,499],{"class":344},[327,513,502],{"class":344},[327,515,516],{"class":344}," \u002Fusr\u002Fbin\u002Fchage\n",[19,518,519,520,522,523,526],{},"Ojo: quitar el SUID a ",[28,521,64],{}," rompe la autenticación host-based de OpenSSH si la usas. Comprueba primero con ",[28,524,525],{},"lsattr"," y con tu configuración de SSH si depende de ella.",[19,528,529,530],{},"Estas mitigaciones cierran el vector que el PoC público explota. ",[23,531,532],{},"No te libran de actualizar.",[302,534,536],{"id":535},"_3-auditar-accesos-previos","3. Auditar accesos previos",[19,538,539],{},"Hay que asumir que cualquier servidor con usuarios locales no confiables puede haber sido tocado entre el día del disclosure y el día del parche. Revisa:",[81,541,542,552,561],{},[84,543,544,547,548,551],{},[28,545,546],{},"\u002Fvar\u002Flog\u002Fauth.log"," (Debian\u002FUbuntu) o ",[28,549,550],{},"\u002Fvar\u002Flog\u002Fsecure"," (RHEL): logins SSH inusuales.",[84,553,554,557,558,560],{},[28,555,556],{},"journalctl _COMM=ssh-keysign --since=\"2026-05-14\"",": ejecuciones de ",[28,559,64],{}," por usuarios que no deberían lanzarlo.",[84,562,563,566,567,569,570,573],{},[28,564,565],{},"auditd"," si lo tienes activado: llamadas a ",[28,568,52],{}," o ",[28,571,572],{},"pidfd_getfd"," desde procesos no privilegiados.",[19,575,576],{},"Si encuentras algo raro, asume compromiso y rota credenciales.",[302,578,580],{"id":579},"_4-rotar-claves-ssh-si-tienes-dudas","4. Rotar claves SSH si tienes dudas",[19,582,583,584,587],{},"En servidores compartidos, multi-tenant o con muchos usuarios locales, ",[23,585,586],{},"rota las claves SSH del host después de aplicar el parche",":",[318,589,591],{"className":320,"code":590,"language":322,"meta":323,"style":323},"sudo rm \u002Fetc\u002Fssh\u002Fssh_host_*\nsudo dpkg-reconfigure openssh-server   # Debian\u002FUbuntu\nsudo systemctl restart sshd\n",[28,592,593,606,619],{"__ignoreMap":323},[327,594,595,597,600,603],{"class":329,"line":330},[327,596,341],{"class":340},[327,598,599],{"class":344}," rm",[327,601,602],{"class":344}," \u002Fetc\u002Fssh\u002Fssh_host_",[327,604,605],{"class":362},"*\n",[327,607,608,610,613,616],{"class":329,"line":337},[327,609,341],{"class":340},[327,611,612],{"class":344}," dpkg-reconfigure",[327,614,615],{"class":344}," openssh-server",[327,617,618],{"class":333},"   # Debian\u002FUbuntu\n",[327,620,621,623,626,629],{"class":329,"line":369},[327,622,341],{"class":340},[327,624,625],{"class":344}," systemctl",[327,627,628],{"class":344}," restart",[327,630,631],{"class":344}," sshd\n",[19,633,634],{},"Esto invalida cualquier copia de las claves privadas que pudiera haberse exfiltrado. Los clientes verán un aviso de \"host key changed\" la primera vez que reconecten — avísales antes.",[14,636,638],{"id":637},"lo-que-hemos-hecho-nosotros-estos-días","Lo que hemos hecho nosotros estos días",[19,640,641],{},"En Atenea Systems empezamos a desplegar el parche el viernes 16 a primera hora, en cuanto los repositorios de Debian y Ubuntu publicaron los kernels firmados. El orden fue el habitual:",[125,643,644,650,656],{},[84,645,646,649],{},[23,647,648],{},"Servidores con usuarios externos primero",": hosting compartido, jails de clientes y máquinas con SFTP-only.",[84,651,652,655],{},[23,653,654],{},"Servidores de bases de datos",": porque un compromiso ahí escala mal.",[84,657,658,661],{},[23,659,660],{},"VPS dedicados",": porque suelen tener un único usuario administrador y la superficie de ataque local es menor.",[19,663,664,665,668],{},"A día de hoy todos los servidores que gestionamos están en kernel parcheado o, donde la ventana de reinicio aún no ha llegado, con ",[28,666,667],{},"kernel.user_ptrace=0"," activo.",[14,670,672],{"id":671},"la-lección-que-se-va-llevando-uno-año-tras-año","La lección que se va llevando uno año tras año",[19,674,675],{},"Cada doce meses sale una de estas y todos repetimos los mismos cinco gestos:",[81,677,678,681,684,694,697],{},[84,679,680],{},"Mirar la versión del kernel.",[84,682,683],{},"Mirar la fecha del último reinicio.",[84,685,686,687,312,690,693],{},"Aplicar ",[28,688,689],{},"apt",[28,691,692],{},"dnf update",".",[84,695,696],{},"Reiniciar.",[84,698,699],{},"Verificar.",[19,701,702],{},"El plan de actualizaciones no es algo que se hace «cuando hay tiempo». Es lo que separa los servidores que sobreviven a un mal viernes de los que no. Si tu plan actual consiste en «cuando me acuerde», hablamos.",[14,704,706],{"id":705},"referencias","Referencias",[81,708,709,718],{},[84,710,711],{},[712,713,717],"a",{"href":714,"rel":715},"https:\u002F\u002Fcybersecuritynews.com\u002Flinux-kernel-vulnerability-ssh-keysign-pwn\u002F",[716],"nofollow","Critical Linux Kernel Flaw 'ssh-keysign-pwn' Exposes SSH Keys and Shadow Passwords — Cyber Security News",[84,719,720],{},[712,721,724],{"href":722,"rel":723},"https:\u002F\u002Fblog.cloudlinux.com\u002Fptrace-exit-race-cve-2026-46333-mitigation-and-kernel-update",[716],"CVE-2026-46333 Mitigation and Kernel Update on CloudLinux — CloudLinux Blog",[726,727,728],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":323,"searchDepth":337,"depth":337,"links":730},[731,732,733,734,735,736,742,743,744],{"id":16,"depth":337,"text":17},{"id":41,"depth":337,"text":42},{"id":78,"depth":337,"text":79},{"id":119,"depth":337,"text":120},{"id":165,"depth":337,"text":166},{"id":296,"depth":337,"text":297,"children":737},[738,739,740,741],{"id":304,"depth":369,"text":305},{"id":421,"depth":369,"text":422},{"id":535,"depth":369,"text":536},{"id":579,"depth":369,"text":580},{"id":637,"depth":337,"text":638},{"id":671,"depth":337,"text":672},{"id":705,"depth":337,"text":706},"2026-05-19","Una vulnerabilidad del kernel Linux publicada el 15 de mayo permite a un usuario local robar claves SSH privadas y el \u002Fetc\u002Fshadow sin necesidad de escalar a root. Te contamos qué es, a quién afecta y qué tienes que hacer hoy mismo en tus servidores.","md","\u002Fog\u002Fog-default.png",{},"cve-2026-46333-ssh-keysign-pwn-linux-kernel","\u002Fes\u002Fblog\u002Fcve-2026-46333-ssh-keysign-pwn-kernel-linux",{"title":8,"description":746},"es\u002Fblog\u002Fcve-2026-46333-ssh-keysign-pwn-kernel-linux",[755,756,757,758],"Seguridad","Linux","Servidores","CVE","qandKTQ--lry6FZhsYc7jC_UBloXegCpnx7LXUVPcbM",1781154907680]