Durante los Ășltimos dias se ha estado discutiendo el caso sobre las acciones que tomaron un grupo de investigadores de la Universidad de Minnesota, ya que desde la perspectiva de muchos, dichas acciones en relaciĂłn de la introducciĂłn de vulnerabilidades en el Kernel de Linux no tiene justificaciĂłn.
Y a pesar de que un grupo de investigadores de la Universidad de Minnesota publicaran una carta abierta de disculpa, cuya aceptaciĂłn de cambios al kernel de Linux que fue bloqueada por Greg Kroah-Hartman, revelĂł detalles de los parches enviados a los desarrolladores del kernel y la correspondencia con los mantenedores asociados con estos parches.
Es de destacar que todos los parches problemĂĄticos fueron rechazados por iniciativa de los mantenedores, ninguno de los parches fue aprobado. Este hecho deja en claro por quĂ© Greg Kroah-Hartman actuĂł con tanta dureza, ya que no estĂĄ claro quĂ© habrĂan hecho los investigadores si los parches hubieran sido aprobados por los encargados del mantenimiento.
En retrospectiva, argumentaron que tenĂan la intenciĂłn de informar del error y no permitirĂan que los parches fueran a Git, pero no estĂĄ claro quĂ© harĂan realmente o quĂ© tan lejos podrĂan llegar.
En total, en agosto de 2020, se enviaron cinco parches desde las direcciones anĂłnimas acostag.ubuntu@gmail.com y jameslouisebond@gmail.com (una carta de James Bond): dos correctos y tres que incluyen errores ocultos, creando condiciones para la apariciĂłn de vulnerabilidades.
Cada parche contenĂa solo de 1 a 4 lĂneas de cĂłdigo. La idea principal detrĂĄs de los parches errĂłneos era que arreglar una fuga de memoria podrĂa crear una condiciĂłn para una vulnerabilidad libre doble.
El proyecto tiene como objetivo mejorar la seguridad del proceso de parcheo en OSS. Como parte del proyecto, estudiamos problemas potenciales con el proceso de parcheo de OSS, incluidas las causas de los problemas y sugerencias para dirigiéndose a ellos.
De hecho, este estudio revela algunos problemas, pero su objetivo es pedir esfuerzos para mejorar la
proceso de parcheo para motivar mĂĄs trabajo que desarrolle tĂ©cnicas para probar y verificar parches, y finalmente para hacer que el OS sea mĂĄs seguro.Basado en estos parches, resumimos sus patrones, estudiamos las razones especĂficas por las que los parches de introducciĂłn de errores son difĂciles de captura (con un anĂĄlisis tanto cualitativo como cuantitativo) y, lo que es mĂĄs importante, proporcionar sugerencias para abordar el problema.
El primer parche problemåtico solucionó la pérdida de memoria agregando una llamada a kfree() antes de devolver el control en caso de un error, pero creando condiciones para acceder al årea de memoria después de que se liberó (use-after-free).
El parche especificado fue rechazado por el mantenedor, quien identificĂł el problema e indicĂł que hace un año alguien ya habĂa intentado proponer un cambio similar y fue inicialmente aceptado, pero descartado el mismo dĂa despuĂ©s de identificar las condiciones de la vulnerabilidad.
El segundo parche tambiĂ©n contenĂa condiciones para el problema de uso despuĂ©s de la liberaciĂłn. El parche especificado no fue aceptado por el mantenedor, quien rechazĂł el parche debido a otro problema con list_add_tail, pero no notĂł que el puntero «chdev» se puede liberar en la funciĂłn put_device, que se usa a continuaciĂłn en la llamada a dev_err (& chdev -> dev ..). Sin embargo, el parche no fue aceptado, aunque por razones ajenas a la vulnerabilidad.
Curiosamente, inicialmente se asumiĂł que 4 de cada 5 parches tenĂan problemas, pero los propios investigadores cometieron un error y en un parche problemĂĄtico, en su opiniĂłn, se propuso la soluciĂłn correcta, sin las supuestas condiciones para usar la memoria despuĂ©s del lanzamiento.
En este trabajo, presentamos el concepto de «vulnerabilidad inmadura» donde un falta su condiciĂłn de vulnerabilidad, pero puede convertirse en una real cuando la condiciĂłn es implĂcitamente
introducido por un parche para otro error.También desarrollamos herramientas que nos ayudan a encontrar lugares de código que pueden sufrir
de los parches de introducciĂłn de errores y sugiera quĂ© puede hacer que estos parches de introducciĂłn de errores sean difĂciles de detectar.Una semana despuĂ©s, se enviĂł informaciĂłn a los desarrolladores del kernel con una propuesta para discutir la posibilidad de promover vulnerabilidades bajo la apariencia de correcciones triviales para fugas de memoria, pero no se dijo nada sobre intentos anteriores de enviar parches maliciosos.
El tercer parche también fue rechazado por el mantenedor debido a otro error sin vulnerabilidad (doble aplicación en pdev).