Escáner de resources
El escáner analiza la carpeta resources de tu servidor y te dice qué scripts tienen problemas de seguridad. Se ejecuta en tu máquina, y el informe enviado al panel solo lleva los resultados, nunca tu código.
Úsalo después de instalar scripts nuevos, antes de actualizar el servidor y siempre que compres un script que no hayas escrito.
Qué busca
| Problema | Por qué importa |
|---|---|
| Backdoors y ejecución remota de código | Dan el control total del servidor a quien los puso |
| Código ofuscado | Suele esconder backdoors o robo de licencias |
| Webhooks de Discord y credenciales en el código | Se pueden leer y abusar de ellos |
| Eventos donde el cliente elige el importe, el precio o el objetivo | Permiten generar dinero o actuar sobre otros jugadores |
| Eventos sensibles sin comprobar permisos | Cualquier jugador puede llamarlos |
| SQL construido con datos del cliente | Permite leer o cambiar la base de datos |
| Eventos sin EventShield | Muestra cuántos eventos están expuestos |
Antes de empezar
- Pide el escáner en Discord: se distribuye bajo petición.
- Instala Node.js 24 o posterior en la máquina donde están los resources.
- En Integraciones → Claves de API, crea una clave con los permisos del escáner. Cópiala enseguida: solo se muestra una vez.
- Copia el ID de la organización. Es el código que sigue a
/o/en la dirección del panel.
Analizar y enviar el informe
Para ver los resultados solo en el terminal:
safeguard-scan scan ./resources
Para verlos en el panel, en Operaciones → Escáner:
safeguard-scan scan ./resources --upload --api https://api.safeguardac.pt --org ID_DE_LA_ORGANIZACION --key TU_CLAVE
Si la máquina no puede enviar nada, guarda el informe en un archivo y cárgalo en el panel con Subir informe:
safeguard-scan scan ./resources --out informe.json
Ese archivo incluye la línea de código de cada problema, que puede contener un webhook o una contraseña. No lo compartas.
Para no dejar la clave en el historial del terminal, defínela en la variable SAFEGUARD_API_KEY y omite --key.
En el plan mensual, cada envío cuenta para el límite de 5 análisis al mes. Analizar sin enviar no cuenta.
Leer los resultados
- Puntuación de seguridad: va de 0 a 100. Compárala entre análisis para ver si mejora, en lugar de tratarla como una nota absoluta.
- Gravedad: empieza por las críticas y altas. Una crítica puede significar un backdoor activo.
- Corrección: cada resultado indica el archivo, la línea, el impacto y qué hacer.
- Estado: marca cada resultado como Abierto, Reconocido, Corregido o Falso positivo.
Qué hacer con cada tipo:
- Backdoor o código ofuscado que no reconoces: quita el resource, no intentes corregirlo. Cambia las contraseñas y claves que usaba ese servidor.
- Webhooks y credenciales: crea unos nuevos en el servicio de origen. Borrarlos del código no basta, porque los antiguos pueden estar ya copiados.
- Eventos inseguros: corrige el script o habla con su autor. La validación debe hacerse en el servidor.
- Después de corregir: ejecuta el escáner otra vez y confirma que el resultado desapareció.
Proteger eventos con EventShield
El informe muestra cuántos eventos están protegidos. Para añadir EventShield a los resources con eventos, mira primero qué cambiaría:
safeguard-scan install-shield ./resources
Si todo está bien, aplícalo. Cada manifiesto modificado guarda una copia .safeguard-backup:
safeguard-scan install-shield ./resources --apply
Después reinicia esos resources. Pruébalo en un servidor de pruebas antes de aplicarlo en producción.
Límites
- Es un análisis estático: lee el código sin ejecutarlo, así que puede dar falsos positivos y dejar pasar problemas bien escondidos.
- El código compilado u ofuscado no se puede leer por completo. Un informe limpio no demuestra que un script sea seguro.
- El escáner no sustituye al anticheat: analiza tus scripts, no a los jugadores.
Usarlo en automatización
El comando termina con código 2 cuando hay resultados críticos, así que puede detener un despliegue. Con --strict-eventshield también puede fallar por la cobertura de eventos. --json escribe el informe en el terminal y --server lo asocia a un servidor.