Labs
Short research notes on newly disclosed vulnerabilities: the problem, the payload, and the fix.
- highCVE-2026-84381
CVE-2026-84381: httpcore2 Cleartext WebSocket Transmission via SOCKS5 Proxy
When a Python app using httpcore2 routes a secure WebSocket connection through a SOCKS5 proxy, TLS is never started, so credentials and messages are sent in plaintext to anyone watching or…
- criticalCVE-2026-62815
CVE-2026-62815: MsQuic (Microsoft QUIC) Use After Free Remote Code Execution
A use-after-free bug in MsQuic's connection path migration logic lets an unauthenticated remote attacker crash or execute code on any server that accepts QUIC traffic, with no login or user…
- highCVE-2026-78675
CVE-2026-78675: GitPython Local File Content Disclosure via .gitmodules [include] Directive
Any tool that reads submodules from an untrusted Git repository can have the first line of any local file, think .env secrets or /etc/passwd, leaked into a Python exception message, just by calling…
- criticalCVE-2026-78676
CVE-2026-78676: GitPython Multi-line Config Value RCE via Unsafe Re-serialization
A git config file containing a legitimately encoded multi-line value can be silently corrupted into a live core.hooksPath directive the moment GitPython performs any unrelated config write, giving an…
- highCVE-2026-78677
CVE-2026-78677: GitPython clone_from() Path Traversal via --separate-git-dir
GitPython's clone_from() and clone() fail to block the --separate-git-dir option, letting an attacker redirect the entire .git metadata directory to any path on disk outside the intended clone…
- highCVE-2026-69222
CVE-2026-69222: LiquidJS join Filter memoryLimit Bypass (DoS)
A crafted LiquidJS template using concat and join can allocate strings up to 1385x larger than the configured memoryLimit budget, crashing the Node.js process with no way for the limit to stop it.
- criticalCVE-2026-75595
CVE-2026-75595: Netty SslClientHelloHandler SNI mTLS Bypass via Fragmented TLS ClientHello
A crafted, fragmented TLS ClientHello can trick Netty into silently skipping per-SNI certificate enforcement, letting an unauthenticated client connect where mutual TLS is required.
- highCVE-2026-72789
CVE-2026-72789: SiYuan Encrypted Notebook Publish Access Bypass
SiYuan's publish gate treats encrypted notebooks as publicly readable by default, letting any anonymous visitor enumerate and retrieve fully decrypted document content while a notebook is unlocked…
- criticalCVE-2026-60004
CVE-2026-60004: Gitea Remote Code Execution via diffpatch Git Hook Injection
Any user with write access to a Gitea repository, which on a default install means anyone who can register an account, can plant an executable shell script as a Git hook and run arbitrary commands as…
- criticalCVE-2026-73294
CVE-2026-73294: Semaphore UI OS Command Injection via git_url Argument Injection
Any project Manager or Owner in Semaphore UI can inject an arbitrary OS command into the git_url field of a repository, causing the Semaphore server itself to execute it and giving the attacker a…
- highCVE-2026-62384
CVE-2026-62384: NLTK FramenetCorpusReader Symlink Sandbox Bypass
A symlink planted inside an NLTK corpus directory can trick FramenetCorpusReader into reading any file on the system, bypassing the path-traversal guard added in the previous security fix.
- highCVE-2026-79676
CVE-2026-79676: NLTK Corpus Readers Symlink Path Traversal (pathsec Bypass)
Several NLTK corpus readers open files with Python's built-in open() instead of the security-aware nltk.pathsec.open(), so a symlink planted inside a trusted corpus root can silently pull in content…