Skip to content

Commit 7f3b8eb

Browse files
1 parent 63dcd4a commit 7f3b8eb

2 files changed

Lines changed: 150 additions & 0 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-8p85-9qpw-fwgw",
4+
"modified": "2026-02-28T02:47:17Z",
5+
"published": "2026-02-28T02:47:17Z",
6+
"aliases": [
7+
"CVE-2026-2880"
8+
],
9+
"summary": "@fastify/middie has Improper Path Normalization when Using Path-Scoped Middleware",
10+
"details": "## Summary\nA path normalization inconsistency in `@fastify/middie` can result in authentication/authorization bypass when using path-scoped middleware (for example, `app.use('/secret', auth)`).\n\nWhen Fastify router normalization options are enabled (such as `ignoreDuplicateSlashes`, `useSemicolonDelimiter`, and related trailing-slash behavior), crafted request paths may bypass middleware checks while still being routed to protected handlers.\n\n## Impact\nAn unauthenticated remote attacker can access endpoints intended to be protected by middleware-based auth/authorization controls by sending specially crafted URL paths (for example, `//secret` or `/secret;foo=bar`), depending on router option configuration.\n\nThis may lead to unauthorized access to protected functionality and data exposure.\n\n## Affected versions\n- Confirmed affected: `@fastify/middie@9.1.0`\n- All versions prior to the patch are affected.\n\n## Patched versions\n- Fixed in: *9.2.0*\n\n## Details\nThe issue is caused by canonicalization drift between:\n1. `@fastify/middie` path matching for `app.use('/prefix', ...)`, and\n2. Fastify/find-my-way route lookup normalization.\n\nBecause middleware and router did not always evaluate the same normalized path, auth middleware could be skipped while route resolution still succeeded.\n\n## Workarounds\nUntil patched version is deployed:\n- Avoid relying solely on path-scoped middie guards for auth/authorization.\n- Enforce auth at route-level handlers/hooks after router normalization.\n- Disable risky normalization combinations only if operationally feasible.\n\n## Resources\n- Fluid Attacks Disclosure Policy: https://fluidattacks.com/advisories/policy\n- Fluid Attacks advisory URL: https://fluidattacks.com/advisories/jimenez\n\n## Credits\n- **Cristian Vargas** (Fluid Attacks Research Team) — discovery and report.\n- **Oscar Uribe** (Fluid Attacks) — coordination and disclosure.",
11+
"severity": [
12+
{
13+
"type": "CVSS_V4",
14+
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "npm",
21+
"name": "@fastify/middie"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "9.2.0"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"references": [
39+
{
40+
"type": "WEB",
41+
"url": "https://github.com/fastify/middie/security/advisories/GHSA-8p85-9qpw-fwgw"
42+
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-2880"
46+
},
47+
{
48+
"type": "WEB",
49+
"url": "https://github.com/fastify/middie/commit/140e0dd0359d890fec7e6ea1dcc5134d6bd554d4"
50+
},
51+
{
52+
"type": "WEB",
53+
"url": "https://fluidattacks.com/advisories/jimenez"
54+
},
55+
{
56+
"type": "WEB",
57+
"url": "https://fluidattacks.com/advisories/policy"
58+
},
59+
{
60+
"type": "PACKAGE",
61+
"url": "https://github.com/fastify/middie"
62+
},
63+
{
64+
"type": "WEB",
65+
"url": "https://github.com/fastify/middie/releases/tag/v9.2.0"
66+
}
67+
],
68+
"database_specific": {
69+
"cwe_ids": [
70+
"CWE-20"
71+
],
72+
"severity": "HIGH",
73+
"github_reviewed": true,
74+
"github_reviewed_at": "2026-02-28T02:47:17Z",
75+
"nvd_published_at": "2026-02-27T19:16:12Z"
76+
}
77+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-f2v5-7jq9-h8cg",
4+
"modified": "2026-02-28T02:46:10Z",
5+
"published": "2026-02-28T02:46:10Z",
6+
"aliases": [
7+
"CVE-2026-28351"
8+
],
9+
"summary": "pypdf: Manipulated RunLengthDecode streams can exhaust RAM",
10+
"details": "### Impact\n\nAn attacker who uses this vulnerability can craft a PDF which leads to large memory usage. This requires parsing the content stream using the RunLengthDecode filter.\n\n### Patches\nThis has been fixed in [pypdf==6.7.4](https://github.com/py-pdf/pypdf/releases/tag/6.7.4).\n\n### Workarounds\nIf you cannot upgrade yet, consider applying the changes from PR [#3664](https://github.com/py-pdf/pypdf/pull/3664).",
11+
"severity": [
12+
{
13+
"type": "CVSS_V4",
14+
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "PyPI",
21+
"name": "pypdf"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "6.7.4"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"references": [
39+
{
40+
"type": "WEB",
41+
"url": "https://github.com/py-pdf/pypdf/security/advisories/GHSA-f2v5-7jq9-h8cg"
42+
},
43+
{
44+
"type": "ADVISORY",
45+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-28351"
46+
},
47+
{
48+
"type": "WEB",
49+
"url": "https://github.com/py-pdf/pypdf/pull/3664"
50+
},
51+
{
52+
"type": "WEB",
53+
"url": "https://github.com/py-pdf/pypdf/commit/f309c6003746414dc7b5048c19e6d879ff2dc858"
54+
},
55+
{
56+
"type": "PACKAGE",
57+
"url": "https://github.com/py-pdf/pypdf"
58+
},
59+
{
60+
"type": "WEB",
61+
"url": "https://github.com/py-pdf/pypdf/releases/tag/6.7.4"
62+
}
63+
],
64+
"database_specific": {
65+
"cwe_ids": [
66+
"CWE-400"
67+
],
68+
"severity": "MODERATE",
69+
"github_reviewed": true,
70+
"github_reviewed_at": "2026-02-28T02:46:10Z",
71+
"nvd_published_at": "2026-02-27T21:16:19Z"
72+
}
73+
}

0 commit comments

Comments
 (0)