Índice de pacotes Python, um repositório de software para desenvolvedores Python, recentemente enfrentou um ataque massivo. Um enorme fluxo de uploads maliciosos forçou a administração do projeto a suspender tanto novos uploads quanto o registro de novos usuários. Esta crise atingiu o pico em maio 20, 2023, quando os mestres do projeto divulgaram a nota sobre o estado atual das coisas.
O que é o índice de pacotes Python?
Índice de pacotes Python, mais conhecido pela abreviatura de PyPI, é um projeto de terceiros que serve como repositório de solução de código para Python. Surgiu em 2002, na forma de um catálogo centralizado de pacotes Python na Internet. Os desenvolvedores que usam Python apreciam muito esta fonte, e para a maioria de seus usuários, tornou-se tão confiável quanto oficial. A partir do início de maio 2023, sobre 450,000 pacotes estavam disponíveis neste recurso. Como você pode supor, administrar um fluxo tão massivo de pacotes para diversos fins não é uma tarefa fácil, mesmo que haja um monte de regras de upload.
PyPI enfrenta surto de pacotes maliciosos
Desde Maio 20, Administradores PyPI restringir o cadastro de novos usuários e envios de novos pacotes para os existentes. Eles suspenderam as restrições em maio 22, depois de resolver o problema. No entanto, eliminá-los não é uma solução para um problema, é apenas curar os sintomas. A situação aparecerá repetidamente, só porque hackers não vão parar tão fácil. Prevenir a propagação de malware via PyPI pode exigir introduzindo um sistema mais complicado de controle de pacotes.
A situação em torno de itens maliciosos que circulam no PyPI não é nova. A mesma coisa estava acontecendo há anos, ainda com muito menos volume de malware enviado. É bastante óbvio que o local onde esse grande número de pacotes está armazenado pode ser um ponto de interesse para hackers. Carregar um pacote malicioso, promovê-lo de uma forma ou de outra, e colher as vítimas. Código malicioso pode ser usado para comprometer não apenas a máquina do usuário que o baixou, mas também para lançar um ataque à cadeia de abastecimento. Esta última, aparentemente, torna-se em a new malware spreading trend.
Colocar malware em pacotes suplementares usados por programadores parece ser outra nova tendência. Descoberta recente de malicious Visual Studio Code plugins no VSCode Marketplace é um exemplo perfeito. A moderação mais rigorosa e muito menos popularidade do Marketplace permitiram que seus mestres despachassem as ameaças de forma operacional – mas quem sabe o que pode acontecer a seguir.
Como se proteger?
Por enquanto, a administração do projeto PyPI não divulgou nenhuma instrução sobre a proteção para seus usuários. E é esperado, as such attack vectors are quite novice. Tenho algumas ideias sobre possíveis contramedidas – deixe-me compartilhá-las.
Verifique todos os pacotes que você baixa em busca de malware. Felizmente, existem muitos sandboxes online que permitem verificar os arquivos. VirusTotal, Any.Run – você escolhe. No entanto, eles têm restrições de tamanho de arquivo, que impossibilitam a digitalização de grandes (ou intencionalmente inchado) projetos. Aparentemente, o único desvio aqui é revisar o código no ambiente de depuração – embora isso exija certas habilidades.
Revise a fonte. Existem vários pacotes confiáveis e limpos que os hackers estão tentando imitar. Namesquatting e typosquatting são os métodos mais comuns – pesquise com cuidado para evitá-los. O feedback do usuário nos comentários é outra fonte de informação. Data de upload e editor pode lhe dar ainda mais pistas – novos pacotes de um desenvolvedor sem nome que imitam outros já comprovados não devem ser confiáveis.
Use um programa antimalware com um mecanismo avançado de detecção heurística. Detecção estática, ou seja. aquele que contém assinaturas, pode ser inútil contra as ameaças mais recentes. Enquanto isso, um programa antimalware que possa verificar a ameaça do outro lado é essencial. GridinSoft Anti-Malware apresenta proteção proativa que possa despachar as amostras que foram liberadas 5 minutos atrás – simplesmente pelo seu comportamento.