Skip to content

Snowflake red-team iter 3 - corpus expansion, streaming-ingest config, platform comparison#46

Merged
AndrewAltimit merged 1 commit into
mainfrom
snowflake-redteam-iter3
May 15, 2026
Merged

Snowflake red-team iter 3 - corpus expansion, streaming-ingest config, platform comparison#46
AndrewAltimit merged 1 commit into
mainfrom
snowflake-redteam-iter3

Conversation

@AndrewAltimit
Copy link
Copy Markdown
Owner

Summary

Builds on PR #45 (iter-2). Closes the iter-3 handoff items that did not require live-tenant access; iter-4 picks up the empirical-validation work the sandbox tenant wasn't available for this cycle.

  • Guardrails corpus + re-baseline. tools/llm-attacks/cortex/guardrails-harness/corpus.py covers the documented IPI class spectrum - MCP / memory-injection / markdown-render / multimodal / encoded / context-boundary / approval-bypass / Snowflake-native / citation / JSON-schema / tool-truncation - plus benign controls for each new class. Re-baseline against the regex mock shows recall collapsing on the expanded corpus, concentrated in the classes a regex matcher cannot reach. That breakdown is the empirical artifact the assessment appendix called for.
  • CVE rescrape verified through 2026-05-15. Inventory now stamps the verification window; flags two Python connector 4.5.0 vendor fixes (Okta SAML port-comparison redirect + OCSP cache deserialization) as pending formal CVE assignment; adds the April 2026 third-party-SaaS-token-theft incident as ecosystem context with the same mitigation shape as Chain A.
  • Databricks vs. Snowflake comparison. New docs/analysis/databricks-vs-snowflake-platform-comparison.md - primitive map, chain-by-chain mapping (Snowflake A-I to Databricks analogues), divergence analysis, detection-reuse notes. Stays inside the "no build step" framing for both reports.
  • Streaming-ingest concrete config. detection/snowflake/streaming-ingest/ ships the producer side of the pattern referenced by the existing KQL hunt: Python poller, Azure Function App wrapper, Terraform infra, and a docker-compose lab harness. End-to-end smoke against the mock-Snowflake service shows a COPY INTO @stage flowing into the Sentinel CL projection.
  • Visual regression on the Snowflake report. reports/snowflake-platform-assessment/tests/ adds a Playwright screenshot suite; per-page baselines committed; the test pattern mirrors the existing Databricks one.

Test plan

  • CI gate check_snowflake_report_integrity.py passes on the new appendix.html nav addition
  • CI gate check_snowflake_tools_syntax.py passes on the corpus + mock + poller edits
  • CI gate check_detection_pairing.py unaffected (streaming-ingest is under detection/, not tools/)
  • python3 -m pip install -e ".[test]" + pytest tests/ from reports/snowflake-platform-assessment/ re-runs and passes against the committed baselines
  • terraform -chdir=detection/snowflake/streaming-ingest/terraform validate (no provider creds needed)
  • docker-compose -f detection/snowflake/streaming-ingest/docker-compose.yml up brings the lab pipeline up end-to-end against the mock Snowflake on 127.0.0.1:9600 (smoke-tested locally)
  • Guardrails harness against the mock: python3 tools/llm-attacks/cortex/guardrails-harness/mock_guardrails.py & then python3 tools/llm-attacks/cortex/guardrails-harness/run_harness.py --target mock --json-out /tmp/r.json shows the re-baselined recall / specificity / per-family / per-category breakdown

Generated with Claude Code

…g, platform comparison

Builds on iter-2. Closes the iter-3 handoff items that did not require
live-tenant access; iter-4 picks up the empirical-validation items the
sandbox tenant wasn't available for this cycle.

Guardrails FP/FN harness — corpus expansion (Task 1)
  - corpus.py adds MCP / MemoryInjection / MarkdownRender / Multimodal /
    encoded-payload / context-boundary / approval-bypass / SnowflakeNative /
    citation-poisoning / JSON-schema / tool-truncation classes plus benign
    controls for each new class
  - mock_guardrails.py picks up a few more regex patterns (still
    intentionally weak); the re-baseline shows the regex-tier recall
    collapsing on the expanded corpus, concentrated in the classes a
    pattern matcher cannot meaningfully reach — the empirical breakdown
    the assessment appendix called for

CVE inventory refresh (Task 2)
  - Re-scrape stamp through 2026-05-15; no new Snowflake-attributed CVEs
    in window
  - Python connector 4.5.0 vendor-fix entries (Okta SAML port-comparison
    redirect + OCSP cache deserialization) flagged pending formal CVE
    assignment
  - Anodot third-party-SaaS-token-theft incident added as ecosystem
    context; same mitigation shape as Chain A

Databricks ↔ Snowflake platform comparison (Task 3)
  - docs/analysis/databricks-vs-snowflake-platform-comparison.md
  - Primitive map, chain-by-chain mapping (Snowflake A–I → Databricks
    analogues), divergence analysis, detection-reuse notes; stays
    inside the existing "no build step" framing for both reports

Streaming-ingest concrete config (Task 4)
  - detection/snowflake/streaming-ingest/ — Python poller, Azure Function
    wrapper, Terraform infra, and a docker-compose lab harness
  - End-to-end smoke against the mock-Snowflake service: COPY INTO @stage
    seeded → mock query history → poller projects into Sentinel CL schema
  - terraform validate passes

Visual regression test for the Snowflake report (Task 5)
  - reports/snowflake-platform-assessment/tests/ — Playwright screenshot
    suite; per-page baselines committed; re-run passes

Hygiene
  - .gitignore adds .pytest_cache/, .terraform/, *.tfstate*
  - CLAUDE.md index gets the new doc + streaming-ingest pointers
  - All repo CI gates pass locally: snowflake report integrity, snowflake
    tools syntax, detection pairing, no committed drivers, no real tenants

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AndrewAltimit AndrewAltimit merged commit dc3ce1d into main May 15, 2026
2 checks passed
@AndrewAltimit AndrewAltimit deleted the snowflake-redteam-iter3 branch May 15, 2026 14:27
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