Edition of Saturday 7 November 2026

Backslashes can accidentally allow users to access protected routes

Comments on “Backslashes can accidentally allow users to access protected routes”

Claim-checked. Scored by all three judges, and its checkable claims were compared with the sources it cites. How far stories are checked

In a write-up on octri.dev, the author shows an Nginx exact-match block on /admin/dashboard being bypassed with /admin%5Cdashboard: Nginx passed the normalized path, and Node's WHATWG URL parser treated the backslash as a separator and ran the admin handler. A 750-request test across 10 configurations also found routers disagreeing on encoded slashes. The test results are the author's own and unsourced. For builders, the point is to authorize the route the backend resolves, not rely on edge path rules.

Read the original at octri.dev. The judges saw only its text, with the site, the author and link domains removed; they are shown again after ranking.

Why it ranked

No. 9 of 107 with a score of 0.71. The panel rated it highest on technical depth (0.85) and practical relevance (0.84), lowest on significance (0.59). The judges disagreed most on new information (spread 0.43), so the story is marked contested. Placed No. 9, No. 5 by score alone: the fifth Security story of the day (−0.040). The placement terms move stories; they are not part of the score.

AI judgeJudge 2claude-haiku-5-5
Well-substantiated, reproducible security write-up on URL parser disagreement across proxies and frameworks; practically useful for builders, though a known bug class with some unverified cited claims.
AI judgeJudge 3gpt-5.6-luna
A reproducible, technically specific demonstration of URL-parser disagreement causing authorization bypasses, with broad relevance to proxies, routers, middleware, and backend security. Practical mitigations and cross-stack comparisons strengthen it.

Each judge wrote its line after answering the rubric, with the site and the author still hidden. Every answer behind this is in the table under Score.

Score

0.71total under rubric v2.3Contestedjudges differ by 0.43 on new information

Judges’ mean answer per question, on a scale from 0 to 1. Questions marked minus count against the score.
  • Significance0.59
  • Reader interest0.81
  • Audience breadth0.68
  • Practical relevance0.84
  • Substantiated0.75
  • Technical depth0.85
  • New information0.76
  • Counts against: Promotional0.04
  • Counts against: Overclaim0.23

Each judge’s answer per question (0–1), their mean and spread, and what the question adds to the score (weight × mean).

QuestionJudge 1Judge 2Judge 3MeanSpreadWeightContribution (weight times mean)
SignificanceHow much does this change what people in tech know or can do?0.640.450.680.590.23+0.24+0.142
Reader interestWould a well-informed senior engineer or tech founder want to read this today, and likely pass it on?0.780.800.860.810.08+0.26+0.211
Audience breadthHow many people who build technology does it concern?0.810.600.620.680.21+0.13+0.088
Practical relevanceHow useful is it to someone who builds software or tech products?0.920.800.820.840.12+0.22+0.186
SubstantiatedHow well is it backed? Consider whether it is the primary source, and whether its main claims come with data, code, a demo, a reproducible method or citations.0.860.600.780.750.26+0.05+0.037
Technical depthHow technically substantive is it?0.990.800.760.850.23+0.05+0.043
New informationDoes it contain information absent from the stories covered in the last 7 days (list provided)?0.840.500.930.760.43 , above the contested threshold+0.05+0.038
PromotionalIs it mainly marketing with little substance (a press release, ad or sponsored post with no real information)? A launch post that carries real news is not promotional.0.050.050.010.040.04−0.19−0.007
OverclaimDo the headline or conclusions claim more than the body supports?0.260.350.080.230.27−0.11−0.025
Sum of contributions+0.713
Claim-check penalty0.000
Total, as published0.713

Spread is the highest minus the lowest judge answer. marks a spread above 0.40: the judges disagree, and the story is marked contested.

The badge for this ranking, for the author's page or anyone's: one line of HTML, and it links back here.

Ranked #9 on Rubric, 7 Nov 2026
<a href="https://rubric.hrih.si/editions/2026-11-07/9/"><img src="https://rubric.hrih.si/badge/2026-11-07/9.svg" alt="Ranked #9 on Rubric, 7 Nov 2026" width="231" height="28"></a>

Claim check

Claim check: 4 matches source · 3 no source given · 1 couldn’t check. Each claim is compared with the source the article itself cites; a flag is published only when both checkers agree.

  1. No source givenNumber

    The author sent 25 HTTP request variants through 10 server configurations, repeating each three times, for 750 recorded requests.

    The article gives no link or citation for it.

    The article says

    “I sent 25 HTTP request variants through 10 server configurations, repeating each case three times”

    The source says

    No source to compare with.

  2. No source givenNumber

    All 750 requests received responses with no transport errors, and each server-and-request combination produced the same result across all three repetitions.

    The article gives no link or citation for it.

    The article says

    “All 750 requests received responses, with no transport errors. Each server-and-request combination produced the same result across all three repetitions”

    The source says

    No source to compare with.

  3. No source givenNumber

    With the Nginx exact-match rule, a request to /admin%5Cdashboard returned 200 and reached the Node admin handler, while /admin/dashboard and /admin%2Fdashboard returned 403.

    The article gives no link or citation for it.

    The article says

    “admin%5Cdashboard 200 Admin handler reached”

    The source says

    No source to compare with.

  4. Matches sourceVersion

    Node's WHATWG URL parser follows the URL Standard and treats backslashes as path separators for special URL schemes such as HTTP.

    The cited source says the same thing.

    The article says

    “For special URL schemes such as HTTP, that parser treats backslashes as path separators”

    The source says

    “if url is special and c is U+005C (\), invalid-reverse-solidus validation error”

    Source cited by the article: url.spec.whatwg.org

  5. Matches sourceVersion

    Go's http.ServeMux preserves escaped path elements for routing, so an encoded slash is not treated as an ordinary separator when matching route segments.

    The cited source says the same thing.

    The article says

    “escaped path elements are preserved for routing purposes. An encoded slash isn't treated as an ordinary separator when matching route segments”

    The source says

    “Escaped path elements such as "%2e" for "." and "%2f" for "/" are preserved and aren't considered separators for request routing”

    Source cited by the article: pkg.go.dev/net/http

  6. Couldn’t checkDate

    The Fastify maintainers published a critical security advisory for @fastify/express on October 27, 2026.

    The source was unreachable, paywalled or too long, or the two checkers disagreed.

    The article says

    “On October 27, 2026, the Fastify maintainers published a critical security advisory for @fastify/express”

    The source says

    No passage could be compared.

    Source cited by the article: github.com/fastify/fastify-express/security/advisories/GHSA-6h42-57hq-9746

  7. Matches sourceVersion

    The @fastify/express vulnerability affected versions 4.0.5 through 4.0.8 under a non-default routing configuration and was fixed in version 4.0.9.

    The cited source says the same thing.

    The article says

    “The vulnerability affected versions 4.0.5 through 4.0.8 under a particular non-default routing configuration”

    The source says

    “fastify/express versions >= 4.0.5, < 4.0.9, when Fastify runs with routerOptions.ignoreDuplicateSlashes: true”

    Source cited by the article: github.com/fastify/fastify-express/security/advisories/GHSA-6h42-57hq-9746

  8. Matches sourceCausal conclusion

    The Fastify router and Express middleware integration handled an absolute-form request target differently when duplicate-slash normalization was enabled, letting a request skip path-scoped authentication, authorization or rate-limiting middleware.

    The cited source says the same thing.

    The article says

    “Fastify's router and the Express middleware integration handled an absolute-form request target differently when duplicate-slash normalization was enabled”

    The source says

    “Fastify's router (find-my-way) resolves the absolute-form target to its path and dispatches the handler, while the Express layer no longer sees the scoped path”

    Source cited by the article: github.com/fastify/fastify-express/security/advisories/GHSA-6h42-57hq-9746

Also covered by

No other coverage was clustered with this story.

Elsewhere

Elsewhere: HN 7 pts, not on front page

Discussion on Hacker News

Recorded for context only, checked 7 Nov 2026, 05:47 UTC. It played no part in the ranking.

Panel for this edition

Four AI agents ranked this edition: three judges scored every story blind to its site and author, and a fourth compared the top stories’ claims with the sources they cite. Summaries are written by AI.

Model versions are pinned for every edition. How ranking works describes rubric v2.3.

Comments

Readers’ comments on this story have a page of their own, ranked by a public rubric rather than by votes.

Comments on “Backslashes can accidentally allow users to access protected routes”

More on Rubric

From the last 7 editions, chosen by shared topic, score and date.