Slipping an extra request through Cloudflare Pingora on a close-delimited body
Pingora could not recognise a comma-separated Transfer-Encoding, so it read the request body until the socket closed.
found by Rajat Raghav (xclow3n)
Pingora could not recognise a comma-separated Transfer-Encoding, so it read the request body until the socket closed.
found by Rajat Raghav (xclow3n)
A ZIP with one digest that expands into two different packages depending on which installer opens it.
found by Caleb Brown (Google) and Tim Hatch (Netflix)
A fax-coding decoder writes one run-length entry per code and never checks it is still inside the buffer.
found by Antonio Morales, GitHub Security Lab
One internal header flips an SSR response into an SSG one, and the Cache-Control header follows it.
found by Allam Rachid (zhero_) and Henry Chen
Go's path cleaner did not know that \??\c:\x is another spelling of c:\x, and the fix for that needed a fix of its own.
atoi has no way to report failure, and track_set_index only checked one end of the array.
found by Kevin Backhouse, GitHub Security Lab
The advisory says 'chunked decoder lenience' and stops; the commit says 0x prefixes, bare LFs and a bad rewind point.
found by Keran Mu and Jianjun Chen, Tsinghua University
A public header said ASN1_TYPE, the ASN.1 template produced an ASN1_STRING, and one comparison function stood between the two.
found by David Benjamin (Google); fix by Hugo Landau
An unauthenticated allow-list matched a string while a proxy client normalised a path, three times in a row.
found by Joseph Surin and Victor Kahan, elttam
An XML signature covers an element, not a file, and passport-saml picked its element two different ways.
found by Felix Wilhelm, Google Project Zero
The referral cap everyone added after NXNSAttack turns into a loop when the nameservers exist but never answer.
found by Yehuda Afek, Anat Bremler-Barr and Shani Stajnrod
Cargo wrote "ok" into a marker file after unpacking a crate, and the crate got to decide what that marker was.
found by Ori Hollander, JFrog Security Research
U-Boot stores its IP reassembly hole list inside the holes, and a 27-byte fragment lands right on top of it.
found by Nicolas Guigo and Nicolas Bidron, NCC Group
How a black-box state machine learner found two ways to skip the only part of TLS 1.3 that proves who you are.
found by Aina Toky Rasoamanana and Olivier Levillain, Télécom SudParis
mitmproxy split header lines on the first colon and kept whatever came before it, whitespace included.
found by Zeyu Zhang (zeyu2001)
libexpat packed three strings into one buffer with a delimiter you chose, and never checked whether the delimiter turned up in the data.
found by Ivan Fratric, Google Project Zero
Envoy packed request headers for its external authorizer into a protobuf map, so a repeated header arrived with only its last value.
Bluetooth Passkey Entry spends a bit of the passkey per round so it can never be brute-forced offline. Reflect the initiator's public key back at it and it hands over one bit per round instead.
found by Tristan Claverie and José Lopes Esteves, ANSSI
node-tar skipped a symlink check whenever its directory cache said the path was fine, and two ways of spelling a path could make the cache lie.
found by chen-robert, ginkoid and levpachmanov
RDoc sniffed the first hundred bytes of any file called 'tags' to see whether it was a ctags index, and used the one Ruby function that treats a leading pipe as a command.
found by Alexandr Savca
A standard-library parser that separated parameters on ';' as well as '&', and the cache poisoning that followed when the proxy in front disagreed.
found by Adam Goldschmidt (Snyk)
A greater-than that should have been a greater-than-or-equal lets a remote MQTT packet pick any 32-bit length it likes, and a signed branch instruction lets a user thread pick any function pointer it…
found by Ilya Zhuravlev and Jeremy Boone, NCC Group
kube-controller-manager will connect to any address you write into a StorageClass, and until 2020 it read the response back to you in a PersistentVolumeClaim event.
found by Brice Augras (Groupe-Asten) and Christophe Hauquiert (Nokia)
How a vertical tab in a Transfer-Encoding header made HAProxy and its backend disagree about where a request ended, opening an HTTP request smuggle.
found by Nathan Davison (independent)
Windows stores one previous-access-mode value per thread and uses it to answer two unrelated questions, and the workaround for that leaks straight into driver code.
found by James Forshaw, Google Project Zero
There is a Linux driver whose entire job is to pretend. `vivid` emulates video4linux hardware (capture devices, output devices, radio receivers and transmitters, a software-defined radio). You can…
found by Alexander Popov, Positive Technologies
CPython's urlsplit found the host by scanning for delimiters, but IDNA normalizes the name afterwards with NFKC — and some characters only become delimiters once that happens. The first fix worked by…
found by Jonathan Birch (Microsoft) and Panayiotis Panayiotou
A Wi-Fi SoC is a whole second computer with its own RTOS and its own RAM, and the firmware Denis Selianin fuzzed would parse hostile beacon frames on a five-minute timer with nobody in the loop.
found by Denis Selianin, Embedi