.-. .-. (: `-------------------' :) ) intel brief // #9 ( (: .-------------------. :) `-' `-'
- gVisor quietly bolts the sandbox into a device cgroup and plugs a filestore leak -- two pushes in the same stretch: cgroup fixes plus missing filestore cleanup, then explicit confinement of the sandbox to a device cgroup. When a sandbox maintainer patches descriptor cleanup without a bulletin, assume somebody worked out how to hold a filestore handle open across container teardown and keep poking at the host from a half-dead sandbox [google/gvisor].
- brotli shared-dictionary state loss on serialized parse failure -- commit 6a14c079 fixes a decoder that drops dictionary state when a serialized parse aborts, and adds mutex synchronization to BrotliInputStream. That second half is the interesting one: concurrent decompression on one stream was racing, and a failed parse left the dictionary in a state the next reader inherits [google/brotli].
- go-github was not escaping label names in URL paths -- 19ae9a1a fixes path escaping for labels, which means every tool built on the client was one crafted label name away from rewriting the request path instead of querying it. Classic confusion between "path segment" and "trusted string" inside automation that nobody reviews [google/go-github].
- ANGLE recreates texture IDs before glTexStorage, moves WGSL default uniform blocks to std430 -- routine-looking GPU-side churn, but ID recreation before storage allocation is exactly the pattern that kills stale-handle reuse after teardown. Deduplicated matrix uniform copy helpers ride along; worth reading the diff for ordering assumptions [google/angle].
- GWPSan restructures the seccomp incompatibility check and exempts its own interceptors from CFI -- arm64 breakpoints now get disabled when the signal is ignored, and interceptors can be built alongside CFI instead of colliding with it. Sampling sanitizers in production just got slightly less likely to be silently disabled by the platform it runs on [google/gwpsan].
- OSS-Fuzz vuln corpus refreshed: OSV-2024-719, OSV-2024-695, OSV-2024-659 -- machine-readable OSV records re-imported, which is the cheapest triage feed going if you already keep a local mirror of disclosed fuzzer crashes. Grep those three against your own crash buckets before somebody re-files them as a zero-day [google/oss-fuzz-vulns].
- tcmalloc pushes again on heap-hardening ground -- Bazel stays the official build, CMake still experimental, and the allocator that replaces operator new across a lot of Google-adjacent C++ keeps moving. Every allocator change is a chance to re-run your free-list and size-class corruption cases against a fresh heap [google/tcmalloc].
- xssdoctor ships a four-part lifecycle oracle against repo-import build paths -- parent package with no hooks but a dependency pinned to a fixed commit, a leaf whose postinstall writes one marker file inside its own directory, a root-package control that refuses to build without its marker, plus submodule and nested-repo fixtures. Zero network, zero payload, fully detectable -- a clean harness for the question every importer answers wrong: what gets executed when you hand it a git tree [xssdoctor].
.-. .-. (: `---------------------' :) ) possibilities // #9 ( (: .---------------------. :) `-' `-'
- Fuzz the brotli serialized-state abort path with attacker-supplied dictionaries -- build custom dictionaries, truncate the stream mid-parse, then immediately start a second decode on the same handle under ThreadSanitizer. The mutex landed in BrotliInputStream, so hunt the C++ decoder and the Node/browser bindings for the same unsynchronized read of shared dictionary state [inspired by google/brotli].
- Grep every REST client you own for path-segment escaping bugs of the go-github shape -- repos, labels, tags, branch names, file paths. Then feed labels carrying
../,?,#, and%2e%2ethrough your automation and watch the request line, not the JSON body. Sibling SDKs and webhook dispatchers copy the same string-building idiom [inspired by google/go-github]. - Re-run container-teardown races against gVisor with descriptors deliberately held open -- keep filestore handles alive through kill, then diff the device-cgroup confinement commit for which device nodes are now denied and which were never allowed in the first place. Other runsc paths that allocate filestores off the container lifecycle are the twins to check [inspired by google/gvisor].
- Diff the sibling GPU backends for stale texture-ID reuse -- ANGLE touched D3D11-adjacent ID recreation and WGSL uniform layout; pull those two commits, then grep Dawn and the Vulkan and Metal paths for the same allocate-before-recreate ordering and hammer shared-texture import under thread contention [inspired by google/angle, google/dawn].
- Probe whether production sampling sanitizers are silently dead on your targets -- the seccomp incompatibility check changed, so profile a workload under common container seccomp profiles and check whether GWPSan interceptors actually install or get waved off. A sanitizer that quietly disables itself is worse than none [inspired by google/gwpsan].
- Clone the four-part lifecycle pattern against importers you are allowed to test -- one inert control, one root script that gates the build on a marker, one transitive dependency pinned by commit, one benign submodule. Point them at CI runners and repo-import flows, then read which markers appear. Markers, not shells [inspired by xssdoctor].
- Craft repo-shaped directories at vendor paths and watch the sanitizer's config resolution -- a nested minimal
.gittree is enough to redirect core.hooksPath, core.fsmonitor, or a local sshCommand if import logic decides to honor repo-local config. Test importers that recurse into nested trees instead of flattening to files [inspired by xssdoctor]. - Audit the C++/Rust boundary after the Abseil shims came out -- crubit dropped transitional shims and re-exports rs_std support libraries, which shifts what the generated bindings assume about layout and lifetimes. Regenerate bindings on a small crate, diff the emitted glue, and look for lifetime holes where the shim used to enforce ownership [inspired by google/crubit].
.-. .-. (: `--------------------' :) ) github brief // #9 ( (: .--------------------. :) `-' `-'
The blogs stayed dark, so the diff stream did the talking: a heap allocator and a GPU translation layer shuffling internals, a sandbox kernel quietly nailing its device confinement shut, and one researcher pushing a tidy little family of inert fixtures built to answer a question maintainers keep dodging -- what does your repo importer execute when it opens a git tree. No shells, no callbacks, no exfil. Just marker files and refusal-to-build gates, which is exactly how you make a build system confess.
- xssdoctor/muse-dependency-lifecycle-parent-20261114 -- JavaScript parent with no pre/install/postinstall hooks at all, but a dependency pinned to a researcher-owned repo at a fixed commit. If the leaf's install script runs, transitive lifecycle execution is confirmed without the parent ever asking for it. Textbook minimal delta.
- xssdoctor/muse-dependency-lifecycle-leaf-20261114 -- the detectable half: a postinstall that writes one fixed marker file inside its own package directory, no network, no subprocess, no symlink, no writes outside. Clean oracle -- the presence of the file is the whole finding.
- xssdoctor/muse-root-lifecycle-control-20261114 -- bun install writes a marker, the build refuses to proceed without it, so root-package lifecycle execution after tree inspection becomes a binary observable instead of a debate. The refusal gate is the good part; it makes silence look like failure, not safety.
- xssdoctor/muse-git-nested-config-bypass-20261114 -- owned-account fixture with a minimal repo-shaped directory parked at
vendor/lib, no scripts, no symlinks, no submodules, no network. Built to test whether nested git config handling gets honored or flattened during import. Poke atcore.hooksPathandcore.fsmonitorresolution while you are in there. - xssdoctor/muse-benign-submodule-parent-20261114 -- static-site parent with a real
vendor/leafsubmodule from the same account supplying one constant rendered as text; the leaf carries one public marker plus a JS module exporting the same literal, no manifest, no hooks. Confirms whether import recurses into submodules without ever giving it a reason to run code.