mirror of
https://github.com/MervinPraison/PraisonAI.git
synced 2026-11-11 03:31:27 -10:00
Addresses remaining attack surface from security advisories: GHSA-3qg8-5g3r-79v5 (JWT signing key - CRITICAL): auth_service.py: PLATFORM_ENV no longer defaults to 'dev' when unset. When PLATFORM_JWT_SECRET is not set and PLATFORM_ENV is not explicitly 'dev', an ephemeral random secret is auto-generated with a warning. This prevents production deployments from silently using the well-known 'dev-secret-change-me' key. GHSA-vg22-4gmj-prxw (unauthenticated eval - CRITICAL): Replaced all eval() calls in official examples and benchmarks with an AST-based safe math evaluator that only allows numeric literals and arithmetic operators. Files fixed: - examples/python/a2a/a2a-server.py (the primary advisory target) - examples/mcp/multi_server.py - examples/python/mcp/mcp-tools-server.py - examples/python/mcp/mcp-tools-server-sse.py - examples/mcp_server/custom_tools_server.py - examples/python/mcp_server_example.py - examples/python/custom_tools/tools_with_latency.py - examples/eval/reliability_example.py - src/praisonai-agents/benchmarks/real_benchmark.py The character-filter approach (allowlist '0123456789+-*/.()') was insufficient because () enables attribute access chains. AST-based evaluation only permits numeric literals and binary/unary arithmetic. GHSA-hvhp-v2gc-268q and GHSA-9cr9-25q5-8prj (file read/write): Already fixed in prior commits via _resolve_rule_path() and _resolve_cwd_yaml_path() containment helpers. Co-authored-by: ulsreall <[email protected]>