Vulnerabilidades que pasaron desapercibidas durante una década dejaron a miles de aplicaciones de macOS e iOS susceptibles a ataques a la cadena de suministro. Los piratas informáticos podrían haber añadido código malicioso comprometiendo la seguridad de millones o miles de millones de personas que las instalaron, dijeron los investigadores el lunes. Las vulnerabilidades, que se solucionaron en octubre pasado, residían en un servidor «troncal» utilizado para gestionar CocoaPods, un repositorio para proyectos de código abierto Swift y Objective-C del que dependen aproximadamente 3 millones de aplicaciones de macOS e iOS. Cuando los desarrolladores realizan cambios en uno de sus «pods» (la jerga de CocoaPods para los paquetes de código individuales), las aplicaciones dependientes normalmente los incorporan automáticamente a través de actualizaciones de la aplicación, normalmente sin que los usuarios finales tengan que interactuar. Vulnerabilidades de inyección de código «Muchas aplicaciones pueden acceder a la información más sensible de un usuario: datos de tarjetas de crédito, registros médicos, materiales privados y más», escribieron los investigadores de EVA Information Security, la empresa que descubrió la vulnerabilidad. “Inyectar código en estas aplicaciones podría permitir a los atacantes acceder a esta información para casi cualquier propósito malicioso imaginable: ransomware, fraude, chantaje, espionaje corporativo… En el proceso, podría exponer a las empresas a importantes responsabilidades legales y riesgos para la reputación”. Las tres vulnerabilidades que descubrió EVA se derivan de un mecanismo de correo electrónico de verificación inseguro utilizado para autenticar a los desarrolladores de pods individuales. El desarrollador ingresaba la dirección de correo electrónico asociada con su pod. El servidor troncal respondía enviando un enlace a la dirección. Cuando una persona hacía clic en el enlace, obtenía acceso a la cuenta. En un caso, un atacante podía manipular la URL del enlace para que apuntara a un servidor bajo el control del atacante. El servidor aceptaba un XFH falsificado, un encabezado HTTP para identificar el host de destino especificado en una solicitud HTTP. Los investigadores de EVA descubrieron que podían usar un XFH falsificado para construir las URL de su elección. Normalmente, el correo electrónico contendría un enlace válido que se publica en el servidor de CocoaPods.org como: Enlarge / Cómo se ve un correo electrónico de verificación válido. EVA Information Security Los investigadores podrían, en cambio, cambiar la URL para que lleve a su propio servidor: Enlarge / Una verificación de correo electrónico después de que haya sido manipulada. EVA Information Security Esta vulnerabilidad, identificada como CVE-2024-38367, residía en la clase session_controller del código fuente del servidor troncal, que maneja la URL de validación de la sesión. La clase usa el mecanismo sessions_controller.rb, que prioriza el XFH sobre el encabezado del host original. El código de explotación de los investigadores fue: POST /api/v1/sessions HTTP/1.1 Host: trunk.cococapods.org Content-Type: application/json; charset=utf-8 Accept: application/json; charset=utf-8 User-Agent: CocoaPods/1.12.1 Accept-Encoding: gzip, deflate X-Forwarded-Host: research.evasec.io Content-Length: 78 { «email»: «research@evasec.io», «name»: «EVAResearch», «description»: null } Una vulnerabilidad separada identificada como CVE-2024-38368 permitió a los atacantes tomar el control de pods que habían sido abandonados por sus desarrolladores pero que continúan siendo utilizados por aplicaciones. Una interfaz de programación que permite a los desarrolladores recuperar sus pods permaneció activa casi 10 años después de su primera implementación. Los investigadores descubrieron que cualquiera que encontrara la interfaz de un pod huérfano podía activarlo para obtener el control sobre él, sin necesidad de una prueba de propiedad. Una simple solicitud curl que contenía el nombre del pod era todo lo que se necesitaba: # Solicitud curl para cambiar la propiedad de un pod huérfano de destino curl -X ‘POST’ \ -H ‘Host: trunk.cocoapods.org’ \ -H ‘Content-Type: application/x-www-form-urlencoded’ \ –data-binary ‘owner[name]=EVA&email=research@evasec.io’ –data-binary ‘pods[]=[TARGET_UNCLAIMED_POD]&button=SEND’ ‘https://trunk.cocoapods.org/claims’ La tercera vulnerabilidad, CVE-2024-38366, permitió a los atacantes ejecutar código en el servidor troncal. El servidor troncal se basa en RFC822 formalizado en 1982 para verificar la unicidad de las direcciones de correo electrónico de los desarrolladores registradas y comprobar si siguen el formato correcto. Parte del proceso implica examinar el registro MX del dominio de la dirección de correo electrónico tal como se implementa en esta implementación de RFC822.