ctipilot.ch

CTI Daily Brief — 2026-06-05

Typedaily
Date2026-06-05
GeneratorClaude Opus 4.8 (`claude-opus-4-8`)
ClassificationTLP:CLEAR
LanguageEnglish
Promptv2.60
Items8
CVEs7
On this page

On this page

Tags (18)
Regions (5)
References (21)

0. TL;DR

  • Volexity names VerdantBamboo (UNC5221 / WARP PANDA), an 18-month China-nexus espionage intrusion that entered a European organisation through its MSP and lived exclusively on EDR-blind edge devices — pfSense firewall, a Synology NAS, and an Egnyte Storage Sync VM whose egress IP was proxied to slip into the victim's Microsoft 365 tenant past Conditional Access. Two new implants (AGENTPSD, PLENET/GRIMBOLT) joined BRICKSTORM (Volexity, 2026-06-04). See § 1.
  • A fully public Redis exploit chain turns a two-year-old use-after-free into host RCE — and ~85% of cloud Redis runs passwordless, so "authenticated" is academic. CVE-2026-23479 grooms a freed client object and abuses Redis's own memory-accounting routine to overwrite the GOT, redirecting strcasecmp() to system(). Patched 2026-05-05; no ITW yet (ZeroDay.Cloud, 2026-06-02). See § 5.
  • Proofpoint's TA4922 — a China-nexus financially-motivated cluster now running the highest campaign tempo it tracks — has pivoted from Japan to Germany, the UK and Italy with native-language HR/payroll/tax lures, DLL-side-loaded Atlas RAT, and a deliberate move to LINE/WhatsApp/Teams to escape email controls (The Hacker News, 2026-06-04). See § 1.
  • CERT Polska disclosed an unauthenticated SSTI-to-RCE in Wirtualna Uczelnia, the student-administration platform across Polish public universities (CVE-2026-34906) — no vendor patch published at disclosure. EU public-sector education software with a pre-auth foothold path (CERT Polska, 2026-06-02). See § 2.
  • One malicious GitHub issue could hijack any public repo using Anthropic's claude-code-action — and could have poisoned the action itself. A [bot]-suffix actor check trusted any attacker-registered GitHub App, and indirect prompt injection chained to /proc/self/environ secret theft. Fixed in v1.0.94 (GMO Flatt Security, 2026-06-04). See § 3.

3. Research & Investigative Reporting

GMO Flatt Security: one GitHub issue could hijack any public repo running Anthropic's claude-code-action — and could have poisoned the action itself

Researcher RyotaK (GMO Flatt Security) disclosed a two-part flaw in Anthropic's claude-code-action GitHub Actions workflow, remediated in v1.0.94 (GMO Flatt Security, 2026-06-04; The Hacker News, 2026-06-04). The core bug is in checkWritePermissions() (src/github/validation/permissions.ts): the function unconditionally returns true for any actor whose username ends in [bot], on the assumption that GitHub App bots are admin-installed. But anyone can register a GitHub App, install it on a repo they own, and use its token to open an issue or PR on any public repository — so an attacker-controlled [bot] actor passes the gate, and agent mode lacked the secondary checkHumanActor() guard present in tag mode. Chained with indirect prompt injection (instructions embedded in the issue body that Claude reads during triage), the default read/write workflow token could be steered to read /proc/self/environ, exchange the OIDC token for a Claude GitHub App installation token with code/issues/workflows write, and exfiltrate secrets to the issue comment feed. Pointed at anthropics/claude-code-action itself, the same chain could have poisoned the action and propagated downstream. A second variant stemmed from Anthropic's own example workflow shipping allowed_non_write_users: "*". Anthropic rated the issues 7.8 (CVSS 4.0) and paid a bounty; RyotaK notes he has reported roughly 50 separate permission-system bypasses in this class. The underlying problem is not unique to Anthropic: separate "Comment and Control" research by Aonan Guan, reported in April, independently showed Claude Code, Gemini CLI and GitHub Copilot agents are all exposed to prompt injection via issue/PR comments (SecurityWeek, 2026-04-16).

Why it matters to us: any team running AI coding agents in CI/CD has imported a new, structural untrusted-input surface. Update claude-code-action to v1.0.94+, audit every issues/pull_request_target-triggered workflow that grants an AI agent write scope, and never widen allowed_non_write_users beyond vetted accounts.

University of Toronto / Vector Institute: a self-propagating worm that runs open-weight LLMs on compromised hosts to synthesise per-target exploits

A team from CleverHans Lab (University of Toronto), the Vector Institute, Cambridge and ServiceNow Research published a proof-of-concept worm (arXiv:2606.03811) on 2 June 2026, picked up this week by the German technical press (arXiv, 2026-06-02; heise online, 2026-06-04). The worm runs open-weight LLMs on already-compromised hosts to generate exploit code tailored to each machine it reaches — consuming stolen compute instead of attacker infrastructure or a commercial AI API, which makes platform-level safety controls (rate-limits, content policies) structurally irrelevant. On an isolated 33-node mixed Linux/Windows/IoT range the agent identified vulnerabilities on most hosts and propagated across several generations, and — the load-bearing finding — synthesised working exploits for three CVEs published after its model's training cutoff, i.e. adaptive reasoning beyond static knowledge. The authors frame the economic asymmetry: marginal attacker cost per new infection approaches zero while defenders must patch every reachable flaw. The paper withholds usable exploit code; closest ATT&CK analogues are T1203, T1210, T1570.

Why it matters to us: the operational implication is that "no public PoC yet" stops being a reliable proxy for low near-term exploitation risk, which pressures patch-velocity SLAs and elevates internal micro-segmentation from best-practice to load-bearing control. A pragmatic early-warning signal: unexpected local LLM-inference activity on compromised hosts (e.g. Ollama on port 11434, sustained GPU-heavy processes where none belong).

4. Updates to Prior Coverage

UPDATE: ShinyHunters extortion campaign adds DentaQuest — 234 GB published after refusal to pay, 2.6 M dental-benefit records exposed

UPDATE (originally covered 2026-06-02): DentaQuest, a Sun Life subsidiary administering dental and vision benefits for ~35 M US Medicaid, Medicare and employer-plan members, is the latest confirmed named victim of the ShinyHunters data-extortion campaign last covered here on the Charter Communications listing. ShinyHunters listed DentaQuest on 23 May with a 27 May ransom deadline and published 234 GB after the deadline passed unpaid; in a 1 June statement DentaQuest confirmed unauthorised access to "a limited portion of its network" (BleepingComputer, 2026-06-04).

The dataset is HIPAA-format ASC X12 claims interchange — names, postal and email addresses, dates of birth, phone numbers, health-insurance details and Medicaid IDs across 2.6 M unique email addresses (BankInfoSecurity, 2026-06-04). DentaQuest's specific attack vector is not publicly confirmed, but the extortion pattern (extortion-without-encryption, a hard deadline, publish-on-refusal) matches the broader ShinyHunters campaign — several of whose other victims this year were reached through compromised cloud-SaaS (Salesforce) access. The operational reminder for defenders is unchanged: this actor monetises pure exfiltration, so backups do not blunt the leverage — detection has to land at the bulk-export stage (large outbound archive transfers from claims systems; and, where cloud-SaaS access has been the entry point for other victims, off-hours SaaS API token generation and anomalous bulk-export API calls).

5. Deep Dive — Redis CVE-2026-23479: a public use-after-free→GOT-overwrite RCE in a database 80% of cloud estates run passwordless

Theori's autonomous vulnerability-discovery tool Xint Code (credited to Team Xint Code — Tim Becker, Jacob Newman, Juno IM) found CVE-2026-23479, a use-after-free in Redis's blocking-client code path that an authenticated client can drive to remote code execution on the host. The full exploit chain became public on 2 June 2026 in the write-up from the Wiz-run ZeroDay.Cloud 2025 competition, coinciding with the patch release (ZeroDay.Cloud, 2026-06-02). Redis disclosed it on 5 May among five flaws it patched that day — four rated High and RCE-class (CVE-2026-23479, -25243, -25588, -25589) plus one Medium-severity Lua use-after-free (Redis, 2026-05-05; The Hacker News, 2026-06-03).

Root cause. unblockClientOnKey() in src/blocked.c calls processCommandAndResetClient() without checking whether the client object was freed as a side effect of client eviction during that command's processing. Because Redis's zfree() does not zero memory, the freed client slot keeps stale-but-valid-looking bytes and the function keeps operating on freed memory. The defect was introduced across two commits that landed in Redis 7.2-rc1 and shipped in 7.2.0 (January 2023's PR #11012 added the unchecked reset call; a March 2023 change removed the preceding NULL guard), and it survived undetected in every stable branch for over two years.

Exploitation chain. The public PoC is a deliberate three-stage memory-grooming sequence:

  1. Heap-address leak (T1203) — an EVAL one-liner (return tostring(redis.call)) leaks a Lua heap pointer, defeating ASLR for the next stages.
  2. Use-after-free groom — the attacker manipulates client memory limits via CONFIG SET, parks a bloated client on a stream with XREAD, then collapses the limits to force eviction (the free), and reclaims the freed slot with a pipelined SET carrying a forged client structure.
  3. GOT overwrite → system() — Redis's own updateClientMemoryUsage() performs an out-of-bounds decrement using attacker-controlled fields in the forged client, writing into the Global Offset Table. The official Redis Docker image ships with only partial RELRO, leaving the GOT writable, so the write repoints strcasecmp() to system() and the next command string is executed as an OS command (T1059).

The "authenticated" caveat barely applies. The chain needs a session whose ACL grants @admin (CONFIG SET), @scripting (EVAL), @stream (XREAD/XADD) and @read/@write — which is exactly the default user in a stock deployment. The write-up reports Redis is present in ~80% of cloud environments and that ~85% of those instances run without a password, so in the common case the "authentication" prerequisite is satisfied by anyone who can reach the port. There is no confirmed in-the-wild exploitation, but the chain is fully public and Redis is ubiquitous, so this is an asset-enumeration priority even before patching. NVD scores it 8.8 (CVSS 3.1); Redis scores it 7.7 (CVSS 4.0).

Affected and fixed. Vulnerable: 7.2.0–7.2.13, 7.4.0–7.4.8, 8.2.0–8.2.5, 8.4.0–8.4.2, 8.6.0–8.6.2. Fixed 2026-05-05 in 7.2.14, 7.4.9, 8.2.6, 8.4.3, 8.6.3; Redis Cloud is already patched.

Hunt and detection concepts. This exploit is loud in Redis's own telemetry if you collect it. Enable the slow log (slowlog-log-slower-than 0 captures every EVAL and CONFIG SET) and alert on the signature sequence rather than any single command: an EVAL returning an unusually long string, immediately followed by rapid CONFIG SET maxmemory* churn and pipelined XADD/XREAD/SET from a single client. At the OS layer the decisive signal is redis-server spawning any child process — a normal Redis never does (Sysmon-for-Linux / auditd execve with parent redis-server; on Windows-hosted Redis, Sysmon EID 1 with parent-image filter). Audit ACL LIST for any user — especially default — that simultaneously holds CONFIG, EVAL and stream commands.

Hardening / mitigation. Patch to the fixed builds. Where patching lags, you can break specific stages of the chain via ACL least-privilege without touching the binary: deny CONFIG to application users (breaks stage 2), deny @scripting/EVAL if Lua is unused (kills the stage-1 leak), and split @admin away from the application role. Independently, require a password and bind Redis off the public internet behind TLS and network policy — that alone removes the unauthenticated-in-practice exposure that makes this widely critical. Rotate any broadly shared credential that combines admin, scripting and stream privileges. ATT&CK: T1203, T1059.

6. Action Items

  • Patch Redis to 7.2.14 / 7.4.9 / 8.2.6 / 8.4.3 / 8.6.3 (§ 5). Where patching lags: require a password, bind off the public internet, and apply ACL least-privilege (deny CONFIG and @scripting to application users) — this breaks the public exploit chain. First inventory every reachable Redis instance, especially passwordless ones.
  • Update claude-code-action to v1.0.94+ and audit AI-agent CI/CD workflows (§ 3). Review every issues / pull_request_target-triggered workflow that grants an AI agent write scope; never set allowed_non_write_users to "*".
  • Hunt for the VerdantBamboo edge-device pattern (§ 1): M365 sign-ins originating from NAS / storage-sync / firewall egress IPs; SSL-VPN re-enablement and admin authentication to perimeter appliances. Enforce MFA on all firewall management/SSL-VPN interfaces and treat MSP access to your perimeter as privileged-insider access.
  • Polish public-university operators: shield Wirtualna Uczelnia now (§ 2) — restrict the redirectToUrl endpoint to internal/authenticated sources and hunt access logs for template metacharacters until Simple SA ships a fix (no patch at disclosure).
  • Hunt TA4922 tradecraft (§ 1): DLL side-loading where AnyDesk/SyncFuture load from unexpected paths; Python processes touching Chrome/DPAPI credential stores; unsolicited LINE/WhatsApp/Teams contact that pivots to a document.
  • macOS fleets: behavioural detection for FlutterShell (§ 1) — Gatekeeper/notarization will not catch it. Alert on apps instantiating WKWebView with a JS message handler that spawns shells, non-browser writes to Chrome's Secure Preferences, and "productivity" apps reaching CDN-fronted infrastructure.
  • Patch and watch internet-facing cPanel (§ 1): pin to current release, disable unused modules, alert on admin lockouts and anomalous file-manager/FTP changes.

7. Verification Notes

  • Dropped — CVE-2026-41283 (OpenStack Mistral): a sub-agent surfaced this as an "unauthenticated, CVSS 9.9, pre-auth RCE." A Phase 2 spot-check of the primary advisory (OSSA-2026-020 via oss-security, 2026-06-03) contradicts that framing: the policy-enforcement bypass requires any authenticated user, the advisory carries no CVSS score, and there is no ITW exploitation. The "unauthenticated 9.9" claim traced to a low-reliability aggregator (thehackerwire.com) and did not survive verification. Authenticated, no-PoC, no-ITW, CVSS-unconfirmed → does not clear a § 2 inclusion gate.
  • Dropped — CVE-2022-0492 (Linux cgroups v1 release_agent): already covered as the 2026-06-03 deep dive (the KEV re-entry was that day's story). The only new element offered was the CISA KEV remediation deadline (5 June), which is a US FCEB compliance date with no jurisdictional weight in CH/EU and is not material new development (PD-13). Excluded.
  • Dropped — CERT-FR weekly bulletin CERTFR-2026-ACT-024: a national-authority consolidation of CVEs already covered individually (Samba CVE-2026-4408/-4480, PAN-OS CVE-2026-0257); no new in-window delta. Roll-up digests are not cited in place of the primaries they summarise (PD-12).
  • Dropped (editorial relevance, off-audience or low operational signal): ECB "dear CEO letter" on AI-cyber risk (supervisory/policy framing, thin for a technical SOC, weak corroboration); Europol Operation KRATOS 2 (illegal-streaming takedown) and the Spain fake-EU-document-factory takedown (law-enforcement, little defender action); IMA Diligence Services breach (US-only insurance, limited CH/EU nexus); Luna Moth / Weil Gotshal extortion (single reported ransom figure, low novelty); Hola Browser XMRig-miner supply-chain incident (consumer browser, already remediated, ~0.1% impact).
  • Single-source items (named): VerdantBamboo / UNC5221 (§ 1) — Volexity only, HIGH-reliability primary IR research, marked [SINGLE-SOURCE] in-line. CVE-2026-34906 / -34907 (§ 2) — CERT Polska only, national-CERT carve-out as primary disclosing party (PD-5).
  • Reduced confidence — only aggregator sources: TA4922 (§ 1) — Proofpoint is the primary research origin but its blog is a JS-rendered SPA that could not be fetched directly; coverage rests on The Hacker News and BleepingComputer reporting Proofpoint's findings, both news-aggregator hosts.
  • No item met the Immediate Actions bar this run (no confirmed active mass-exploitation requiring same-hour action), so the § 0 callout is omitted.
  • Noted but not pursued: a JFrog report on IronWorm (a Rust-based worm in the Shai-Hulud / TeamPCP npm supply-chain cluster) surfaced via a newsletter digest. The Shai-Hulud cluster is a long-running campaign already consolidated in the 2026-W22 weekly, so it is deferred under the long-running-campaign rule (PD-8) rather than re-opened here.
  • Verification: 3 iterations (all on the Sonnet cti-verification-alt variant — the Opus cti-verification spawn was blocked twice by Anthropic's violative-cyber-content classifier while ingesting the brief; the Sonnet variant was used to satisfy the mandatory verification loop). Iter 1 → NEEDS_FIXES (SecurityWeek mis-dating/mis-attribution; an unsupported conference claim; a broken victim-statement URL); iter 2 → NEEDS_FIXES (Xint Code mis-attributed to Wiz vs. Theori; an over-counted CVE total; a Salesforce vector projected onto DentaQuest); iter 3 → CLEAN. Residual: 0.
  • Coverage gaps: inside-it-ch (persistent 403, no usable Wayback snapshot — 6+ runs); databreaches-net (403, no Wayback — 6+ runs); sophos-xops (HTTP 503 — 5+ runs); sec-disclosures-edgar (bridge HTTP 500; EDGAR full-text fallback returned 0 Item 1.05 filings in window); proofpoint-blog (JS-SPA, body not fetchable); ncsc-ch-security-hub, safeonweb-be, ncsc-ie, enisa, mandiant-gtig — not fetched or no in-window items this run.