Questão de Engenharia de Software — Github e Gitlab — FCC 2025
Engenharia de Software›Github e Gitlab
Código
fc150514
Banca
FCC
Órgão
TRT 15
Ano
2025
Cargo
AJ TRT15
Uma equipe de desenvolvimento utiliza o GitLab CI/CD para automação de builds e deploys. Para otimizar o processo de integração contínua (CI), foi configurado um webhook para disparar automaticamente um pipeline de build assim que um commit é enviado ao branch main. No entanto, durante uma atualização do ambiente de produção, percebeu-se que o webhook falhou e o pipeline não foi executado, causando atraso no deploy. Após uma análise técnica, verificou-se que o problema ocorreu devido a uma falha no endpoint do webhook, que não conseguiu validar a mensagem enviada.
A solução técnica que deve ser implementada para garantir que o webhook não falhe novamente devido a erros de validação é
Aconfigurar uma API reversa para verificar e redirecionar as mensagens do webhook para um endpoint alternativo.
Bimplementar SSL offoading no servidor para garantir que as mensagens webhook trafeguem com criptografia SSL.
Cconfigurar um balanceador de carga para distribuir as requisições do webhook entre múltiplos endpoints redundantes de validação de mensagens.
Dcriar um proxy reverso com logs detalhados para monitorar a comunicação e diagnosticar falhas no endpoint do webhook.
Ehabilitar o recurso de verificação de assinatura (usando token) para checar a integridade das mensagens enviadas pelo webhook.
Revelar gabarito e comentário▾
GabaritoE — habilitar o recurso de verificação de assinatura (usando token) para checar a integridade das mensagens enviadas pelo webhook.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Webhooks e Segurança em CI/CD
Gabarito: letra E. O problema descrito é uma falha de validação da mensagem no endpoint do webhook — o servidor não conseguiu confirmar que a mensagem recebida era legítima e íntegra. A solução técnica correta é habilitar a verificação de assinatura (usando um token secreto compartilhado), que permite ao endpoint validar a autenticidade e a integridade de cada mensagem recebida, rejeitando requisições forjadas ou adulteradas. As demais alternativas tratam de infraestrutura de rede (proxy, SSL, balanceamento) ou de diagnóstico (logs), que não resolvem a causa raiz: a ausência de um mecanismo de validação criptográfica da mensagem.
Um webhook é um mecanismo de notificação automática em que um sistema (no caso, o GitLab) envia uma requisição HTTP para uma URL pré-configurada (o endpoint) sempre que um evento específico ocorre — aqui, um push para o branch main. O endpoint, por sua vez, processa a mensagem e dispara o pipeline de CI. A grande vulnerabilidade desse modelo é que qualquer pessoa que descubra a URL do endpoint pode enviar requisições falsas, simulando eventos que não ocorreram ou adulterando o conteúdo da mensagem. Para mitigar esse risco, os provedores de webhook (GitHub, GitLab, etc.) implementam um mecanismo de assinatura de mensagem: o remetente calcula um hash da mensagem (geralmente HMAC-SHA256) usando um token secreto que é compartilhado apenas entre o remetente e o destinatário. O destinatário, ao receber a mensagem, recalcula o hash com o mesmo token e compara com o valor recebido. Se forem iguais, a mensagem é autêntica e íntegra; se não, a mensagem é rejeitada.
No cenário da questão, o endpoint "não conseguiu validar a mensagem enviada" — ou seja, ou o token não estava configurado, ou a verificação de assinatura não estava habilitada, ou o token configurado no endpoint não correspondia ao token configurado no GitLab. A solução é justamente habilitar o recurso de verificação de assinatura e garantir que o token secreto esteja corretamente configurado em ambos os lados. Isso não apenas resolve o problema imediato, mas também protege o pipeline contra requisições maliciosas, um requisito fundamental de segurança em ambientes de integração contínua.
É importante distinguir a verificação de assinatura de outras medidas de segurança de rede. O SSL/TLS (alternativa B) protege a comunicação em trânsito contra interceptação e adulteração por terceiros, mas não valida a identidade do remetente — qualquer um pode enviar uma requisição HTTPS para o endpoint. O proxy reverso (alternativa D) e o balanceador de carga (alternativa C) são componentes de infraestrutura que melhoram a disponibilidade, o desempenho e o diagnóstico, mas não adicionam nenhuma camada de validação de conteúdo. A API reversa (alternativa A) é um termo vago e não corresponde a uma prática padrão para esse fim. A verificação de assinatura, por outro lado, é a única solução que ataca diretamente o problema de validação da mensagem, garantindo que apenas requisições legítimas do GitLab sejam processadas.
Guarde este critério: quando o problema for validação de mensagem em webhooks, a resposta é sempre verificação de assinatura com token secreto. As alternativas de infraestrutura (proxy, SSL, balanceamento) resolvem problemas de disponibilidade, criptografia ou diagnóstico, mas não de autenticidade. É exatamente essa distinção que separa a alternativa correta das demais.
Webhook em CI/CD
1Problema: falha na validação da mensagem
2Solução: verificação de assinatura (token secreto)
Remetente calcula hash (HMAC-SHA256)
Destinatário recalcula e compara
Autenticidade e integridade garantidas
3Outras medidas (não resolvem)
SSL/TLS → criptografia em trânsito
Balanceador → disponibilidade
Proxy reverso → diagnóstico
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Configurar uma "API reversa" para verificar e redirecionar mensagens não é uma prática padrão nem resolve o problema de validação. O termo "API reversa" não corresponde a um componente de infraestrutura reconhecido para esse fim. A validação de mensagens de webhook é feita no próprio endpoint, com verificação de assinatura, e não por redirecionamento para um endpoint alternativo.
Alternativa B — ❌ Incorreta
O SSL offloading (ou SSL/TLS) garante a criptografia da comunicação em trânsito, protegendo contra interceptação e adulteração por terceiros. No entanto, ele não valida a identidade do remetente nem a integridade do conteúdo da mensagem. Qualquer pessoa pode enviar uma requisição HTTPS para o endpoint; o SSL não impede que uma mensagem forjada seja processada. A falha descrita é de validação de autenticidade, não de criptografia.
Alternativa C — ❌ Incorreta
O balanceador de carga distribui as requisições entre múltiplos endpoints para melhorar disponibilidade e desempenho. Ele não adiciona nenhuma camada de validação de mensagem. Se o endpoint original não consegue validar a mensagem, um endpoint redundante terá o mesmo problema, a menos que a validação por assinatura seja implementada. O balanceamento resolve problemas de escala e redundância, não de autenticidade.
Alternativa D — ❌ Incorreta
O proxy reverso com logs detalhados é uma ferramenta de diagnóstico e monitoramento. Ele permite visualizar as requisições recebidas e identificar falhas de comunicação, mas não resolve o problema de validação. Os logs ajudam a entender por que a validação falhou, mas não implementam a validação em si. A solução correta é habilitar a verificação de assinatura, não apenas monitorar as falhas.
Alternativa E — ✅ Correta ⟵ GABARITO
Habilitar a verificação de assinatura (usando um token secreto) é exatamente a solução para o problema descrito. O GitLab assina cada mensagem de webhook com um token secreto compartilhado; o endpoint recalcula a assinatura e a compara com a recebida. Se forem iguais, a mensagem é autêntica e íntegra; se não, é rejeitada. Isso garante que apenas mensagens legítimas do GitLab sejam processadas, resolvendo a falha de validação e protegendo o pipeline contra requisições maliciosas.
NÃO CAIA NESSA!
A banca tenta confundir o candidato com soluções de infraestrutura de rede (proxy, SSL, balanceamento) que são válidas em outros contextos, mas não resolvem o problema específico de validação de mensagem. A palavra-chave no enunciado é "validar a mensagem enviada" — isso aponta diretamente para a verificação de assinatura, não para criptografia ou balanceamento. Fique atento: SSL protege o tráfego, mas não autentica o remetente; logs diagnosticam, mas não corrigem.
PEGA ESSA DICA!
Em questões sobre webhooks, identifique o problema central: se é validação de mensagem → verificação de assinatura com token; se é disponibilidade → balanceamento de carga; se é diagnóstico → logs/proxy reverso; se é criptografia em trânsito → SSL/TLS. Essa classificação rápida resolve a maioria das questões de prova sobre o tema.
Gabarito: letra E — habilitar a verificação de assinatura com token secreto para validar a integridade e autenticidade das mensagens do webhook.