Skip to content

Add Snowflake platform red-team assessment#44

Merged
AndrewAltimit merged 2 commits into
mainfrom
snowflake-redteam-assessment
May 15, 2026
Merged

Add Snowflake platform red-team assessment#44
AndrewAltimit merged 2 commits into
mainfrom
snowflake-redteam-assessment

Conversation

@AndrewAltimit
Copy link
Copy Markdown
Owner

Summary

  • Findings document (docs/analysis/snowflake-platform-attack-surface-2026.md) — working notes covering UNC5537 / post-2024 threat landscape, authoritative CVE inventory sourced from OpenCVE, full platform attack surface (auth/identity, Cortex AI, Native Apps/NAAAPS, SPCS, external functions/storage integrations, execution primitives), five attack chains, detection blind spots, and tooling-reuse map against existing repo modules
  • Report web app (reports/snowflake-platform-assessment/) — six linked static HTML pages with no build step; CI copies the directory as-is to _site/snowflake/
  • Landing page (site/index.html) — Snowflake report card added alongside the Databricks dashboard

Pages

Page Content
index.html Executive summary, key findings, scope
threat-landscape.html UNC5537 incident, post-2024 hardening, 2026 attacker profiles
cve-inventory.html CVE table with red-team commentary (CVE-2026-6442 through the connector secret-leakage cohort)
attack-chains.html Chains A-E: credential theft, Cortex AI injection, Native Apps supply-chain, federated-IdP pivot, cross-cloud storage pivot
detection.html Audit sources, blind spots, detection SQL
recommendations.html Prioritized controls (immediate / short-term / AI surface)

CI change

Removed the build step entirely (no concatenation needed for a plain HTML site). The assemble step is now a single cp -r.

Test plan

  • Verify all six HTML pages open and nav links work locally (python -m http.server 8080 in the report dir)
  • Confirm CI passes (assemble step copies _site/snowflake/ correctly)
  • Spot-check GitHub Pages landing page shows the new report card

Generated with Claude Code

AI Agent Bot and others added 2 commits May 15, 2026 07:08
Deep dive covering UNC5537 / post-2024 landscape, authoritative CVE
inventory (CVE-2026-6442 Cortex Code sandbox escape, JDBC privilege
escalation, connector secret-leakage cohort), five attack chains
(credential theft, AI injection, Native Apps supply-chain, federated-IdP
pivot, cross-cloud storage integration), detection surface analysis, and
prioritized recommendations.

Deliverables:
- docs/analysis/snowflake-platform-attack-surface-2026.md — working notes
- reports/snowflake-platform-assessment/ — six linked static HTML pages
  (no build step; CI copies directory as-is to _site/snowflake/)
- site/index.html — report card added to GitHub Pages landing page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds the attack chains and audit surfaces the analysis doc carried but the
HTML report omitted (key-pair theft, Direct Share / Replication exfil, SPCS
egress, MCP tool poisoning, connector debug-log to SIEM, bind-parameter
evasion, CVE-2026-6442 retrospective hunt), the auth-surface table covering
PATs and SCIM, and a Cortex inference-egress section. Tiers recommendations
with P0/P1/P2 badges and owner/effort hints. Adds an appendix page with
glossary and scope. CI gains a nav-parity and internal-link check, and the
assemble step is hardened with an explicit allowlist and an existence gate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AndrewAltimit AndrewAltimit merged commit 084fb40 into main May 15, 2026
2 checks passed
@AndrewAltimit AndrewAltimit deleted the snowflake-redteam-assessment branch May 15, 2026 13:09
AndrewAltimit added a commit that referenced this pull request May 15, 2026
…depth (#45)

Builds on the docs-only iter-1 (PR #44) with full-PoC tooling across the
three target areas plus the empirical work the prior appendix flagged
as deferred.

New tooling — all loopback-mocked, all gated on ContainmentGuard, all
paired with detection/ subdirs per the repo convention:

- tools/cloud-identity/snowflake/    — JWT key-pair signer (Chain F),
                                       PAT scope walk, SCIM token
                                       harvester w/ role-race primitive
- tools/lateral-movement/snowflake-pivot/ — storage-integration enum
                                       (Chain E), Direct Share +
                                       replication-group exfil (Chain G,
                                       audit-bypass demo), bind-param
                                       evasion against QUERY_HISTORY
- tools/llm-attacks/cortex/          — Cortex Search poisoning bench,
                                       Cortex Agent MCP poisoning bench
                                       (Chain I), Cortex Guardrails
                                       FP/FN test harness

Mocks (loopback-only, ports 9600/9610/9620):

- infra/lab/mock-snowflake/         — REST surface: JWT/PAT/SCIM auth,
                                      SQL exec w/ QUERY_HISTORY replay,
                                      shares/replication, Cortex
                                      Search/Agents w/ a deterministic
                                      planner stub
- infra/lab/mock-snowflake-mcp/     — pluggable MCP server for the
                                      Cortex agent bench

Detection pack:

- 13 Sigma rules + KQL/SPL hunts + per-tool false-positive notes
- detection/snowflake/ cross-chain index covering chains A–I, plus a
  streaming QUERY_HISTORY ingest pattern (KQL) and a connector-debug-
  log secret-cohort regex (SPL) — addresses prior appendix question
  about real-time alerting vs ACCOUNT_USAGE's ~45m latency

Analysis / report content:

- docs/analysis/snowflake-platform-attack-surface-2026.md gains chains
  F–I (closes the gap with the HTML report's chain set), the Snowflake
  Trail vs ACCOUNT_USAGE field-by-field mapping, and the JDBC
  4.0.0–4.2.0 transitive-CVE rollup
- reports/.../cve-inventory.html adds the 9 transitive CVEs shipped in
  2026 H1 JDBC releases
- reports/.../index.html clarifies how technical, business, and
  leadership readers should each navigate the report
- site/index.html landing card refreshed for chains A–I + new tooling

Containment additions:

- tools/lib/containment.py — assert_snowflake_is_mock,
  assert_snowflake_lab_account (multi-account aware so source+target
  lab accounts both pass Chain G validation), three reserved mock
  ports

CI:

- ci/check_snowflake_tools_syntax.py compiles every new module; wired
  into main-ci.yml alongside the existing snowflake report-integrity
  gate
- All 11 CI gates pass locally (detection-pairing confirms each new
  tool dir is paired with a detection/ subdir)

Empirical findings landing in this iteration:

- Chain G server-side data motion confirmed as a source-side audit
  gap on the mock — pair with lab-validation/*.sql to validate against
  a sandbox tenant
- Bind-parameter coverage gap reproduced end-to-end: prepared COPY
  INTO @stage statements record only the parameterized text in
  QUERY_HISTORY, bind values are absent
- Cortex Agent planner does propagate second-order tool calls and
  does execute SQL embedded in tool output — demonstrated against
  both directive and sql_embed MCP modes
- First-gen regex Guardrails baseline catches ~54.5% of the public
  IPI seed corpus — concrete floor for the appendix question

Co-authored-by: AI Agent Bot <ai-agent@localhost>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant