- alternativa más segura si es obvia
Lo que NO pude verificar:
- contenidos de dependencias, binarios de lanzamiento precompilados, historial de git, si las estrellas son reales
Ofrece seguimientos solo si son útiles: escanear un repositorio de dependencia específico, fijar un commit o explicar un archivo marcado línea por línea.
### 4. Consejos para ejecución segura (adapta a lo que se encontró)
- Incluso para 🟢: ejecuta primero en una máquina virtual/contenedor desechable/máquina de repuesto, como usuario no administrador, sin sesiones iniciadas, sin perfil de navegador y sin secretos/tokens/llaves SSH al alcance.
- Fija un hash de commit específico después de revisarlo, para que un push posterior no pueda cambiar lo que revisaste.
- npm: `npm install --ignore-scripts` primero, luego revisa antes de habilitar scripts. Python: prefiere wheels, lee `setup.py` primero; `pip install --only-binary=:all:` cuando sea posible.
- Dependencias: ejecuta una herramienta de auditoría (`npm audit`, `pip-audit`, OSV-Scanner, OpenSSF Scorecard) dentro del entorno aislado.
- Si es un lanzamiento/ejecutable precompilado: compila desde el código fuente que leíste, o no lo ejecutes.
- Si el usuario ya ejecutó algo sospechoso: desconéctate de la red, deja de ingresar contraseñas en esa máquina, cambia contraseñas importantes y revoca tokens/sesiones desde un dispositivo limpio diferente, activa o vuelve a verificar la 2FA, ejecuta un escaneo completo de malware o reinstala, y contacta al banco/TI si hay dinero o cuentas de trabajo involucradas.
## Lo que verifica el escáner (para que puedas explicarlo)
| Área | Ejemplos |
|---|---|
| Señales de repositorio/propietario | antigüedad del repo, antigüedad de la cuenta del propietario, número de commits vs estrellas, relación estrellas/forks, forks, colaborador único, issues deshabilitados, descargas de lanzamiento que incluyen binarios |
| Ejecución al instalar | scripts npm pre/post/install, `setup.py` haciendo red/ejecución, backends de compilación personalizados, `build.rs`, hooks de git, `runOn: folderOpen` de VS Code, comandos de dev-container, disparadores de CI arriesgados |
| Descargar y ejecutar | `curl | bash`, `irm | iex`, base64 canalizado a shell, PowerShell codificado, decodificar luego `exec`, ejecución de código descargado |
| Robo de datos | almacenes de contraseñas/cookies del navegador, carteras de criptomonedas, credenciales SSH/nube/registro, tokens de Discord, llavero/DPAPI, volcados de variables de entorno, portapapeles, keylogger/capturas de pantalla |
| Canales de exfiltración | webhooks de Discord, API de Telegram bot, webhook.site/ngrok/sitios de paste, URLs de IP sin resolver, acortadores de URL |
| Control/persistencia | reverse shells, desactivación de antivirus/cortafuegos, agentes de inicio/cron/lanzamiento, autoborrado, detección de VM/sandbox |
| Ofuscación | grandes blobs de alta entropía, cargas hex-escapeadas, líneas únicas gigantes, Unicode de ancho cero/bidireccional oculto (Trojan Source) |
| Cadena de suministro | nombres de dependencias parecidos, dependencias git/URL, índices pip personalizados, submódulos, ejecutables/archivos empaquetados, enlaces simbólicos |
| Dirigido a IA | frases de inyección de instrucciones en READMEs/código |
Las coincidencias dentro de `tests/`, `docs/`, `examples/` se degradan automáticamente un nivel (a menudo son solo discusión), excepto Unicode oculto, inyección IA, ejecución automática y hallazgos de binarios.