O repositório oficial do PHP hospedado em um servidor Git, foi invadido por cibercriminosos, que fizeram duas modificações no código-fonte da tecnologia, inserindo um backdoor, disfarçado de uma correção de tipografia, no domingo (28/03). Mais um caso de ataque à cadeia de suprimentos, mas nesse caso, de uma solução de código aberto, muito popular no mercado.
- Em meio a golpe militar, internet de Myanmar sofre censura e bloqueios
- Fim do Flash interrompe sistema ferroviário na China
- Brave quer aposentar HTTP e criar uma web descentralizada com protocolo IPFS
As modificações foram falsamente assinadas por Rasmus Lerdorf e Nikita Popov, dois desenvolvedores conhecidos por manter e atualizar a tecnologia. Em um comunicado, Popov explica que ainda não sabem como foram feitas as alterações, mas acredita que tenha sido um comprometimento do servidor, hospedado em Git e não de suas credenciais no GitHub.
"Dois commits maliciosos foram enviados ao repositório php-src assinados por Rasmus Lerdorf e eu. Ainda não sabemos como
exatamente isso aconteceu, mas tudo aponta para um comprometimento do servidor git.php.net (em vez de um comprometimento de uma conta git individual)", escreve Popov no site oficial da tecnologia.
Os commits, como são chamados as alterações de código na plataforma foram feitos no código-fonte da versão de desenvolvedor do PHP 8.1, que ainda está em desenvolvimento e deve ser lançado como versão estável até o final deste ano.
Sendo assim, somente desenvolvedores PHP, ou empresas que utilizam PHP de forma massiva podem ter baixado a atualização modificada. No entanto, PHP é uma linguagem muito popular em servidores e empresas que lidam com grandes quantidades de dados, como o Facebook, por exemplo.
Em entrevista ao Bleeping Computer, Popov explica que as modificações foram descobertas horas após serem enviadas, durante um processo de rotina de revisão de código e imediatamente corrigidas.
"O primeiro commit foi encontrado algumas horas após ter sido feito, como parte da revisão de código pós-commit de rotina. As alterações eram obviamente maliciosas e revertidas imediatamente", disse Popov ao BleepingComputer.
Assinaturas forjadas no Git
Em uma publicação no site Dev, Alex Grinman, fundador da Krypt.co, explica como fazer um commit assinado por qualquer outra pessoa. Segundo ele, commits legítimos mostram uma etiqueta verde, que representa usuários verificados. Qualquer commit sem esta etiqueta pode ter sido feito por qualquer pessoa.
"Qualquer pessoa pode definir o “autor” de um commit do Git para qualquer valor. Para provar que você é o autor de um commit, você deve anexar uma assinatura digital a ele. A única maneira de alguém saber que é realmente o seu commit é verificar a assinatura do commit", escreve Grinman.
Popov explica que, por questões de segurança, o repositório com o código-fonte oficial do PHP será completamente migrado para o GitHub e o repositório em Git será cancelado permanentemente.
"Enquanto a investigação ainda está em andamento, decidimos que manter nossa própria infraestrutura Git é um risco de segurança desnecessário e que iremos descontinuar o servidor git.php.net... Em vez disso, os repositórios no GitHub, que antes eram apenas espelhos, se tornarão canônicos”, anunciou Popov.
Assim, qualquer alteração no código do PHP será enviada diretamente para o GitHub, ao invés de ir para um servidor Git, neste caso git.php.net. Ou seja, para colaborar voluntariamente com o projeto, é necessário ser adicionado à base de desenvolvedores no GitHub e isso deve ser feito pelos próprios desenvolvedores.
Fontes: Bleeping Computer; PHP; Dev.