Skip to content

fix: config policy, redaction, and sink peer pin - #2115

Merged
FabioLeitao merged 5 commits into
mainfrom
epic/boar-1.8.0-pr-c
Oct 21, 2026
Merged

FabioLeitao merged 5 commits into
mainfrom
epic/boar-1.8.0-pr-c

Conversation

@FabioLeitao

@FabioLeitao FabioLeitao commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • config_admin still gets HTTP 303 on save. RBAC, API key, audit logs, WebAuthn, trusted_*, and licensing stay as stored unless the principal has admin.
  • Config display fails closed when a URL cannot be redacted. Omitted non-secret keys and shortened lists are deletions. Webhook URLs are redacted.
  • The SQL findings sink dials the address the SSRF guard already accepted. The MongoDB connector sets directConnection.
  • CONTRIBUTING.md and CONTRIBUTING.pt_BR.md record the actor gate already enforced by .github/workflows/claude.yml. The workflow file is unchanged.

#2103 stays open. allowed_hosts is 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.sh exit 0 with an empty XDG_CONFIG_HOME: 3332 passed, 83 skipped, 2 deselected, 2 xfailed.

Closes #2090
Closes #2093
Closes #2097
Closes #2098
Closes #2105

Test plan

  • Regression tests for the config save boundary, redaction/merge, and sink peer pin
  • ./scripts/check-all.sh exit 0

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

@cursor cursor Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale comment

Comment thread core/findings_sink.py
Comment on lines +704 to 709
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))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 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.

Fix in Cursor Fix in Web

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
@FabioLeitao

Copy link
Copy Markdown
Collaborator Author

Gate-Change-Approved-By: @FabioLeitao (#2115) | #2098 achado 2: release helpers e .github/actions/ no tripwire e no CODEOWNERS | head=74aef65c12dc7a819d0e45ab36415193b35912cd | 2026-10-21

-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgyEpOM79Y37xE8qOhlhghEfLh9P
TzRdk6n8nzLfBNGqwAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
OQAAAEBdM07mwG+lnGS9zUfSxRstYdJXAF52U+g3zBOkW5fEOYnX/A973XfnzNqhEjV+Tt
F8sLrylHtOv2uXMlZJvTsB
-----END SSH SIGNATURE-----

…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-----
```
@FabioLeitao

Copy link
Copy Markdown
Collaborator Author

Gate-Change-Approved-By: @FabioLeitao (#2115) | #2098 achado 2: release helpers e .github/actions/ no tripwire e no CODEOWNERS | head=f78cb97f3970259e813539d76a7860e94c96cfa5 | 2026-10-21

-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgyEpOM79Y37xE8qOhlhghEfLh9P
TzRdk6n8nzLfBNGqwAAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
OQAAAEADLY0pHwa53rStc1Nrt0o5wDGMpeI9/+TABmAnS+kkNdTd8aSaGnsUqt2so3xB6W
mEcCNKe0d5MDr9zd3zR5YJ
-----END SSH SIGNATURE-----

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment