SafeGuard

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

ProblemaPor qué importa
Backdoors y ejecución remota de códigoDan el control total del servidor a quien los puso
Código ofuscadoSuele esconder backdoors o robo de licencias
Webhooks de Discord y credenciales en el códigoSe pueden leer y abusar de ellos
Eventos donde el cliente elige el importe, el precio o el objetivoPermiten generar dinero o actuar sobre otros jugadores
Eventos sensibles sin comprobar permisosCualquier jugador puede llamarlos
SQL construido con datos del clientePermite leer o cambiar la base de datos
Eventos sin EventShieldMuestra cuántos eventos están expuestos

Antes de empezar

  1. Pide el escáner en Discord: se distribuye bajo petición.
  2. Instala Node.js 24 o posterior en la máquina donde están los resources.
  3. En Integraciones → Claves de API, crea una clave con los permisos del escáner. Cópiala enseguida: solo se muestra una vez.
  4. 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:

  1. Backdoor o código ofuscado que no reconoces: quita el resource, no intentes corregirlo. Cambia las contraseñas y claves que usaba ese servidor.
  2. Webhooks y credenciales: crea unos nuevos en el servicio de origen. Borrarlos del código no basta, porque los antiguos pueden estar ya copiados.
  3. Eventos inseguros: corrige el script o habla con su autor. La validación debe hacerse en el servidor.
  4. 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.