Da base de código da qual o lançamento do FreeBSD 13 foi formado, o código com a implementação do protocolo VPN WireGuard, desenvolvido sob encomenda da Netgate sem consultas aos desenvolvedores do WireGuard original, foi removido em meio a um escândalo, já incluído nas versões estáveis da distribuição pfSense. Após a verificação do código por Jason Donenfeld, autor do WireGuard original, ficou claro que a implementação proposta para o FreeBSD era um exemplo de código de baixa qualidade, repleto de estouros de buffer e violando a licença GPL.
Na implementação, foram encontrados erros catastróficos no código de criptografia, parte do protocolo WireGuard foi omitida, havia erros que causavam falhas no kernel e contornavam métodos de proteção, foram utilizados buffers de tamanho fixo para os dados de entrada. A qualidade do código é evidenciada pela presença de ganchos em vez de verificações, sempre retornando o valor 'true', assim como printf de depuração esquecidos exibindo parâmetros usados para criptografia, e a aplicação da função sleep para evitar condições de corrida.
Algumas partes do código, como a função crypto_xor, foram transferidas da implementação do WireGuard desenvolvido para Linux em violação da licença GPL. Como resultado, Jason Donenfeld, junto com Kyle Evans e Matt Dunwoodie, autor do porto do WireGuard para OpenBSD, ocuparam-se de redesenhar a implementação problemática e, em uma semana, substituíram completamente todo o código do desenvolvedor contratado pela Netgate. A versão revisada foi lançada como um conjunto separado de patches, colocado no repositório do projeto WireGuard e ainda não foi integrado ao FreeBSD.
É interessante notar que, inicialmente, nada previa problemas. A empresa Netgate, que desejava a implementação do WireGuard na distribuição pfSense, contratou Matthew Macy, um especialista no núcleo e na pilha de rede do FreeBSD, que já tinha experiência na correção de erros e no desenvolvimento de drivers de rede para esse sistema operacional. Macy teve um cronograma flexível, sem prazos e verificações intermediárias. Desenvolvedores que colaboraram com Macy na FreeBSD o descreveram como um programador talentoso e profissional, que comete erros em número similar aos demais e reage de forma adequada à crítica. A má qualidade do código da implementação do WireGuard para FreeBSD foi uma surpresa para eles.
Após nove meses de trabalho, em dezembro do ano passado, Macy adicionou sua implementação ao branch HEAD, que foi utilizado para a criação do release do FreeBSD 13, sem concluir a revisão e os testes por outros participantes. O desenvolvimento foi feito sem contato com os desenvolvedores do WireGuard original e dos ports para OpenBSD e NetBSD. Em fevereiro, a Netgate integrou o WireGuard na versão estável do pfSense 2.5.0 e começou a fornecê-lo em seus firewalls baseados nele. Após a identificação de problemas, o código do WireGuard foi removido do pfSense.
No código adicionado, foram encontradas vulnerabilidades críticas que foram usadas em explorações de 0-day, mas a Netgate inicialmente não reconheceu a existência das vulnerabilidades e tentou acusar o desenvolvedor do WireGuard original de ataque e parcialidade, o que afetou negativamente sua reputação. O desenvolvedor do port inicialmente rejeitou as alegações sobre a qualidade do código, considerando-as exageradas, mas após a demonstração dos erros, reconheceu que a real questão importante era a falta de uma revisão adequada da qualidade do código no FreeBSD, uma vez que os problemas permaneceram sem serem notados por meses (representantes da Netgate indicaram que a revisão pública foi iniciada em agosto de 2020, mas desenvolvedores específicos do FreeBSD observaram que a revisão no Phabricator foi encerrada por Macy antes de ser concluída e ignorando comentários). A equipe do FreeBSD Core Team respondeu ao incidente prometendo modernizar os processos de verificação do código.
Matthew Macy, desenvolvedor do port problemático para FreeBSD, comentou a situação dizendo que cometeu um grande erro ao aceitar o trabalho sem estar pronto para implementar este projeto. Ele atribui o resultado ao esgotamento emocional e a problemas causados pela síndrome pós-COVID. Macy, no entanto, não teve coragem de renunciar às obrigações que já havia assumido e tentou levar o projeto até o fim.
O estado de Macy também pode ter sido afetado por uma recente condenação, que ele recebeu por ações ilegais na tentativa de despejar inquilinos de sua casa comprada, que não queriam sair voluntariamente. Junto com sua esposa, ele cortou as vigas do teto e fez buracos no piso para tornar a casa inadequada para habitação, além de tentar intimidar os inquilinos, invadir apartamentos ocupados e retirar os pertences existentes (a ação foi qualificada como roubo com arrombamento). Para evitar a responsabilidade por suas ações, Macy e sua esposa fugiram para a Itália, mas ele foi extraditado para os EUA e cumpriu mais de quatro anos de prisão.
Fonte: opennet.ru
