PraisonAI Affected by Decompression Bomb DoS via Recipe Bundle Extraction Without Size Limits
PraisonAI is a multi-agent teams system. Prior to 4.5.128, the _safe_extractall() function in PraisonAI's recipe registry validates archive members against path traversal attacks but performs no checks on individual member sizes, cumulative extracted size, or member count before calling tar.extractall(). An attacker can publish a malicious recipe bundle containing highly compressible data (e.g., 10GB of zeros compressing to ~10MB) that exhausts the victim's disk when pulled via LocalRegistry.pull() or HttpRegistry.pull(). This vulnerability is fixed in 4.5.128.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-40148
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 08:45 UTC · Revision 1
Source evidence
PraisonAI Affected by Decompression Bomb DoS via Recipe Bundle Extraction Without Size Limits
core-osv · Original sourcePublished 9 Apr 2026, 21:22 UTC
PraisonAI is a multi-agent teams system. Prior to 4.5.128, the _safe_extractall() function in PraisonAI's recipe registry validates archive members against path traversal attacks but performs no checks on individual member sizes, cumulative extracted size, or member count before calling tar.extractall(). An attacker can publish a malicious recipe bundle containing highly compressible data (e.g., 10GB of zeros compressing to ~10MB) that exhausts the victim's disk when pulled via LocalRegistry.pull() or HttpRegistry.pull(). This vulnerability is fixed in 4.5.128.
osv:CVE-2026-40148
Complete source record
{
"id": "232b8ea9919a7d71f559b5b5da3875278ae69a1f48f73fd6ab71b5cfdd0b89f8",
"url": "https://osv.dev/vulnerability/CVE-2026-40148",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "PraisonAI Affected by Decompression Bomb DoS via Recipe Bundle Extraction Without Size Limits",
"summary": "PraisonAI is a multi-agent teams system. Prior to 4.5.128, the _safe_extractall() function in PraisonAI's recipe registry validates archive members against path traversal attacks but performs no checks on individual member sizes, cumulative extracted size, or member count before calling tar.extractall(). An attacker can publish a malicious recipe bundle containing highly compressible data (e.g., 10GB of zeros compressing to ~10MB) that exhausts the victim's disk when pulled via LocalRegistry.pull() or HttpRegistry.pull(). This vulnerability is fixed in 4.5.128.",
"evidence": "osv:CVE-2026-40148",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-40148",
"aliases": [
"CVE-2026-40148",
"GHSA-f2h6-7xfr-xm8w",
"PYSEC-2026-2912"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/mervinpraison/praisonai",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "b4e3a8a84ade44ac3dd9102b792cdb4311a95937"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "4.5.128"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"cpe": "cpe:2.3:a:praison:praisonai:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "4.5.128"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v4.5.126",
"v4.5.125",
"v4.5.124",
"v4.5.123",
"v4.5.122",
"v4.5.121",
"v4.5.120",
"v4.5.119",
"v4.5.118",
"v4.5.117",
"v4.5.115",
"v4.5.113",
"v4.5.112",
"v4.5.111",
"v4.5.110",
"v4.5.109",
"v4.5.108",
"v4.5.107",
"v4.5.106",
"v4.5.105",
"v4.5.104",
"v4.5.103",
"v4.5.102",
"v4.5.101",
"v4.5.100",
"v4.5.98",
"v4.5.96",
"v4.5.97",
"v4.5.95",
"v4.5.94",
"v4.5.93",
"v4.5.90",
"v4.5.88",
"v4.5.87",
"v4.5.85",
"v4.5.83",
"v4.5.82",
"v4.5.81",
"v4.5.80",
"v4.5.79",
"v4.5.78",
"v4.5.77",
"v4.5.76",
"v4.5.74",
"v4.5.73",
"v4.5.72",
"v4.5.71",
"v4.5.70",
"v4.5.69",
"v4.5.68",
"v4.5.67",
"v4.5.65",
"v4.5.64",
"v4.5.63",
"v4.5.62",
"v4.5.60",
"v4.5.59",
"v4.5.58",
"v4.5.57",
"v4.5.56",
"v4.5.55",
"v4.5.54",
"v4.5.52",
"v4.5.51",
"v4.5.49",
"v4.5.48",
"v4.5.46",
"v4.5.45",
"v4.5.44",
"v4.5.43",
"v4.5.42",
"v4.5.41",
"v4.5.40",
"v4.5.39",
"v4.5.38",
"v4.5.37",
"v4.5.36",
"v4.5.35",
"v4.5.34",
"v4.5.33",
"v4.5.32",
"v4.5.31",
"v4.5.30",
"v4.5.29",
"v4.5.28",
"v4.5.27",
"v4.5.26",
"v4.5.25",
"v4.5.24",
"v4.5.23",
"v4.5.22",
"v4.5.21",
"v4.5.20",
"v4.5.19",
"v4.5.18",
"v4.5.17",
"v4.5.16",
"v4.5.15",
"v4.5.14",
"v4.5.13",
"v4.5.12",
"v4.5.11",
"v4.5.10",
"v4.5.9",
"v4.5.8",
"v4.5.7",
"v4.5.6",
"v4.5.5",
"v4.5.3",
"v4.5.2",
"v4.5.1",
"v4.5.0",
"v4.4.12",
"v4.4.11",
"v4.4.10",
"v4.4.9",
"v4.4.8",
"v4.4.7",
"v4.4.6",
"v4.4.5",
"v0.2.0",
"praisonai@0.2.0",
"praisonai-derive@0.2.0",
"praisonai-cli@0.2.0",
"v2.8.0",
"v2.7.9",
"v2.7.8",
"v2.7.7",
"v2.7.6",
"v2.7.5",
"v2.7.4",
"v2.7.3",
"v2.7.2",
"v2.7.1",
"v2.7.0",
"v2.6.8",
"v2.6.7",
"v2.6.6",
"v2.6.5",
"v2.6.4",
"v2.6.3",
"v2.6.2",
"v2.6.1",
"v2.6.0",
"v2.5.7",
"v2.5.6",
"v2.5.5",
"v2.5.4",
"v2.5.3",
"v2.5.2",
"v2.5.0",
"v2.4.4",
"v2.4.3",
"v2.4.2",
"v2.4.1",
"v2.4.0",
"v2.3.87",
"v2.3.86",
"v2.3.85",
"v2.3.84",
"v2.3.83",
"v2.3.82",
"v2.3.81",
"v2.3.80",
"v2.3.79",
"v2.3.78",
"v2.3.77",
"v2.3.76",
"v2.3.75",
"v2.3.74",
"v2.3.73",
"v2.3.72",
"v2.3.71",
"v2.3.70",
"v2.3.69",
"v2.3.68",
"v2.3.67",
"v2.3.66",
"v2.3.65",
"v2.3.64",
"v2.3.63",
"v2.3.62",
"v2.3.61",
"v2.3.60",
"v2.3.59",
"v2.3.58",
"v2.3.57",
"v2.3.56",
"v2.3.55",
"v2.3.54",
"v2.3.53",
"v2.3.52",
"v2.3.51",
"v2.3.50",
"v2.3.49",
"v2.3.48",
"v2.3.47",
"v2.3.46",
"v2.3.45",
"v2.3.44",
"v2.3.43",
"v2.3.42",
"v2.3.41",
"v2.3.40",
"v2.3.39",
"v2.3.38",
"v2.3.37",
"v2.3.36",
"v2.3.35",
"v2.3.34",
"v2.3.33",
"v2.3.32",
"v2.3.31",
"v2.3.30",
"v2.3.29",
"v2.3.28",
"v2.3.27",
"v2.3.26",
"v2.3.25",
"v2.3.24",
"v2.3.23",
"v2.3.22",
"v2.3.21",
"v2.3.20",
"v2.3.19",
"v2.3.18",
"v2.3.16",
"v2.3.15",
"v2.3.14",
"v2.3.13",
"v2.3.12",
"v2.3.11",
"v2.3.10",
"v2.3.9",
"v2.3.8",
"v2.3.7",
"v2.3.6",
"v2.3.5",
"v2.3.4",
"v2.3.3",
"v2.3.2",
"v2.3.1",
"v2.3.0",
"v2.2.99",
"v2.2.98",
"v2.2.97",
"v2.2.96",
"v2.2.93",
"v2.2.91",
"v2.2.90",
"v2.2.89",
"v2.2.87",
"v2.2.86",
"v2.2.85",
"v2.2.84",
"v2.2.83",
"v2.2.82",
"v2.2.81",
"v2.2.80",
"v2.2.79",
"v2.2.78",
"v2.2.77",
"v2.2.76",
"v2.2.75",
"v2.2.74",
"v2.2.73",
"v2.2.72",
"v2.2.71",
"v2.2.70",
"v2.2.69",
"v2.2.68",
"v2.2.67",
"v2.2.66",
"v2.2.65",
"v2.2.64",
"v2.2.63",
"v2.2.62",
"v2.2.61",
"v2.2.60",
"v2.2.59",
"v2.2.58",
"v2.2.57",
"v2.2.56",
"v2.2.55",
"v2.2.54",
"v2.2.53",
"v2.2.52",
"v2.2.51",
"v2.2.50",
"v2.2.49",
"v2.2.48",
"v2.2.47",
"v2.2.46",
"v2.2.44",
"v2.2.45",
"v2.2.43",
"v2.2.42",
"v2.2.41",
"v2.2.40",
"v2.2.39",
"v2.2.38",
"v2.2.37",
"v2.2.36",
"v2.2.35",
"v2.2.34",
"v2.2.33",
"v2.2.32",
"v2.2.31",
"v2.2.30",
"v2.2.29",
"v2.2.28",
"v2.2.27",
"v2.2.26",
"v2.2.25",
"v2.2.24",
"v2.2.23",
"v2.2.22",
"v2.2.21",
"v2.2.20",
"v2.2.19",
"v2.2.18",
"v2.2.17",
"v2.2.16",
"v2.2.15",
"v2.2.14",
"v2.2.13",
"v2.2.12",
"v2.2.11",
"v2.2.10",
"v2.2.9",
"v2.2.8",
"v2.2.7",
"v2.2.6",
"v2.2.5",
"v2.2.4",
"v2.2.3",
"v2.2.2",
"v2.2.1",
"v2.2.0",
"v2.1.6",
"v2.1.5",
"v2.1.4",
"v2.1.3",
"v2.1.2",
"v2.1.1",
"v2.1.0",
"v2.0.81",
"v2.0.80",
"v2.0.79",
"v2.0.78",
"v2.0.77",
"2.0.59",
"2.0.76",
"2.0.75",
"2.0.74",
"2.0.73",
"2.0.72",
"2.0.71",
"2.0.70",
"2.0.69",
"2.0.68",
"2.0.67",
"2.0.66",
"2.0.65",
"2.0.64",
"2.0.63",
"2.0.62",
"2.0.61",
"2.0.60",
"2.0.58",
"2.0.57",
"2.0.56",
"2.0.55",
"2.0.54",
"2.0.53",
"2.0.51",
"2.0.50",
"2.0.49",
"2.0.48",
"2.0.47",
"2.0.46",
"2.0.45",
"2.0.44",
"2.0.43",
"2.0.42",
"2.0.41",
"2.0.40",
"2.0.39",
"2.0.38",
"2.0.37",
"2.0.36",
"2.0.35",
"2.0.34",
"2.0.33",
"2.0.32",
"2.0.31",
"2.0.30",
"2.0.29",
"2.0.28",
"2.0.27",
"2.0.26",
"2.0.25",
"v2.0.24",
"v2.0.23",
"v2.0.22",
"v2.0.21",
"v2.0.20",
"v2.0.19",
"v2.0.18",
"v2.0.17",
"v2.0.16",
"v2.0.15",
"v2.0.14",
"v2.0.13",
"v2.0.10",
"v2.0.9",
"v2.0.8",
"v2.0.7",
"v2.0.6",
"v2.0.5",
"v2.0.4",
"v2.0.1",
"v2.0.0",
"v1.0.11",
"v1.0.10",
"v1.0.9",
"v1.0.8",
"v1.0.6",
"v1.0.5",
"v1.0.4",
"v1.0.3",
"v1.0.2",
"v1.0.1",
"v1.0.0",
"v0.1.10",
"v0.1.9",
"v0.1.8",
"v0.1.7",
"v0.1.6",
"v0.1.5",
"v0.1.4",
"v0.1.3",
"v0.1.2",
"v0.1.1",
"v0.1.0",
"v0.0.74",
"v0.0.73",
"v0.0.72",
"v0.0.71",
"v0.0.70",
"v0.0.69",
"v0.0.68",
"v0.0.67",
"v0.0.66",
"v0.0.65",
"v0.0.64",
"v0.0.63",
"v0.0.62",
"v0.0.61",
"v0.0.59",
"v0.0.59rc11",
"v0.0.59rc9",
"v0.0.59rc8",
"v0.0.59rc7",
"v0.0.59rc6",
"0.0.59rc5",
"v0.0.59rc5",
"v0.0.59rc4",
"v0.0.59rc3",
"v0.0.59rc2",
"v0.0.59rc1",
"v0.0.58",
"0.0.57",
"0.0.56",
"0.0.55",
"v0.0.54",
"v0.0.53",
"v0.0.52",
"v0.0.51",
"v0.0.50",
"v0.0.49",
"v0.0.48",
"v0.0.47",
"v0.0.46",
"v0.0.45",
"v0.0.44",
"v0.0.43",
"v0.0.42",
"v0.0.41",
"v0.0.40",
"v0.0.39",
"v0.0.38",
"v0.0.37",
"v0.0.36",
"v0.0.35",
"v0.0.34",
"v0.0.33",
"v0.0.32",
"v0.0.31",
"v0.0.30",
"v0.0.29",
"v0.0.28",
"v0.0.27",
"v0.0.26",
"v0.0.25",
"v0.0.24",
"v0.0.23",
"v0.0.22",
"v0.0.21",
"v0.0.20",
"v0.0.18",
"v0.0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40148.json"
}
}
],
"modified": "2026-10-28T02:30:50.602482677Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40148.json",
"https://github.com/MervinPraison/PraisonAI/security/advisories/GHSA-f2h6-7xfr-xm8w",
"https://nvd.nist.gov/vuln/detail/CVE-2026-40148"
],
"provider_metadata": {
"cwe_ids": [
"CWE-409"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40148.json"
}
},
"related_cves": [
{
"value": "CVE-2026-40148",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 518794,
"published_at": "2026-04-09T21:22:20.446+00:00"
}