mcp-contextforge-gateway
An AI Gateway, registry, and proxy that sits in front of any MCP, A2A, or REST/gRPC APIs, exposing a unified endpoint with centralized discovery, guardrails and management. Optimizes Agent & Tool calling, and supports plugins.
Activity
- Latest release
- 1w ago
- Total releases
- 25
- Cadence
- ~14 days
- Last 12 months
- 16
Reach
- Stars
- 4.5k
Details
- License
- Apache-2.0
- First release
- Jun 07, 2025
| Version | Released | |
|---|---|---|
1.0.10
patch
| ||
1.0.9
patch
| ||
1.0.8
patch
| ||
1.0.7
patch
| ||
1.0.6
patch
| ||
1.0.5
patch
| ||
1.0.4
patch
| ||
1.0.3
patch
| ||
1.0.2
patch
1 CVE
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.0.1
patch
2 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.0.0
major
2 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.0.0rc1
pre
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.0.0b2
pre
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
1.0.0b1
pre
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.9.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.8.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.7.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.6.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.5.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.4.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.3.1
patch
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.3.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.2.0
minor
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.1.1
patch
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev | ||
0.1.0
initial
3 CVEs
CVE-2026-53710
PYSEC-2026-3862
GHSA-xm98-3vcf-fph7
Sep 10, 2026
mcp-contextforge-gateway has RestrictedPython sandbox bypass via getattr builtin in python_sandbox_server
10.0
/ 10
Critical
Network
Low
None
None
Changed
High
High
High
Commit: VulnerabilityRestrictedPython's sandbox in ContextForge's
Proof of ConceptThe local PoC was executed against the real pinned sandbox code path. It constructs dunder names at runtime, walks Python's class hierarchy through the exposed Transcript excerpt:
PoC artifact hashes:
Production Deployment ContextContextForge's documentation describes registering MCP servers as gateways in a running ContextForge instance. If this sandbox server is reachable over HTTP in that pattern, any client that can reach the endpoint can submit the payload through ImpactAn attacker with access to the Suggested FixRemove raw CaveatsThis report covers the Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 4 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
Fixed in
1.0.2
References
Updated Sep 10, 2026 · Source: OSV.dev
GHSA-vwf3-4xxj-qg6h
Aug 25, 2026
mcp-contextforge-gateway has Server-Side Template Injection (SSTI) leading to Remote Code Execution in `PromptService._render_template` via unsandboxed Jinja2 Environment
High
Summary
DetailsAffected component: Vulnerable code
Where Because PoCThe reproducer requires only the published package and a Python interpreter; no network, database, or container setup is needed because the vulnerability sits in the in-process render method. Setup
Reproducer (
Verified output
The file End-to-end via the API A full attack against a deployed gateway uses the same payload supplied as the ImpactThis is a Server-Side Template Injection vulnerability in a component ( Successful exploitation yields:
Affected user populations:
Suggested remediation requests:
Maintainer review (accepted)Reproduced and accepted. Findings from the maintainer's review: Confirmed valid (SSTI → RCE). In Reachable with attacker-controlled input. The Scope (set on this advisory): affected Already fixed. Migrated to Correction to the report. "Patched version not installable via pip" is now stale — 1.0.0 through 1.0.3 are published on PyPI. Remediation for users is upgrade to Audit. Other Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0b1
+ 2 more Show less
1.0.0b2
1.0.0rc1
Fixed in
1.0.0
References
Updated Aug 26, 2026 · Source: OSV.dev
CVE-2026-53708
PYSEC-2026-3684
GHSA-9hgc-g3w5-67cm
Aug 19, 2026
ContextForge: DNS TOCTOU race condition causes SSRF protection bypass (`/admin/gateways/test`)
6.6
/ 10
Medium
Network
High
High
None
Changed
High
Low
None
SummaryThe Details
The HTTP client (
The configuration options Two independent acknowledgements in the source codeLocation 1 —
Location 2 —
The existence of a named TODO ticket (ICACF-15) confirms the maintainers consider this an open, tracked defect. Prerequisites
Regarding prerequisite 2: the endpoint is decorated with @require_permission("gateways.read", allow_admin_bypass=False). The allow_admin_bypass=False flag explicitly disables the platform-admin shortcut, meaning even a platform admin must hold an explicit database-backed role assignment that carries gateways.read. A credential produced solely via the platform-admin bootstrap bypass described in the companion advisory (GHSA-m8rv-5m6m-32ff) — a virtual identity with no database record — is rejected with HTTP 403 at this endpoint because no role lookup can succeed without a database row. An attacker who has forged a JWT via that bootstrap path does not automatically gain access to this endpoint; they still require a separately provisioned account with an appropriate role. Proof of ConceptSetup
Step 1 — Obtain a token for an account with database role assignmentThe exploit requires a credential for a user who exists in the database with a role carrying
Step 2 — Baseline control: direct private IP is rejectedSubmitting a literal private IP is blocked unconditionally before any DNS resolution occurs:
Step 3 — DNS rebinding attack
Standard DNS rebinding infrastructure (e.g., ImpactServer-Side Request Forgery against internal services and cloud instance metadata. An attacker with a sufficiently privileged credential can probe internal network services, retrieve cloud credentials from Suggested FixAfter DNS validation passes, pin the connection to the validated IP address rather than re-passing the hostname to the HTTP client. Implement this via a custom Affected versions
0.1.0
0.1.1
0.2.0
0.3.0
0.3.1
0.4.0
0.5.0
0.6.0
0.7.0
0.8.0
0.9.0
1.0.0
+ 5 more Show less
1.0.0b1
1.0.0b2
1.0.0rc1
1.0.1
1.0.2
Fixed in
1.0.3
References
Updated Aug 19, 2026 · Source: OSV.dev |