Skip to content

fix(security): configure ASF CVE bookkeeping senders - #1745

Open
arin30 wants to merge 2 commits into
apache:mainfrom
arin30:fix/asf-cve-tool-senders
Open

arin30 wants to merge 2 commits into
apache:mainfrom
arin30:fix/asf-cve-tool-senders

Conversation

@arin30

@arin30 arin30 commented Oct 21, 2026

Copy link
Copy Markdown

Summary

  • add the ASF-wide security@apache.org CVE bookkeeping sender default
  • have setup collect current CNA reviewer addresses without guessing personal addresses
  • document the resolved configuration source and add regression coverage for reservation and reviewer-comment messages

Type of change

  • Skill change
  • Python package
  • Project template
  • Other

Test plan

  • uv run --project tools/security-management pytest tools/security-management/tests/test_issue_import.py — 50 passed
  • uv run --project tools/security-management ruff check tools/security-management/tests/test_issue_import.py
  • git diff --check
  • prek run --all-files — CI will run the full repository gate

RFC-AI-0004 compliance

  • Vendor neutrality — project-specific reviewer addresses remain adopter configuration
  • Conversational + correctable — setup asks for current reviewer addresses and never guesses them
  • Write-access discipline — no new outbound mutation is introduced

Linked issues

Closes #1735

Notes for reviewers

If an ASF adopter supplies reviewer addresses, setup writes a complete project-level list containing both security@apache.org and those addresses. This matters because project configuration replaces rather than merges with the organization default.

AI assistance disclosure: this change was prepared with Codex and manually reviewed and tested before submission.

Add the ASF-wide sender default and collect project-specific CNA reviewer addresses during setup so bookkeeping messages are filtered before later intake steps.

Generated-by: Codex (GPT-5)
@github-actions github-actions Bot added family:security security-* skills family:setup setup-* skills family:tools tools/* capability:intake Import external signal + sync tracker state capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) substrate:analytics Tool substrate: read-only metrics / dashboards / renderers labels Oct 21, 2026

@Kaap10 Kaap10 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.

Thank you for addressing #1735!

Review Summary

Adding security@apache.org to organizations/ASF/organization.md as the organization-wide bookkeeping sender directly resolves the issue where automated CVE reservation emails bypassed Step 1 pre-filtering into triage intake.

Key Strengths

  1. Clean Organization Baseline:
    • Defining security_inbox.cve_tool_senders: [security@apache.org] under organizations/ASF/organization.md ensures all ASF adopters inherit the correct sender filter without needing manual overrides.
  2. Setup Guidance & RFC-AI-0004 Compliance:
    • Step 4b and Step 9 in install.md instruct setup to ask for confirmed CNA reviewer addresses and explicitly forbid guessing personal addresses.
    • Accurately explains configuration replacement semantics: if a project defines reviewer addresses, setup includes both security@apache.org and the confirmed addresses because project values replace rather than merge with organization defaults.
  3. Template & Documentation Alignment:
    • Comments in templates/project.md and candidate-listing.md clearly document where cve_tool_senders resolves from and how adopters should configure it.
  4. Targeted Regression Testing:
    • test_prefilter_drops_asf_cna_bookkeeping_from_configured_senders in test_issue_import.py provides clean regression coverage for both reservation and reviewer-comment subjects.

Minor Recommendation

  • The branch was branched from 30ab868e and is slightly behind main. While it merges cleanly with zero conflicts (git merge-tree verified), rebasing onto upstream/main is recommended so GitHub Actions CI triggers and runs tests against latest HEAD.

security_inbox:
kind: mailing-list
foundation_security_address: security@apache.org # ASF security team forwards reports here
cve_tool_senders: [security@apache.org] # organization-wide CVE bookkeeping sender

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.

Providing cve_tool_senders: [security@apache.org] here establishes the correct baseline for all ASF projects, preventing automated reservation notices from leaking into triage intake without requiring boilerplate configuration in every adopter's project.md.

- `dev_list` is the target of the `dev` or `issues` or `pullrequests` notification containing `dev@`. If not found, default to `dev@<project>.apache.org`.
- `users_list` is the target of the `users` notification, or defaults to `users@<project>.apache.org`.
- `security_list` has no default: not every ASF project has a dedicated `security@<project>.apache.org` list. Detect it and ask, as [`adopt.md` Step 4b](adopt.md#4b--scaffold-whatever-is-still-missing) does; when no dedicated list is found, recommend requesting one from ASF Infra and offer `private@<project>.apache.org` only as a flagged fallback.
- `security_inbox.cve_tool_senders` inherits `security@apache.org` from the ASF organization profile. Ask which ASF CNA reviewers currently send CVE-tool notifications to the project. If the answer is non-empty, write one project-level list containing `security@apache.org` and the confirmed reviewer addresses because project values replace, rather than merge with, organization defaults. An empty answer leaves the key absent and keeps the inherited address; never guess reviewer addresses.

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.

Explicitly noting that project values replace rather than merge with organization defaults is critical here: it prevents adopters from accidentally omitting security@apache.org when adding specific CNA reviewers.

assert [t["thread_id"] for t in out["dropped"]] == ["t-bookkeeping"]


def test_prefilter_drops_asf_cna_bookkeeping_from_configured_senders(capsys, tmp_path) -> None:

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.

Clean regression test covering both the automated reservation notice and the human reviewer comment message shapes.

Kaap10

This comment was marked as duplicate.

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

Labels

capability:intake Import external signal + sync tracker state capability:platform Framework / agent substrate skills (install, verify, doctor, override, status, setup bootstrap) family:security security-* skills family:setup setup-* skills family:tools tools/* substrate:analytics Tool substrate: read-only metrics / dashboards / renderers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

security-issue-import: Step 1 pre-filter misses ASF CNA bookkeeping mails

2 participants