Tor Browser / NoScript: content-patch propagation
Incomplete propagation of NoScript’s content patches across DOM changes. Fixed in NoScript 13.6.35 and shipped in Tor Browser 15.0.24.
NoScript changelog ↗ Tor 15.0.24 release ↗ Tor issue #45371 ↗
Collection / 01
Credited vulnerability reports, assigned CVEs, and upstream fixes. The research record of Warisjeet Singh.
No matching records. Try another term or reset the filters.
Vulnerability reports by Warisjeet Singh (sin99xx), submitted through HackerOne and credited in NoScript’s changelog. Release notes link each finding to the shipped fix.
Incomplete propagation of NoScript’s content patches across DOM changes. Fixed in NoScript 13.6.35 and shipped in Tor Browser 15.0.24.
NoScript changelog ↗ Tor 15.0.24 release ↗ Tor issue #45371 ↗
NoScript site parsing did not account for Tor onion aliases. Fixed in NoScript 13.6.35 and shipped in Tor Browser 15.0.24.
NoScript changelog ↗ Tor 15.0.24 release ↗ Tor issue #45368 ↗
Incorrect IPv4 address matching in NoScript’s policy engine. Fixed in NoScript 13.6.34.
A shared-worker identity mismatch allowed WebAssembly to run at Tor Browser’s Safer security level. Fixed in NoScript 13.6.33 and shipped in Tor Browser 15.0.23.
NoScript changelog ↗ Tor 15.0.23 release ↗ Tor issue #45296 ↗
A missing setHTMLUnsafe hook left child contexts outside WebAssembly restrictions at Tor Browser’s Safer security level. Fixed in NoScript 13.6.33 and shipped in Tor Browser 15.0.23.
NoScript changelog ↗ Tor 15.0.23 release ↗ Tor issue #45297 ↗
A bounds check in the VGA renderer compares text-mode characters against graphics-mode pixels, so the resize is skipped: 960 bytes of guest-controlled palette past a 96-byte heap buffer, on every refresh, on a default machine.
The text and graphics renderers share one geometry cache in different units. Switching modes can leave the resize check comparing equal values, and the glyph loop paints past the surface. Our follow-up patch is merged upstream.
QEMU work item #4215 ↗ patch series ↗ commit 418396be ↗
@@ -1249,8 +1252,8 @@ static void vga_draw_text(VGACommonState *s, int full_update) surface = qemu_console_surface(s->con); qemu_console_text_resize(s->con, width, height); s->last_depth = 0; - s->last_width = width; - s->last_height = height; + s->last_text_width = width; + s->last_text_height = height; s->last_ch = cheight;
A race between directory reads and rename operations in QEMU's 9pfs device can free path state while it is still in use. An unprivileged guest can trigger the heap use-after-free and crash the host process, causing denial of service.
@@ -220,13 +220,16 @@ int coroutine_fn v9fs_co_readdir_many( int err = 0; + V9fsState *s = pdu->s; if (v9fs_request_cancelled(pdu)) { return -EINTR; } + v9fs_path_read_lock(s); v9fs_co_run_in_worker({ err = do_readdir_many(pdu, fidp, entries, offset, maxsize, dostat); }); + v9fs_path_unlock(s); return err; }
Malformed PROXY frames can disclose live stack bytes before SMTP authentication when the sender is trusted by hosts_proxy, exposing an ASLR-defeat primitive.
Identifier: EXIM-Security-2026-05-19.1 (CVE-2026-48840) Type: Pre-authentication information disclosure (uninitialised stack) Severity: Moderate (CVSS 5.3) Credit: Warisjeet Singh (sin99xx) 2026-05-19 12:35 UTC: Initial security report received from Warisjeet Singh (sin99xx). 2026-05-19 13:26 UTC: Exim maintainers acknowledge the report. 2026-05-19 14:06 UTC: Root cause confirmed; fix prepared in private repositories. 2026-05-29 14:00 UTC: Public coordinated release of the fix and advisory.
A guest can fill the pending bulk-in ring, partially read a slot, then reuse it with a stale cursor. The unsigned length subtraction wraps and reads past data[].
Sharing a snippet created a public link that carried the entire conversation history, not the excerpt.
"In Gemini iOS, when a user shared a snippet of a conversation, it would share the entire conversation via a sharable public link that contained the entire conversation history and not just the snippet."
An improper access check allowed users to display a list of modules in the frontend.
"An improper access check allows users to display a list of modules in the frontend."
Four fixes in Go and Google’s XNNPACK. Every change links to its upstream review.
Pre-1.3 TLS server handshakes set ConnectionState.LocalCertificate on resumed connections, reporting a certificate chain that was never presented to the peer. The fix moves population to where the Certificate message is actually written.
@@ -280,10 +280,6 @@ return err } - if hs.cert != nil { - hs.c.localCertificate = hs.cert.Certificate - } if hs.clientHello.scts {
Missing bounds checks in the LiteRT tensor builder let a crafted model drive a heap out-of-bounds write.
@@ -560,6 +560,11 @@ Tensor<Mixins...> ExpandDims( if (real_axis < 0) { real_axis += input_info.shape.size() + 1; } + if (real_axis < 0 || + real_axis > static_cast<int>(input_info.shape.size())) { + return Tensor<Mixins...>(graph::ErrorTensor(absl::InvalidArgumentError( + "The ExpandDims axis is out of range."))); + } output_info.shape.insert(output_info.shape.begin() + real_axis, 1);
Out-of-bounds read in the qb4w transposed-weight packer.
@@ -2393,7 +2397,7 @@ XNN_NO_SANITIZE_FUNCTION void xnn_pack_qb4_weights_and_biases( /*nr=*/nr, /*kr=*/kr, /*sr=*/sr, - /*k_stride=*/k_stride, + /*k_stride=*/output_channels, /*bl=*/block_size,
CONCATENATE never checked that inputs matched on non-axis dimensions, so a sibling with a larger trailing product overran the output buffer: attacker-controlled length and content, reachable from an untrusted model through the default float delegate.
@@ -126,6 +126,37 @@ static enum xnn_status reshape_concatenate_operator( + // All inputs must share the same rank and identical dimensions on every axis + // except the concatenation axis. Without this check, an input whose post-axis + // dimensions differ from input0's would make the per-row copy stride exceed + // the output buffer size computed below (which is derived from input0's + // shape), producing an out-of-bounds write in the copy micro-kernel. + const size_t num_dims = values[input_id[0]].shape.num_dims;
Accepted findings across public and private bug-bounty programs, including the Bugcrowd platform itself. Private programs do not publish patches, so there are no links here by design. Source: sin99xx.com.
A valid finding against the bug-bounty platform's own product.
#2 on the program leaderboard.
#3 on the leaderboard.
Accepted findings across public and private programs.