AdonisJS: Unencoded route parameters can produce open redirects
AdonisJS HTTP Server is a package for handling HTTP requests in the AdonisJS framework. Prior to 8.2.3 and 9.3.0, AdonisJS HTTP Server inserts route parameter values into URLs without encodeURIComponent in the shared createURL() helper used by Router.makeUrl() and Response.redirect().toRoute(). If an application places attacker-controlled data in a dynamic first path segment and uses the generated route URL as a redirect destination, a value beginning with a slash can produce a scheme-relative external URL. Wildcard parameters are affected by the same missing encoding, while APIs intentionally accepting complete redirect URLs are not affected. An attacker can redirect users from a trusted application to an attacker-controlled site, facilitating phishing or abuse of authentication and OAuth flows. This issue is fixed in versions 8.2.3 and 9.3.0.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-107718
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 15:55 UTC · Revision 1
Source evidence
AdonisJS: Unencoded route parameters can produce open redirects
core-osv · Original sourcePublished 8 Oct 2026, 21:39 UTC
AdonisJS HTTP Server is a package for handling HTTP requests in the AdonisJS framework. Prior to 8.2.3 and 9.3.0, AdonisJS HTTP Server inserts route parameter values into URLs without encodeURIComponent in the shared createURL() helper used by Router.makeUrl() and Response.redirect().toRoute(). If an application places attacker-controlled data in a dynamic first path segment and uses the generated route URL as a redirect destination, a value beginning with a slash can produce a scheme-relative external URL. Wildcard parameters are affected by the same missing encoding, while APIs intentionally accepting complete redirect URLs are not affected. An attacker can redirect users from a trusted application to an attacker-controlled site, facilitating phishing or abuse of authentication and OAuth flows. This issue is fixed in versions 8.2.3 and 9.3.0.
osv:CVE-2026-107718
Complete source record
{
"id": "a7d664778834d3e4a0c8fa1f5ad4a9356e43cdd3a7f54a7f4e1952856400e1e5",
"url": "https://osv.dev/vulnerability/CVE-2026-107718",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "AdonisJS: Unencoded route parameters can produce open redirects",
"summary": "AdonisJS HTTP Server is a package for handling HTTP requests in the AdonisJS framework. Prior to 8.2.3 and 9.3.0, AdonisJS HTTP Server inserts route parameter values into URLs without encodeURIComponent in the shared createURL() helper used by Router.makeUrl() and Response.redirect().toRoute(). If an application places attacker-controlled data in a dynamic first path segment and uses the generated route URL as a redirect destination, a value beginning with a slash can produce a scheme-relative external URL. Wildcard parameters are affected by the same missing encoding, while APIs intentionally accepting complete redirect URLs are not affected. An attacker can redirect users from a trusted application to an attacker-controlled site, facilitating phishing or abuse of authentication and OAuth flows. This issue is fixed in versions 8.2.3 and 9.3.0.",
"evidence": "osv:CVE-2026-107718",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-107718",
"aliases": [
"CVE-2026-107718",
"GHSA-2m6q-8v3h-jqww"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/adonisjs/http-server",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "ef29bba5857b87e398766fae2bad85d446702a99"
},
{
"introduced": "55080684675d0ba66d829d81cbe1270b5c2eee58"
},
{
"fixed": "ee260b89a7cada3db521677a53a26bcb42232561"
},
{
"fixed": "4548a0631ce2ef1618f04c7b41465be42cad2f7d"
},
{
"fixed": "ab607a2958327b6f0019d38f26081e431768877a"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "8.2.3"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "9.0.0"
},
{
"fixed": "9.3.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "4548a0631ce2ef1618f04c7b41465be42cad2f7d"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "ab607a2958327b6f0019d38f26081e431768877a"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "ef29bba5857b87e398766fae2bad85d446702a99"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v8.2.3"
},
{
"range": [
{
"fixed": "ee260b89a7cada3db521677a53a26bcb42232561"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v9.3.0"
}
]
}
}
],
"versions": [
"v8.2.2",
"v9.2.0",
"v9.1.1",
"v8.2.1",
"v9.1.0",
"v8.2.0",
"v9.0.2",
"v9.0.1",
"v9.0.0",
"v8.1.3",
"v8.1.2",
"v8.1.1",
"v8.1.0",
"v8.0.0",
"v8.0.0-next.19",
"v8.0.0-next.18",
"v8.0.0-next.17",
"v8.0.0-next.16",
"v8.0.0-next.15",
"v8.0.0-next.14",
"v8.0.0-next.13",
"v8.0.0-next.12",
"v8.0.0-next.11",
"v8.0.0-next.10",
"v8.0.0-next.9",
"v8.0.0-next.8",
"v8.0.0-next.7",
"v8.0.0-next.6",
"v8.0.0-next.5",
"v8.0.0-next.4",
"v8.0.0-next.3",
"v8.0.0-next.2",
"v8.0.0-next.1",
"v8.0.0-next.0",
"v7.6.1",
"v7.6.0",
"v7.5.0",
"v7.4.0",
"v7.3.0",
"v7.2.5",
"v7.2.4",
"v7.2.3",
"v7.2.2",
"v7.2.0",
"v7.1.0",
"v7.0.3",
"v7.0.2",
"v7.0.1",
"v7.0.0",
"v5.12.0",
"v5.11.0",
"v5.10.1",
"v5.10.0",
"v5.9.0",
"v5.8.0",
"v5.7.4",
"v5.7.3",
"v5.7.2",
"v5.7.1",
"v5.7.0",
"v5.6.1",
"v5.6.0",
"v5.5.7",
"v5.5.6",
"v5.5.5",
"v5.5.4",
"v5.5.3",
"v5.5.2",
"v5.5.1",
"v5.5.0",
"v5.4.1",
"v5.4.0",
"v5.3.2",
"v5.3.1",
"v5.3.0",
"v5.2.1",
"v5.2.0",
"v5.1.2",
"v5.1.1",
"v5.1.0",
"v5.0.1",
"v5.0.0",
"v4.0.9",
"v4.0.8",
"v4.0.7",
"v4.0.6",
"v4.0.5",
"v4.0.4",
"v4.0.3",
"v4.0.2",
"v4.0.1",
"v4.0.0",
"v3.0.3",
"v3.0.2",
"v3.0.1",
"v3.0.0",
"v2.1.2",
"v2.1.1",
"v2.1.0",
"v2.0.3",
"v2.0.2",
"v2.0.1",
"v2.0.0",
"v1.8.2",
"v1.8.1",
"v1.8.0",
"v1.7.4",
"v1.7.3",
"v1.7.2",
"v1.7.1",
"v1.7.0",
"v1.6.6",
"v1.6.5",
"v1.6.4",
"v1.6.3",
"v1.6.2",
"v1.6.1",
"v1.6.0",
"v1.5.4",
"v1.5.3",
"v1.5.2",
"v1.5.1",
"v1.5.0",
"v1.4.0",
"v1.3.1",
"v1.3.0",
"v1.2.11",
"v1.2.10",
"v1.2.9",
"v1.2.8",
"v1.2.7",
"v1.2.6",
"v1.2.5",
"v1.2.4",
"v1.2.3",
"v1.2.2",
"v1.2.1",
"v1.2.0",
"v1.1.8",
"v1.1.7",
"v1.1.6",
"v1.1.5",
"v1.1.4",
"v1.1.3",
"v1.1.2",
"v1.1.1",
"v1.1.0",
"v1.0.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-107718.json"
}
}
],
"modified": "2026-10-28T02:30:51.101269662Z",
"provider": "osv",
"references": [
"https://github.com/adonisjs/http-server/releases/tag/v8.2.3",
"https://github.com/adonisjs/http-server/releases/tag/v9.3.0",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/107xxx/CVE-2026-107718.json",
"https://github.com/adonisjs/http-server/security/advisories/GHSA-2m6q-8v3h-jqww",
"https://nvd.nist.gov/vuln/detail/CVE-2026-107718",
"https://github.com/adonisjs/http-server/commit/4548a0631ce2ef1618f04c7b41465be42cad2f7d",
"https://github.com/adonisjs/http-server/commit/ab607a2958327b6f0019d38f26081e431768877a"
],
"provider_metadata": {
"cwe_ids": [
"CWE-601"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/107xxx/CVE-2026-107718.json"
}
},
"related_cves": [
{
"value": "CVE-2026-107718",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 519811,
"published_at": "2026-10-08T21:39:54.474+00:00"
}