Repository navigation
fix: config policy, redaction, and sink peer pin - #2115
Conversation
The SQL sink kept the validated addresses and dropped them before create_engine. The MongoDB connector now stays on the guarded seed. Refs #2097
A config_admin save no longer rewrites RBAC, the API key, audit logs, WebAuthn, trusted_* keys, or licensing unless the principal has admin. The POST still returns 303. A URL that cannot be redacted becomes the placeholder, omitted non-secret keys and shortened lists are deletions, and webhook URLs are redacted. Refs #2090 Refs #2093
CONTRIBUTING states the actor gate already enforced by .github/workflows/claude.yml. The workflow file is unchanged. Refs #2105
| pin_ips = _guard_sql_host(cfg) | ||
| meta = _session_meta(db_manager, sid) | ||
| rows = _finding_rows(db_manager, sid, include_sample=include_sample) | ||
| label = redacted_sink_label(cfg) | ||
| if kind in _MONGO_TYPES: | ||
| _push_mongo(cfg, meta, rows, on_conflict=_on_conflict(cfg)) |
There was a problem hiding this comment.
🔒 Agentic Security Review
Severity: MEDIUM
pin_ips is captured from _guard_sql_host() (including Mongo) and then unused on the Mongo branch. _push_mongo() still builds MongoClient(uri) with no HostResolutionPin and no directConnection=True.
Impact: After the SSRF guard accepts the seed, pymongo can re-resolve DNS and follow replica-set topology to peers the guard never saw — the same class this PR pins on the SQL sink and the Mongo scan connector.
Reviewed by Cursor Security Reviewer for commit 6c388d4. Configure here.
The tripwire and CODEOWNERS now include the native package script, the Dependabot requirements sync, the Homebrew formula bump, and .github/actions/. Refs #2098
|
Gate-Change-Approved-By: @FabioLeitao (#2115) | #2098 achado 2: release helpers e .github/actions/ no tripwire e no CODEOWNERS | head=74aef65c12dc7a819d0e45ab36415193b35912cd | 2026-10-21 |
…se helpers e .github/actions/ no tripwire e no CODEOWNERS | 2026-10-21 ``` -----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgyEpOM79Y37xE8qOhlhghEfLh9P TzRdk6n8nzLfBNGqwAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx OQAAAEBfvJnw01HQm6aaS9Svja8VVIbF3gdr995Zn9n2ttB4LR+dpcX00xqaAvI5mLwU/B 5Odcjs5RzbxQ7g6OmECJcG -----END SSH SIGNATURE----- ```
|
Gate-Change-Approved-By: @FabioLeitao (#2115) | #2098 achado 2: release helpers e .github/actions/ no tripwire e no CODEOWNERS | head=f78cb97f3970259e813539d76a7860e94c96cfa5 | 2026-10-21 |


Summary
config_adminstill gets HTTP 303 on save. RBAC, API key, audit logs, WebAuthn,trusted_*, and licensing stay as stored unless the principal hasadmin.directConnection.CONTRIBUTING.mdandCONTRIBUTING.pt_BR.mdrecord the actor gate already enforced by.github/workflows/claude.yml. The workflow file is unchanged.#2103stays open.allowed_hostsis already documented as a brake on the same YAML, not a second authority. No red test of a decided defect, so this PR does not change that contract.Finding 1 is already on
main. Finding 2 is the tripwire and CODEOWNERS coverage in this branch../scripts/check-all.shexit 0 with an emptyXDG_CONFIG_HOME: 3332 passed, 83 skipped, 2 deselected, 2 xfailed.Closes #2090
Closes #2093
Closes #2097
Closes #2098
Closes #2105
Test plan
./scripts/check-all.shexit 0