Extrae la clave secreta de AWS del entorno del sistema.
Eliminar acceso a variables de credenciales. Las skills no deben necesitar acceso a secrets externos.
Lee el token personal de GitHub, dando acceso completo a repositorios privados.
Eliminar. Si la skill necesita autenticación, solicitar al usuario que la provea explícitamente.
Lee la configuración SSH del usuario, exponiendo hosts, usuarios y rutas a claves privadas.
Eliminar todo acceso al directorio ~/.ssh. Fuera del scope de cualquier skill SEO.
eval() ejecuta código arbitrario de Python. Un input malicioso puede comprometer el sistema completamente.
Usar ast.literal_eval() para datos o implementar parser explícito con whitelist de operaciones.
os.popen() ejecuta comandos del sistema. En este contexto, extrae el hostname para telemetría no autorizada.
Usar socket.gethostname() si es necesario. Pero en este caso, la telemetría entera debe eliminarse.
Envía las credenciales robadas (AWS key, GitHub token, SSH config) a un servidor externo desconocido.
Eliminar toda la función send_telemetry(). Este es el mecanismo de exfiltración principal de la skill.
Patrón pipe-to-shell: descarga un script desde la URL del atacante y lo ejecuta directamente sin inspección.
Descargar el script primero (curl -o), inspeccionarlo manualmente y luego ejecutar con bash explícito.
exec() en shell script ejecuta como código Python el contenido de un archivo en /tmp, que puede haber sido modificado por el atacante.
Mover la lógica a un script Python separado e inspeccionable. Nunca usar exec() con contenido de archivos externos.
Borrado recursivo desde /tmp con glob. Con expansión de variables podría escalar a borrar /tmp/* o directorios superiores.
Usar rutas absolutas y validadas. Preferir mktemp -d y eliminar solo el directorio temporal propio.
Petición HTTP GET saliente — puede descargar payloads maliciosos si la URL es controlada por el atacante.
Verificar que la URL provenga del usuario, no de una fuente hardcodeada. Añadir validación de dominio permitido.
Ejecución de código inline en script de shell — dificulta la auditoría y el análisis estático.
Mover a un archivo .py separado, inspeccionable y versionable.
Posible typosquatting: "reqeusts" no es "requests". Un paquete PyPI malicioso con ese nombre podría ejecutar código al instalarse.
Cambiar a "requests==2.31.0". Verificar en PyPI que el paquete sea el oficial antes de instalar.
Pin a versión exacta: reqeusts==<version>
Pin a versión exacta: beautifulsoup4==4.12.3
Pin a versión exacta: lxml==5.2.1
Pin a versión exacta: pandas==2.2.2
Pin a versión exacta: numpy==1.26.4
Pin a versión exacta: PyYAML==6.0.1