Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Resolución de Problemas ​

Esta página cubre los problemas más comunes al ejecutar PRX-SD, junto con sus causas y soluciones.

Error en la Actualización de la Base de Datos de Firmas ​

Síntomas: sd update falla con un error de red, tiempo de espera o discrepancia SHA-256.

Posibles Causas:

  • Sin conexión a internet o firewall bloqueando HTTPS de salida
  • El servidor de actualizaciones está temporalmente no disponible
  • Un proxy o firewall corporativo está modificando la respuesta

Soluciones:

  1. Verifica la conectividad con el servidor de actualizaciones:
bash
curl -fsSL https://api.github.com/repos/openprx/prx-sd-signatures/commits?per_page=1
  1. Usa el script de actualización sin conexión si tienes restricciones de red:
bash
# On a machine with internet access
./tools/update-signatures.sh

# Copy the signatures directory to the target machine
scp -r ~/.prx-sd/signatures user@target:~/.prx-sd/
  1. Fuerza la nueva descarga para limpiar cualquier caché corrupto:
bash
sd update --force
  1. Usa un servidor de actualizaciones personalizado si alojas un espejo privado:
bash
sd config set update_server_url "https://internal-mirror.example.com/prx-sd/v1"
sd update
  1. Verifica la discrepancia SHA-256 -- esto generalmente significa que la descarga se corrompió en tránsito. Inténtalo de nuevo, o descarga manualmente:
bash
sd update --force

TIP

Ejecuta sd update --check-only para verificar si hay una actualización disponible sin descargarla.

El Escaneo es Lento ​

Síntomas: Escanear un directorio tarda mucho más de lo esperado.

Posibles Causas:

  • Escaneo de sistemas de archivos montados en red (NFS, CIFS, SSHFS)
  • Las reglas YARA se compilan en cada escaneo (sin compilación en caché)
  • Demasiados hilos compitiendo por I/O en discos giratorios
  • Recursión de archivos en grandes archivos comprimidos anidados

Soluciones:

  1. Aumenta el número de hilos para almacenamiento respaldado por SSD:
bash
sd config set scan.threads 16
  1. Reduce el número de hilos para discos giratorios (limitados por I/O):
bash
sd config set scan.threads 2
  1. Excluye rutas lentas o irrelevantes:
bash
sd config set scan.exclude_paths '["/mnt/nfs", "/proc", "/sys", "/dev", "*.iso"]'
  1. Deshabilita el escaneo de archivos comprimidos si no es necesario:
bash
sd config set scan.scan_archives false
  1. Reduce la profundidad de archivos comprimidos para evitar archivos profundamente anidados:
bash
sd config set scan.max_archive_depth 1
  1. Usa el indicador --exclude para escaneos individuales:
bash
sd scan /home --exclude "*.iso" --exclude "node_modules"
  1. Habilita el registro de depuración para encontrar cuellos de botella:
bash
sd --log-level debug scan /path/to/dir 2>&1 | grep -i "slow\|timeout\|skip"

Errores de Permiso de fanotify ​

Síntomas: sd monitor --block falla con "Permission denied" u "Operation not permitted".

Posibles Causas:

  • No se ejecuta como root
  • El kernel de Linux no tiene CONFIG_FANOTIFY_ACCESS_PERMISSIONS habilitado
  • AppArmor o SELinux está bloqueando el acceso a fanotify

Soluciones:

  1. Ejecuta como root:
bash
sudo sd monitor /home /tmp --block
  1. Verifica la configuración del kernel:
bash
zgrep FANOTIFY /proc/config.gz
# Should show: CONFIG_FANOTIFY=y and CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
  1. Usa el modo sin bloqueo como alternativa (aún detecta amenazas, pero no impide el acceso a archivos):
bash
sd monitor /home /tmp

WARNING

El modo de bloqueo solo está disponible en Linux con soporte fanotify. En macOS (FSEvents) y Windows (ReadDirectoryChangesW), el monitoreo en tiempo real opera en modo solo detección.

  1. Verifica SELinux/AppArmor:
bash
# SELinux: check for denials
ausearch -m AVC -ts recent | grep prx-sd

# AppArmor: check for denials
dmesg | grep apparmor | grep prx-sd

Falso Positivo (Archivo Legítimo Detectado como Amenaza) ​

Síntomas: Un archivo conocido como seguro es marcado como Sospechoso o Malicioso.

Soluciones:

  1. Verifica qué activó la detección:
bash
sd scan /path/to/file --json

Observa los campos detection_type y threat_name:

  • HashMatch -- el hash del archivo coincide con un hash de malware conocido (falso positivo improbable)
  • YaraRule -- una regla YARA coincidió con patrones en el archivo
  • Heuristic -- el motor heurístico puntuó el archivo por encima del umbral
  1. Para falsos positivos heurísticos, aumenta el umbral:
bash
# Default is 60; raise to 70 for fewer false positives
sd config set scan.heuristic_threshold 70
  1. Excluye el archivo o directorio del escaneo:
bash
sd config set scan.exclude_paths '["/path/to/safe-file", "/opt/known-good/"]'
  1. Para falsos positivos de YARA, puedes excluir reglas específicas eliminándolas o comentándolas en el directorio ~/.prx-sd/yara/.

  2. Lista blanca por hash -- agrega el SHA-256 del archivo a una lista de permitidos local (función futura). Como solución temporal, excluye el archivo por ruta.

TIP

Si crees que una detección es un falso positivo genuino, repórtalo en github.com/openprx/prx-sd/issues con el hash del archivo (no el archivo en sí) y el nombre de la regla.

El Demonio No Puede Iniciarse ​

Síntomas: sd daemon se cierra inmediatamente, o sd status muestra "stopped".

Posibles Causas:

  • Otra instancia ya está en ejecución (existe el archivo PID)
  • El directorio de datos es inaccesible o está corrupto
  • Falta la base de datos de firmas

Soluciones:

  1. Verifica si hay un archivo PID obsoleto:
bash
cat ~/.prx-sd/prx-sd.pid
# If the listed PID is not running, remove the file
rm ~/.prx-sd/prx-sd.pid
  1. Verifica el estado del demonio:
bash
sd status
  1. Ejecuta en primer plano con registro de depuración para ver los errores de inicio:
bash
sd --log-level debug daemon /home /tmp
  1. Asegúrate de que existen las firmas:
bash
sd info
# If hash_count is 0, run:
sd update
  1. Verifica los permisos del directorio:
bash
ls -la ~/.prx-sd/
# All directories should be owned by your user and writable
  1. Reinicializa si el directorio de datos está corrupto:
bash
# Back up existing data
mv ~/.prx-sd ~/.prx-sd.bak

# Re-run any command to trigger first-run setup
sd info

# Re-download signatures
sd update

Ajuste del Nivel de Registro ​

Problema: Necesitas más información de diagnóstico para depurar un problema.

PRX-SD admite cinco niveles de registro, de más a menos detallado:

NivelDescripción
traceTodo, incluyendo detalles de coincidencia YARA por archivo
debugOperaciones detalladas del motor, carga de plugins, búsquedas de hash
infoProgreso de escaneo, actualizaciones de firmas, registro de plugins
warnAdvertencias y errores no fatales (predeterminado)
errorSolo errores críticos
bash
# Maximum verbosity
sd --log-level trace scan /tmp

# Debug-level for troubleshooting
sd --log-level debug monitor /home

# Redirect logs to a file for analysis
sd --log-level debug scan /home 2> /tmp/prx-sd-debug.log

TIP

El indicador --log-level es global y debe ir antes del subcomando:

bash
# Correct
sd --log-level debug scan /tmp

# Incorrect (flag after subcommand)
sd scan /tmp --log-level debug

Uso Elevado de Memoria ​

Síntomas: El proceso sd consume más memoria de la esperada, especialmente durante escaneos de directorios grandes.

Posibles Causas:

  • Escaneo de un número muy grande de archivos con muchos hilos
  • Las reglas YARA se compilan en memoria (38.800+ reglas usan memoria significativa)
  • El escaneo de archivos comprimidos descomprime en memoria archivos grandes
  • Plugins WASM con límites max_memory_mb elevados

Soluciones:

  1. Reduce el número de hilos (cada hilo carga su propio contexto YARA):
bash
sd config set scan.threads 2
  1. Limita el tamaño máximo de archivo para omitir archivos muy grandes:
bash
# Limit to 50 MiB
sd config set scan.max_file_size 52428800
  1. Deshabilita el escaneo de archivos comprimidos en sistemas con memoria limitada:
bash
sd config set scan.scan_archives false
  1. Reduce la profundidad de archivos comprimidos:
bash
sd config set scan.max_archive_depth 1
  1. Verifica los límites de memoria de los plugins WASM -- revisa ~/.prx-sd/plugins/*/plugin.json en busca de plugins con valores max_memory_mb elevados y redúcelos.

  2. Monitorea la memoria durante los escaneos:

bash
# In another terminal
watch -n 1 'ps aux | grep sd | grep -v grep'
  1. Para el demonio, monitorea la memoria a lo largo del tiempo:
bash
sd status
# Shows PID; use top/htop to watch memory

Otros Problemas Comunes ​

Advertencia "No YARA rules found" ​

El directorio de reglas YARA está vacío. Vuelve a ejecutar la configuración inicial o descarga las reglas:

bash
sd update
# Or manually trigger setup by removing the yara directory:
rm -rf ~/.prx-sd/yara
sd info  # triggers first-run setup with embedded rules

Error "Failed to open signature database" ​

La base de datos de firmas LMDB puede estar corrupta:

bash
rm -rf ~/.prx-sd/signatures
sd update

Adblock: "insufficient privileges" ​

Los comandos de habilitar/deshabilitar adblock modifican el archivo hosts del sistema y requieren root:

bash
sudo sd adblock enable
sudo sd adblock disable

El Escaneo Omite Archivos con Error "timeout" ​

Los tiempos de espera individuales de archivos tienen un predeterminado de 30 segundos. Auméntalos para archivos complejos:

bash
sd config set scan.timeout_per_file_ms 60000

Obtener Ayuda ​

Si ninguna de las soluciones anteriores resuelve tu problema:

  1. Revisa los problemas existentes: github.com/openprx/prx-sd/issues
  2. Crea un nuevo problema con:
    • Versión de PRX-SD (sd info)
    • Sistema operativo y versión del kernel
    • Salida del registro de depuración (sd --log-level debug ...)
    • Pasos para reproducir

Próximos Pasos ​

Released under the Apache-2.0 License.