Skip to content

[CALCITE-7605] Threat model: add Inputs table, Downstream responsibilities, and Triage dispositions#3

Open
potiuk wants to merge 1 commit into
vlsi:CALCITE-7605-threat-modelfrom
potiuk:asf-security/threat-model-sections-2026-07-21
Open

[CALCITE-7605] Threat model: add Inputs table, Downstream responsibilities, and Triage dispositions#3
potiuk wants to merge 1 commit into
vlsi:CALCITE-7605-threat-modelfrom
potiuk:asf-security/threat-model-sections-2026-07-21

Conversation

@potiuk

@potiuk potiuk commented Jul 21, 2026

Copy link
Copy Markdown

These three sections round out the threat model against a standard threat-model rubric. All additive — nothing here edits existing content; each section just consolidates something the model already implies into a form a triager (human or automated) can route against mechanically.

Targeting this branch (the more complete and internally-consistent of the two CALCITE-7605 drafts) so it folds directly into apache#5115.

  • Inputs (after Assets) — every attacker-controlled input mapped to the property/rule that governs it.
  • Downstream responsibilities (after Not a vulnerability) — the host/operator duties the model states in several places, collected in one spot.
  • Triage dispositions (after Denial of service) — a closed outcome set: Valid · Not a vulnerability (by design) · Out of model · Known limitation · Duplicate · Model gap.

Two things I guessed at — please correct:

  1. The SPI-position list in the Inputs table (schemaFactory, tableFactory, function, operator, parserFactory, typeSystem) — is typeSystem right, and is fun keyword-only (I left it out)?
  2. Is pushed-down SQL Valid (Calcite generates the text) or Out of model (folded into "third-party driver behavior past the connection")? The model leaves it implicit; an explicit one-liner would pre-empt the most likely recurring report.

Take, edit, or drop any of it — the model is yours.

Generated-by: Claude Opus 4.8 (1M context)

… Triage dispositions

Additive sections rounding out the threat model against a standard
threat-model rubric; no existing content is changed. Inputs maps each
attacker-controlled input to its governing property/rule; Downstream
responsibilities collects the host/operator duties; Triage dispositions
gives a closed outcome set for routing reports.

Generated-by: Claude Opus 4.8 (1M context)
vlsi added a commit that referenced this pull request Jul 21, 2026
… Triage dispositions

Fold in the three additive sections proposed in #3, corrected
against the code:

- Inputs: map every attacker-controlled input to its governing rule. Add the
  metaTableFactory/metaColumnFactory PLUGIN properties, place operator under the
  RelJson row (SqlOperator loads only via RelJson), and note that fun selects
  built-in libraries rather than loading a class.
- Downstream responsibilities: collect the host/operator duties in one place and
  drop the now-duplicated transport paragraph from the attacker section.
- Triage dispositions: a closed outcome set a human or agent can route against.
- Not a vulnerability: state that pushed-down SQL is by design, while a pushdown
  bug that reads beyond the configured schemas is P4.

Also record the ModelHandler.addFunctions raw Class.forName sink in the living
inventory.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vlsi added a commit that referenced this pull request Jul 21, 2026
… Triage dispositions

Fold in the three additive sections proposed in #3, corrected
against the code:

- Inputs: map every attacker-controlled input to its governing rule. Add the
  metaTableFactory/metaColumnFactory PLUGIN properties, place operator under the
  RelJson row (SqlOperator loads only via RelJson), and note that fun selects
  built-in libraries rather than loading a class.
- Downstream responsibilities: collect the host/operator duties in one place and
  drop the now-duplicated transport paragraph from the attacker section.
- Triage dispositions: a closed outcome set a human or agent can route against.
- Not a vulnerability: state that pushed-down SQL is by design, while a pushdown
  bug that reads beyond the configured schemas is P4.

Also record the ModelHandler.addFunctions raw Class.forName sink in the living
inventory.

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-Authored-By: Claude Opus 4.8 <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