Repository navigation
fix(orchestrator): close SQL source-table allowlist bypass via comma joins #35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
seonghobae
wants to merge
43
commits into
main
Choose a base branch
from
claude/inkspan-pr-audit-ci-q1u4uj
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 38 commits
Commits
Show all changes
43 commits
Select commit
Hold shift + click to select a range
b4254a9
fix(fuzz): surface Atheris crash reproducers in the run log
claude 25fe95c
fix(fuzz): bound in-memory evidence growth to stop execute_query OOM
claude 82911bd
fix(security): remediate base-branch Semgrep SAST findings blocking PRs
claude cc6dbeb
test(authz): cover JWKS URL scheme guard (unblock coverage-evidence)
claude 47386e7
test(authz): reach 100% coverage of the OIDC/JWKS module
claude 38ab65f
test(authz): drop constant-condition ternary flagged by code-quality
claude 54f6035
fix(orchestrator): close SQL source-table allowlist bypass via comma …
claude d1691c1
test(policy): pin governance deny-paths (policy.py 88% -> 98%)
claude 23909c7
test(browse): cover PII-masking + policy-deny/validation paths (brows…
claude aec9570
test(observability): cover log-sink export + header extraction (80% -…
claude cbaf7c8
test(config): cover the DB-backed KV config loader (config.py 77% -> …
claude a504523
test(orchestrator): pin SQL-safety guards + query-draft branches (89%…
claude 529aa03
test(connectors): pin source-connector contract guards (84% -> 100%)
claude a72033a
test(sdp): cover embeddings, connector-secret status, semantic valida…
claude 6263c0c
test(sdp): bring catalog + demo_smoke to 100% line coverage
claude 03f0225
chore: refresh head for last-push approval
opencode-agent[bot] 02a63c6
docs(fuzz): document all reproducer artifact types
seonghobae a71f4b4
fix(fuzz): emit shell-safe absolute replay command
seonghobae 492ea6e
test(authz): prove rejected JWKS schemes never fetch
seonghobae c73b872
test(credentials): remove vacuous secret exposure assertion
seonghobae 88e4f39
fix(catalog): preserve schema fields in patch requests
seonghobae c257ae4
test(catalog): exercise schema patch through public contract
seonghobae 03fe04c
test(browse): require masking integration fixture
seonghobae c496915
fix(security): suppress three verified false-positive Semgrep findings
claude bd8b307
chore(ci): retrigger required review pipeline at same tree
claude 2ba30b9
chore(ci): re-fire synchronize after Actions event-processing outage
claude 8130be1
chore: refresh head for last-push approval
opencode-agent[bot] 1ced73d
Merge PR #34 base remediation into comma-join fix branch
0d8b3ad
test(sql): preserve derived-table projection commas
seonghobae 7fb0077
fix(sql): ignore nested projection commas in relation scan
seonghobae 93cafb3
refactor(sql): keep parser fix narrowly scoped
seonghobae a8d6967
test(security): require patched cryptography locks
seonghobae 00fb51b
fix(security): pin patched cryptography runtime
seonghobae 061af7a
fix(security): constrain test resolver to patched cryptography
seonghobae f0bb292
ci: materialize patched dependency locks once
seonghobae 86ebe03
docs(security): record cryptography advisory decision
seonghobae a1d90ec
ci: run one-shot lock materializer on exact PR head
seonghobae 4c12f25
fix(ci): remove unsafe temporary lock materializer
seonghobae c384254
Merge remote-tracking branch 'origin/main' into local/pr35
claude fcc5faa
fix(security): bump cryptography 49.0.0 -> 50.0.0 (CVE-2026-69247)
claude 5e40a9a
fix(security): make FROM-clause boundary/JOIN scanning paren-depth-aware
claude b9a5b08
fix(security): collect parenthesized-join relations in SQL allowlist
cursoragent 9c12f5d
fix(review): address remaining CodeRabbit comments on existing #35 files
cursoragent File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| # Dependency security decisions | ||
|
|
||
| ## Cryptography 50.0.0 security floor | ||
|
|
||
| ### Decision | ||
|
|
||
| All installable Python dependency surfaces must resolve `cryptography==50.0.0` or a later explicitly reviewed replacement. The runtime metadata, test resolver input, and generated hash-locked files are kept aligned so local development, CI, and production installation cannot silently reintroduce an affected release. | ||
|
|
||
| ### Security rationale | ||
|
|
||
| GitHub Advisory Database entry GHSA-g6cj-pr64-35w5 describes a Bleichenbacher-style oracle in PKCS#7 EnvelopedData decryption caused by distinguishable errors and timing. The affected range is `cryptography>=44.0.0,<50.0.0`; version 50.0.0 is the first patched release. The repository previously resolved 49.0.0 through the `PyJWT[crypto]` dependency graph, so the direct security floor is intentional rather than relying on a transitive resolver choice. | ||
|
|
||
| ### Verification contract | ||
|
|
||
| `tests/test_dependency_security.py` verifies that: | ||
|
|
||
| 1. `pyproject.toml` and `requirements-test.in` declare the patched floor; | ||
| 2. each installable hash-locked dependency file contains exactly one `cryptography==50.0.0` entry; and | ||
| 3. no stale affected pin remains in those installation surfaces. | ||
|
|
||
| Regenerate the locks with the repository's pinned `uv` compiler and review the resulting graph before merge: | ||
|
|
||
| ```bash | ||
| uv pip compile pyproject.toml --generate-hashes -o requirements.txt | ||
| uv pip compile pyproject.toml --extra dev --generate-hashes -o requirements-dev.txt | ||
| uv pip compile --generate-hashes --universal --python-version 3.12 \ | ||
| requirements-test.in -o requirements-test.txt | ||
| ``` | ||
|
|
||
| Security scanning, tests, and exact-current-head review remain required after lock regeneration. A successful scan on an earlier head is not evidence for the regenerated graph. | ||
|
|
||
| ## Reference | ||
|
|
||
| GitHub. (2026, August 3). *Cryptography: PKCS#7 EnvelopedData decryption exposes a Bleichenbacher oracle through distinguishable errors and timing (GHSA-g6cj-pr64-35w5).* GitHub Advisory Database. https://github.com/advisories/GHSA-g6cj-pr64-35w5 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.