Esta semana en seguridad: Linux WiFi, Fortinet, Text4Shell y GUIDs predecibles

Lo primero de esta semana es un quinteto de vulnerabilidades en el código inalámbrico del kernel de Linux. Comenzó con [Soenke Huster] de TU Darmstadt, que encontró una sobreescritura de búfer en el código mac80211. La revelación privada a los ingenieros del kernel de SUSE llevó a una revisión de seguridad de este marco inalámbrico en el kernel, y se encontraron algunos otros errores desagradables. Un par de ellos dan lugar a una denegación de servicio (DOS), pero CVE-2022-41674, CVE-2022-42719 y CVE-2022-42720 son vulnerabilidades de ejecución remota de código. Lo más lamentable es que estas vulnerabilidades se activan al procesar las tramas de balizas, los paquetes inalámbricos que anuncian la presencia de una red inalámbrica. Una máquina no tiene que estar conectada o intentando conectarse a una red, pero el simple hecho de buscar redes puede llevar a un compromiso.

Los fallos se anunciaron el día 13, y se corrigieron oficialmente en el kernel principal el día 15. Muchas distros enviaron las actualizaciones el día 14, así que el cambio fue bastante rápido en este caso. Todos los fallos eran problemas de gestión de la memoria, lo que ha provocado algunos llamamientos para que el marco de trabajo Rust, recientemente fusionado, se utilice en el mundo real más pronto que tarde.

Fortinet

Gran parte de la línea de Fortinet, más notablemente sus firewalls Fortigate, tiene un bypass de autenticación pre-aut en la interfaz administrativa HTTP/S. O simplemente, si puedes llegar a la página de inicio de sesión, puedes entrar sin contraseña. Eso es malo, pero en este punto, usted *realmente* no debería tener ninguna interfaz administrativa accesible en cualquier hardware. El firmware actualizado está disponible.

Han pasado más de un par de días, así que tenemos alguna idea del problema de raíz y de cómo se solucionó. Es simple - las cabeceras HTTP reenviadas en una solicitud entrante son involuntariamente de confianza. Así que sólo hay que enviar una solicitud con Forwarded:for y Forwarded:by establecidos en 127.0.0.1, y cae a través de la lógica del código destinado a las llamadas internas de la API. Añade una clave SSH de confianza, y pop, estás dentro. Ups.

Los tokens de GitHub aprenden nuevos trucos

GitHub ha estado librando un poco de una mini-guerra en el uso de la contraseña para la conexión SSH a su servicio. Esto tiene algunos beneficios obvios, pero una de las desventajas es que un token se instala permanentemente en la máquina desde la que estás desarrollando, y tiene acceso a toda tu cuenta de GitHub. Eso es un verdadero problema si haces algún trabajo de desarrollo en servidores compartidos. Afortunadamente, la gente de GitHub ha reconocido el error de sus métodos, y ha puesto en marcha controles de acceso más selectivos para esos tokens. Puede que sea el momento de auditar tus tokens de GitHub, revocar los tokens "clásicos" y regenerarlos con controles estrictos.

Text4Shell

Si hay algo peor que el intento de hacer que los escándalos políticos parezcan peores añadiendo "gate" al final de los mismos, es la nueva tendencia de añadir "4shell" a las vulnerabilidades de Java. Y en esa línea, tenemos text4shell. Es la rareza que StringSubstitutor.replace() y StringSubstitutor.replaceIn() pueden hacer búsquedas de cadenas en cadenas incluidas - y esa búsqueda puede ejecutar código Java arbitrario:

final StringSubstitutor interpolator = StringSubstitutor.createInterpolator();
String out = interpolator.replace("$script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')");
System.out.println(out);

Durante un tiempo parecía que las versiones modernas de JDK no se veían afectadas, pero resulta que un enfoque ligeramente diferente nos da exactamente el mismo problema de ejecución de código.

Hola Erik, he recibido alguna pregunta relacionada con las versiones del JDK afectadas por esta vulnerabilidad. ¿Podrías actualizar tu entrada en el blog para dejar claro que todas las versiones de JDK son vulnerables? Nashorn efectivamente no está disponible en los JDKs modernos pero JEXL sí pic.twitter.com/rY2J9VEZrX

- Álvaro Muñoz 🇺🇦 (@pwntester) 18 de octubre de 2022

Ya hay herramientas desarrolladas para atrapar este fallo en particular, aunque el problema normal de Java de las bibliotecas compiladas en el jarfile final también será un problema aquí. Afortunadamente este no parece tener la misma exposición que log4shell.

GUIDs no aleatorios

Los UUIDs o GUIDs, como prefieras llamarlos, son un Identificador Único Universal, y se usan por todas partes. Lo que tal vez no sepas es que existe un RFC real, y que especifica versiones con diferentes algoritmos de generación. Cuando ves un UUID, el primer número del tercer conjunto especifica de qué versión se trata. Así, 589bc816-502f-11ed-b8f4-18c04d808bd7 es un UUID de la versión 1. Esto es interesante, porque no se genera aleatoriamente, sino que se basa en la dirección MAC y la marca de tiempo del ordenador que lo genera. La versión 4 es el único esquema de UUID generado aleatoriamente, por lo que todos los demás son deterministas. ¿Y si un enlace de restablecimiento de contraseña utiliza un UUID para su clave secreta? Puede que tengas una forma de entrar en la cuenta.

[Daniel Thatcher]El investigador que está detrás de esta historia ha publicado guidtoolun script en Python para extraer todos los detalles de una cadena UUID V1. Es un montón de información que se da por una cadena que se podría asumir como aleatoria.

Lista de controladores inseguros de Microsoft

Los controladores firmados de Windows con fallos de seguridad conocidos son una bendición o un gran problema, dependiendo de si se trata de un equipo rojo o azul. La idea es que un usuario sin privilegios puede cargar un controlador firmado, explotar el fallo conocido y conseguir una escalada de privilegios. Microsoft está al tanto de este problema, y mantiene una lista de controladores vulnerables conocidos, bloqueando su carga. Si, es decir, tienes definiciones *muy* flojas de "mantener" y "lista". Al parecer, no se ha actualizado en tres años, y la versión de Windows Server 2019 contiene la friolera de dos controladores. Parece que, tras la repetida demostración de problemas, Microsoft vuelve a mantener adecuadamente esta lista, aunque parece que sigue siendo necesaria la intervención del usuario para instalarla y actualizarla.

Alana Herrero
Alana Herrero

Deja una respuesta

Tu dirección de correo electrónico no será publicada.