Os investigadores de GitGuardian publicaron os resultados dunha análise de datos sensibles esquecidos polos desenvolvedores en código aloxado no repositorio PyPI (Índice de paquetes Python) de paquetes Python. Despois de estudar máis de 9.5 millóns de ficheiros e 5 millóns de lanzamentos de paquetes asociados a 450 mil proxectos, identificáronse 56866 casos de fuga de datos confidenciais. Se temos en conta só datos únicos, sen duplicación en diferentes lanzamentos, o número de filtracións identificadas foi de 3938 e o número de proxectos con polo menos unha filtración foi de 2922.
En total, identificáronse máis de 150 tipos de fugas de información confidencial, incluíndo contrasinais comúns, claves criptográficas, tokens de acceso para servizos na nube, sistemas de integración continua e API. Polo menos 768 credenciais permaneceron activas no momento do estudo. Exemplos de filtracións populares que seguen sendo relevantes inclúen claves de acceso para Azure Active Directory, credenciais para SSH, MongoDB, MySQL e PostgreSQL, claves para a aplicación OAuth de GitHub, Dropbox e Auth0, parámetros de inicio de sesión para Coinbase e Twilio.
Entre os tipos de filtracións que están gañando popularidade están os tokens de acceso aos bots en Telegram, cuxo número se duplicou a principios de 2021 e volveu duplicarse na primavera de 2023. Tamén se rexistra un aumento constante das filtracións desde 2020 para as claves de acceso á API de Google e desde 2022 para as credenciais do DBMS. Entre os paquetes que lideran o número de filtracións, menciónanse os paquetes chatllm e safire, nos que se esqueceron 209 claves para OpenAI e 320 para Google Cloud.
Entre os tipos de ficheiros nos que se identificou o maior número de fugas, ademais dos ficheiros coa extensión “.py”, hai ficheiros coa extensión .json (610 filtracións), .md (270), PKG-INFO (240). ), METADATOS (210), .txt (170), así como ficheiros README (209) e ficheiros dos directorios denominados test (675). Moitas filtracións tamén se deben a descoidos e erros ao establecer a exclusión de ficheiros ao xerar paquetes. Por exemplo, os ficheiros con ficheiros de configuración local (.cookiecutterrc, .env, .pypirc, etc.) pódense excluír do repositorio de Git mediante un ficheiro ".gitignore", que non se ten en conta á hora de crear o paquete. En particular, atopáronse 43 ficheiros .pypirc no repositorio que contén credenciais para acceder a PyPI. En 15 filtracións, os desenvolvedores non tiñan a intención de lanzar publicamente paquetes creados orixinalmente para uso interno, pero publicáronos en PyPI por erro.
Ademais, pódense mencionar dous eventos máis relacionados con PyPI:
- No repositorio PyPI identificáronse 8 paquetes maliciosos, presentados como utilidades para a ofuscación, é dicir. reducindo o código a unha forma ilexible, complicando a restauración do algoritmo. Os paquetes identificados contiñan a cadea "pyobf" nos seus nomes (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse e pyobfgood) e descargáronse máis de 2000 veces.
O código malicioso integrado nos paquetes era específico da plataforma Windows e permitiu a conexión a un control externo servidor, executar comandos arbitrarios no computador do desenvolvedor, atopar e enviar información confidencial, como claves de acceso, a un servidor externo e transferir ficheiros arbitrarios desde o sistema. Ademais, o código malicioso podería actuar como un rexistrador de teclas, interceptar contrasinais introducidos en Chrome, crear capturas de pantalla, gravar audio e mesmo controlar a cámara web.
- Publicáronse os resultados dunha auditoría independente da base de código das ferramentas utilizadas para organizar o traballo do repositorio pypi.org e do marco de cabotaxe utilizado na infraestrutura de orquestración de contedores. A auditoría levouse a cabo co apoio da organización sen ánimo de lucro OTF (Open Technology Fund). Durante a auditoría, non se identificaron problemas cun alto nivel de perigo e recoñeceuse que os códigos fonte cumprían os requisitos básicos para unha codificación segura. Ao mesmo tempo, observouse unha cobertura insuficiente de probas da base de códigos de cabotaxe e identificáronse 29 problemas, dos cales oito asignáronselle un nivel de perigo moderado, 6 - baixo e 14 foron marcados como comentarios informativos.
Os problemas máis notables:
- A verificación insuficiente das sinaturas dixitais utilizadas para integrar PyPI con AWS SNS permitiu enviar notificacións aos correos electrónicos dos usuarios individuais.
- Unha fuga de información no controlador de descargas que permite determinar a existencia dunha conta sen xerar eventos sobre intentos de inicio de sesión.
- O uso de hash criptográficos pouco fiables que non exclúen os ataques de intoxicación da caché.
- Se tes dereito a iniciar procesos de compilación mediante cabotaxe, o atacante podería conseguir a substitución dos seus comandos.
- Con dereitos de implantación en cabotaxe, un atacante podería despregar unha imaxe de aspecto lexítimo.
Fonte: opennet.ru
