- vet es una herramienta CLI que convierte la ejecución de scripts remotos de instalación con
curl | bash en un proceso más seguro de "descargar → revisar → aprobar la ejecución"
- Ofrece defensas por etapas, como revisión de cambios en el script (diff), lint basado en shellcheck (análisis estático) y aprobación manual (ejecutar tras confirmar)
- Con un solo comando (
vet https://example.com/install.sh), permite revisar automáticamente riesgos potenciales, manipulación, errores tipográficos y vulnerabilidades antes de ejecutar un script remoto
- La instalación también admite tanto el método de "descargar y luego revisar" como el de
curl | sh, y es posible inspeccionar directamente el código de instalación del propio vet
- Es una solución confiable que permite prevenir riesgos de seguridad en entornos de desarrollo y operación sin perder automatización ni comodidad
Problema: ejecución indiscriminada de scripts remotos de instalación
- Muchos proyectos y herramientas de código abierto recomiendan instalarse con scripts remotos como
curl -sSL https://example.com/install.sh | bash
- Este método conlleva riesgos de seguridad críticos, como ejecución de código malicioso o ejecución de archivos parciales, debido a manipulación del script, hackeo del servidor o errores de red
La solución de vet: ejecución interactiva segura
Cómo instalarlo
Método recomendado y seguro (descargar → revisar → ejecutar)
- 1. Descargar el script de instalación:
- 2. Revisar directamente el código del script descargado (por ejemplo, con less o vim):
less install_vet.sh
- 3. Ejecutarlo manualmente después de revisarlo:
sh install_vet.sh
Instalación rápida (one-liner basado en confianza)
Características y ventajas de vet
- Detección de cambios (diff): permite ver qué partes cambiaron frente a un script ejecutado anteriormente
- Lint automático (integración con shellcheck): diagnostica automáticamente vulnerabilidades, errores tipográficos y código sospechoso en scripts de shell
- Aprobación explícita de ejecución (Confirm): control directo de la ejecución real con un clic o una confirmación manual
- Guardado automático de scripts y gestión de historial: permite rastrear de forma segura incluso scripts de instalación usados con frecuencia
- También garantiza instalaciones y actualizaciones seguras internamente
Conclusión
- vet es una alternativa segura a
curl | bash que necesitan tanto desarrolladores como operadores, y hace posible combinar automatización de instalación y seguridad
- "¡No lo ejecutes sin más; valídalo con vet antes de ejecutarlo!"
1 comentarios
Comentarios de Hacker News
diff. Ejecutar instaladores tomados de internet a ciegas no es una buena práctica, y vale la pena mencionar que, si se instala desde la distribución del sistema operativo, normalmente existen mecanismos de verificación mucho mejores. Aun así, estos métodos no ayudan tanto a aumentar la confianza.# shellcheck disable=en un script malicioso.diff. Aunque el linter no diga nada, eldiffdetecta la inserción de código sospechoso como# shellcheck disable=. Ese cambio en sí ya es una señal de alerta.install.shdirectamente..netrc, la variable de entornoVET_TOKENy, más adelante, integración con gestores de secretos como HashiCorp Vault. Si les interesa, me gustaría escuchar opiniones en el issue de GitHub. Gracias por el feedback.less, o un pager con mejor resaltado sibatestá instalado), y no en un editor para evitar modificaciones accidentales. Si ShellCheck detecta un problema, lo muestra directamente en la terminal con colores. Después pregunta explícitamente si quieres continuar con la revisión en formato[y/N]. Ejemplo: Gracias por la buena sugerencia.curl | bash. En Windows hay funciones que escanean automáticamente los archivos cuando el usuario intenta instalarlos.curl | bash, y sentía que hacía falta una herramienta que mostrara eldiffcuando cambiara el script, corriera shellcheck y pidiera autorización explícita al usuario. Por eso hice vet. La instalación sigue el mismo principio. Les recomiendo de verdad leer el script de instalación. Feedback bienvenido. El repo está en https://github.com/vet-run/vet.diffcuando el script cambia y correr shellcheck”. Me pregunto si has pensado realmente cuál es el papel de shellcheck y en qué casos creías que eldiffiba a funcionar. “Pedir autorización explícita antes de ejecutar” tampoco sirve si el cambio solo modifica la indentación. Un shell script pequeño se puede leer rápido, pero los instaladores grandes suelen tener estilos de código difíciles de seguir por razones legítimas. No entiendo qué filosofía dice seguir vet. De hecho, creo que lo que hace vet se parece bastante al patrón que usan los atacantes para distribuir malware (por ejemplo, si bajas conwget -qO- https://getvet.sh, el servidor está devolviendotext/html). Más bien recomendaría traer directamente install.sh. Como respuesta al pedido de feedback, comparto este tip de bash: Este método pide autorización cada vez que bash intenta ejecutar algo. Puede ser molesto con scripts largos, así que se podría personalizar con una whitelist de comandos considerados seguros o con una opción de “remember”. En cuanto asudo, el malware puede primero ejecutarsudoen un comando inocuo para dejar las credenciales cacheadas y luego volver a ejecutarsudomás adelante sin ninguna advertencia. Es más seguro limpiar la caché de sesión consudo -kantes de ejecutar programas desconocidos.