Los investigadores de GitGuardian publicaron los resultados de un análisis de datos confidenciales olvidados por los desarrolladores en código alojado en el repositorio de paquetes de Python PyPI (Python Package Index). Tras examinar más de 9,5 millones de archivos y 5 millones de lanzamientos de paquetes relacionados con 450,000 proyectos, se identificaron 56,866 incidentes de fuga de datos confidenciales. Si se consideran solo los datos únicos, sin duplicados en diferentes lanzamientos, el número de fugas identificadas fue de 3,938, y el número de proyectos en los que al menos se presentó una fuga fue de 2,922.
Se identificaron más de 150 tipos de fugas de información confidencial, entre las que se encuentran contraseñas comunes, claves criptográficas, tokens de acceso a servicios en la nube, sistemas de integración continua y API. Al menos 768 credenciales seguían siendo válidas en el momento de realizar la investigación. Como ejemplos de fugas comunes que siguen siendo relevantes, se mencionan las claves de acceso a Azure Active Directory, credenciales para SSH, MongoDB, MySQL y PostgreSQL, claves para GitHub OAuth App, Dropbox y Auth0, así como los datos de inicio de sesión para Coinbase y Twilio.
Entre los tipos cada vez más comunes de fugas se mencionan los tokens de acceso a bots en Telegram, el número de los cuales se duplicó a principios de 2021 y se volvió a duplicar en primavera de 2023. Además, desde 2020 se ha registrado un crecimiento constante de las fugas de claves de acceso a Google API, y desde 2022 para las credenciales de bases de datos. Entre los paquetes que lideran en el número de fugas se encuentran chatllm y safire, donde se olvidaron 209 claves para OpenAI y 320 claves para Google Cloud.
Entre los tipos de archivos en los que se identificaron el mayor número de fugas, además de los archivos con la extensión '.py', se señalan los archivos con la extensión .json (610 fugas), .md (270), PKG-INFO (240), METADATA (210), .txt (170), así como los archivos README (209) y los archivos de directorios llamados test (675). Muchas fugas también están relacionadas con descuidos y errores en la configuración de exclusión de archivos al crear paquetes. Por ejemplo, los archivos con configuraciones locales (.cookiecutterrc, .env, .pypirc, etc.) pueden excluirse del repositorio de Git a través del archivo '.gitignore', el cual no se considera al crear un paquete. En particular, se encontraron 43 archivos .pypirc en el repositorio que contenían credenciales para acceder a PyPI. En 15 casos, los desarrolladores no tenían la intención de publicar paquetes públicamente, inicialmente creados para uso interno, pero los publicaron en PyPI por error.
También se pueden mencionar otros dos eventos relacionados con PyPI:
- En el repositorio de PyPI se identificaron 8 paquetes maliciosos presentados como utilidades de ofuscación, es decir, que hacen que el código sea ilegible, dificultando la recuperación del algoritmo de funcionamiento. Los paquetes identificados contenían en sus nombres la cadena «pyobf» (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse y pyobfgood) y fueron descargados más de 2000 veces.
El código malicioso integrado en los paquetes era específico para la plataforma Windows y permitía conectarse a un servidor externo de control servidor, ejecutar comandos arbitrarios en la computadora del desarrollador, encontrar y enviar información confidencial como claves de acceso a un servidor externo, así como transferir archivos arbitrarios desde el sistema. Además, el código malicioso podía funcionar como un keylogger, interceptando contraseñas ingresadas en Chrome, creando capturas de pantalla, grabando audio e incluso controlando la cámara web.
- Se publicaron los resultados de una auditoría independiente de la base de código de las herramientas utilizadas para gestionar el repositorio pypi.org y el marco «cabotage» involucrado en la infraestructura de orquestación de contenedores. La auditoría fue realizada con el apoyo de la organización sin fines de lucro OTF (Open Technology Fund). Durante la auditoría no se identificaron problemas de alto riesgo, y los códigos fuente fueron considerados como cumpliendo con los requisitos básicos de escritura segura de código. Sin embargo, se destacó una cobertura insuficiente de pruebas de la base de código de cabotage y se identificaron 29 problemas, de los cuales ocho se clasificaron como de riesgo moderado, 6 como bajo y 14 como observaciones informativas.
Los problemas más destacados:
- La insuficiente verificación de las firmas digitales utilizadas para la integración de PyPI con AWS SNS permitía enviar notificaciones al correo electrónico de usuarios individuales.
- Filtración de información en el manejador de descargas, que permitía determinar la existencia de una cuenta sin generar eventos de intentos de inicio de sesión.
- Uso de hashes criptográficos poco confiables, que no excluyen ataques de envenenamiento de caché.
- Con derechos para ejecutar procesos de construcción a través de cabotage, un atacante podría potencialmente inyectar sus propios comandos.
- Con derechos de despliegue en cabotage, un atacante podría potencialmente desplegar una imagen que pareciera legítima.
Fuente: opennet.ru
