As Armadilhas das Bibliotecas de Terceiros
Categories:
- As Armadilhas das Bibliotecas de Terceiros
Hoje falei sobre uma vulnerabilidade recente descoberta em uma biblioteca de logs de terceiros que permite, com muito baixa barreira, explorar e executar comandos remotos. Uma biblioteca de logs e comandos remotos parecem totalmente desconexos, mas bibliotecas de terceiros excessivamente repletas de funcionalidades estão por toda parte.
Quanto mais código leio, mais percebo o nível extremamente baixo de muitos códigos open-source, independentemente de quantos k de estrelas tenham; estrelas representam demanda, não nível de desenvolvimento.
Os benefícios do open-source são ter mais pessoas desenvolvendo, com vantagens como o rápido aumento de funcionalidades, correção de bugs e revisão de código, porém a qualidade dos desenvolvedores é desigual.
Sem uma forte restrição de commits, é difícil garantir a qualidade do código.
Quanto mais código, maior a superfície de ataque adicionada.
Embora seja ruim reinventar a roda, as necessidades do produto são como rodas de carrinho de bebê; uma roda de plástico aguenta qualquer coisa, instalar um pneu de avião só aumenta a superfície de ataque e o custo de manutenção. Portanto, se só precisamos da roda de carrinho de bebê, não devemos usar um pneu de avião.
Alto custo de manutenção; bibliotecas de terceiros exigem processos e pessoal dedicados para sua manutenção. Um framework de testes altamente modificado pela Huawei causou falhas nas cases de teste ao atualizar o compilador, criando conflitos entre a atualização do framework de testes e a atualização do compilador, exigindo muito tempo para continuar a modificação durante a manutenção. Como participante, senti profundamente a dificuldade de modificar bibliotecas de terceiros. Se a modificação é feita para funcionalidades que podem ser incorporadas ao repositório open-source, ainda é aceitável, porém desenvolvimentos personalizados invasivos para atender a demandas próprias dificultam muito a manutenção.
A Huawei criou uma série de processos para lidar com bibliotecas de terceiros, que podem ser descritos como cheios de obstáculos.
A barreira é extremamente rigorosa; a adição de bibliotecas de terceiros requer avaliação de especialistas de nível 18 e chefes de nível 20, basicamente permitindo apenas bibliotecas de terceiros bem estabelecidas.
Todas as bibliotecas de terceiros são armazenadas na pasta thirdparty, e durante a compilação completa, o CI compara com o repositório fonte, proibindo estritamente modificações invasivas.
Ferramentas especializadas rastreiam todas as versões das bibliotecas de terceiros, e para gerenciar isso, foram contratados funcionários externos. Se o desenvolvimento solicitar uma atualização de versão, é necessário solicitar e obter a aprovação do chefe.
É difícil encontrar um chefe para lidar com esse tipo de tarefa; quando um processo é extremamente complicado, na prática está desencorajando a realização da ação.
Devemos manter uma atitude de desconfiança em relação a bibliotecas de terceiros, confiando mais nos desenvolvedores internos.