Una investigadora en seguridad ha descubierto que los errores en el kernel de Linux suelen permanecer sin detectar más de dos años de media, y algunos perduran más de dos décadas. Al analizar 20 años de desarrollo del kernel, Jenny Guanni Qu ha revelado cómo estos fallos afectan silenciosamente a sistemas en la nube, empresas y miles de millones de dispositivos. Su trabajo pone de manifiesto los desafíos de mantener software open source seguro.
La desarrolladora de seguridad de Linux Jenny Guanni Qu ha revelado que las vulnerabilidades en el kernel de Linux pueden permanecer sin detectar durante períodos prolongados, suponiendo riesgos significativos para sistemas ampliamente utilizados. En un estudio exhaustivo, examinó dos décadas de desarrollo del kernel de Linux, revisando 125.000 commits de corrección de errores. El análisis mostró que el error medio permanece oculto algo más de dos años, aunque muchos perduran mucho más tiempo, algunos superando los 20 años. Un ejemplo llamativo es un error de red introducido en 2006 y corregido solo en 2025, casi 19 años después. Este problema, una fuga de conteo de referencias en el subsistema netfilter, provenía de un commit destinado a resolver un deadlock. «La ironía: el commit d205dc40798d era en sí mismo una corrección: '[NETFILTER]: ctnetlink: fix deadlock in table dumping'. Patrick McHardy estaba solucionando un deadlock eliminando una llamada _put(). Al hacerlo, introdujo una fuga de refcount que perduraría 19 años», explicó Qu. El error causaba fugas de memoria lentas en condiciones específicas, permitiendo que los sistemas afectados parecieran estables durante años antes de degradarse bajo carga. La investigación de Qu señala por qué estos errores de larga duración son difíciles de detectar. Las secciones más antiguas del kernel, de principios de los 2000, rara vez reciben cambios o revisiones. Las correcciones parciales suelen abordar síntomas sin atacar las causas raíz, permitiendo que las explotaciones sobrevivan. Las condiciones de carrera, errores de conteo de referencias y problemas del ciclo de vida de la memoria resultan especialmente elusivos. A pesar del modelo open source de Linux, que invita al escrutinio, persiste un backlog de fallos antiguos. Desde la perspectiva de un atacante, estos errores ofrecen vectores potentes, afectando código compartido entre distribuciones. Para cuando una vulnerabilidad recibe un CVE, puede haber sido explotada durante años. Para combatir esto, Qu desarrolló VulnBERT, un modelo de aprendizaje automático que escanea cambios de código en busca de vulnerabilidades. En pruebas, detectó más del 90% de los commits problemáticos con bajos falsos positivos, incluido el error de 19 años. «VulnBERT es una herramienta de triaje, no una garantía. Detecta el 92% de los errores con patrones reconocibles. El 8% restante y las clases de errores novedosos aún requieren revisión humana y fuzzing», señaló. Los kernels más nuevos se benefician de correcciones más rápidas, pero los descubrimientos continuos en código legado subrayan la necesidad de un mantenimiento vigilante. Las empresas deben priorizar las actualizaciones del kernel, ya que estos fallos pueden permitir compromisos totales del sistema en ataques avanzados.