- O vet é uma ferramenta de CLI que transforma a execução de scripts remotos de instalação no estilo
curl | bash em um processo mais seguro de "baixar → revisar → aprovar a execução"
- Oferece camadas de defesa por etapa, como verificação de mudanças no script (diff), lint com base em shellcheck (análise estática) e aprovação manual (executar após confirmação)
- Com um único comando (
vet https://example.com/install.sh), é possível fazer verificações automáticas de riscos potenciais, adulteração, erros de digitação e vulnerabilidades antes de executar scripts remotos
- A própria instalação também oferece suporte tanto ao método de "baixar e revisar" quanto ao método
curl | sh, e o código de instalação do próprio vet também pode ser verificado diretamente
- É uma solução confiável que permite obter ao mesmo tempo prevenção de riscos de segurança em ambientes de desenvolvimento/operação e automação/conveniência
Problema: execução indiscriminada de scripts remotos de instalação
- Muitos projetos open source e ferramentas orientam a instalação por meio de scripts remotos como
curl -sSL https://example.com/install.sh | bash
- Esse método envolve riscos críticos de segurança, como execução de código malicioso e execução de arquivos parciais, devido a adulteração do script, invasão do servidor, erro de rede etc.
A solução do vet: execução interativa segura
Como instalar
Método recomendado e seguro (baixar → revisar → executar)
- 1. Baixar o script de instalação:
- 2. Revisar diretamente o código do script baixado (ver com less, vim etc.):
less install_vet.sh
- 3. Executar manualmente após a revisão:
sh install_vet.sh
Instalação rápida (one-liner baseado em confiança)
Recursos e vantagens do vet
- Detecção de mudanças (diff): permite conferir o que mudou em relação a scripts executados anteriormente
- Lint automático (integração com shellcheck): diagnostica automaticamente vulnerabilidades, erros de digitação e código suspeito em scripts shell
- Aprovação explícita da execução (Confirm): controle direto da execução real com um clique/entrada
- Armazenamento automático de scripts e gerenciamento de histórico: permite rastrear com segurança até scripts de instalação usados com frequência
- Também garante instalação/atualização segura internamente
Conclusão
- O vet é uma alternativa segura ao
curl | bash necessária tanto para desenvolvedores quanto para operadores, tornando possível unir automação de instalação e segurança
- "Não execute simplesmente: valide com o vet antes de executar!"
1 comentários
Comentários do Hacker News
Em 90% dos casos, fico me perguntando como as pessoas realmente verificam a confiabilidade do software ao usar instaladores. Em alguns casos, o código é assinado, mas em muitos outros ele vem do mesmo servidor HTTPS sem verificação adicional. Se o código vier compilado, também vale perguntar se alguém faz diff. Executar instaladores aleatórios da internet não é uma boa prática, e vale lembrar que, ao instalar pela distribuição do sistema operacional, geralmente existem mecanismos de verificação muito melhores. Ainda assim, esses métodos não ajudam tanto assim a aumentar a confiança
Fico pensando no que acontece se alguém ficar inserindo pragmas
# shellcheck disable=em um script malicioso# shellcheck disable=. Essa mudança em si já é um sinal de alertaHá uma certa ironia aqui:
e depois
Acho uma solução muito legal. Já pensei nisso várias vezes, inclusive com o uv. Mas, na maioria dos casos, acaba sendo um compromisso prático porque todo mundo confia nos mantenedores do código
Ao ver essa discussão, comecei a pensar em suporte a ambientes privados como próximo passo do vet. Verificar scripts públicos é ótimo, mas também surge a necessidade de executar scripts de deploy de um repositório interno no GitHub ou de um servidor interno. Por isso abri uma solicitação de recurso para adicionar autenticação ao vet. O roadmap inclui suporte a
.netrc, variável de ambienteVET_TOKENe, no futuro, integração com gerenciadores de segredos como o HashiCorp Vault. Se tiver interesse, adoraria ouvir opiniões na issue do GitHub. Obrigado pelo feedbackSerá que daria para mostrar na página ou no readme como ele funciona na prática, ou um vídeo de demonstração? Fiquei curioso para saber se abre em pager ou editor, e como os avisos do ShellCheck são exibidos
lessou, se obatestiver instalado, um pager com highlight mais agradável), e não em um editor, para evitar alterações acidentais. Se o ShellCheck detectar problemas, eles são mostrados imediatamente no terminal com cores. Depois ele pergunta explicitamente se você quer continuar a revisão, no formato [y/N]. Exemplo: Obrigado pela boa sugestãoÉ uma pena que isso não funcione automaticamente como o padrão
curl | bash. No Windows, há recursos que escaneiam arquivos automaticamente quando o usuário tenta instalá-losA ideia é muito boa. Um dos maiores desafios nesse tipo de ferramenta de segurança é a não determinismo dos LLMs e o risco de privacidade de enviar código para APIs de terceiros. É exatamente por isso que o vet depende do ShellCheck. O ShellCheck é um linter determinístico, baseado em regras e que funciona totalmente offline. Para a mesma entrada, ele sempre fornece a mesma saída confiável. Para uma análise mais inteligente, acho que no futuro o caminho seria um AI rápida, rodando localmente dentro do vet. É uma boa questão para se pensar
Ideia realmente brilhante. Como recurso extra, também seria interessante enviar o conteúdo do shell script para um LLM para detectar partes suspeitas do ponto de vista de segurança
Oi HN, sou o desenvolvedor do vet. Sempre me senti desconfortável com o padrão
curl | bash, e achei que precisava de uma ferramenta que mostrasse o diff quando o script muda, rodasse o shellcheck e pedisse autorização explícita do usuário. Foi por isso que criei o vet. A instalação segue o mesmo princípio. Recomendo fortemente ler o script de instalação. Feedback é bem-vindo. O repositório é https://github.com/vet-run/vetwget -qO- https://getvet.sh, o servidor está retornandotext/html). Em vez disso, prefere recomendar baixar diretamente o install.sh. Como resposta ao pedido de feedback, compartilha esta dica de bash de “faça assim”: Esse método pede autorização sempre que o bash vai executar alguma coisa. Em scripts longos isso pode ser incômodo, então dá para personalizar com uma whitelist de comandos considerados seguros ou com uma opção de “remember”. Em relação ao sudo, um malware pode primeiro executarsudoem um comando inocente para deixar as credenciais em cache e, depois, executar outro comando comsudosem qualquer aviso. É mais seguro limpar o cache da sessão comsudo -kantes de rodar programas desconhecidos