Skip to content
Heist/ feed
Back to feed
Medium

AdonisJS: Unencoded route parameters can produce open redirects

Type: advisorySources: OSV

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 source

Published 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"
}