Software Securityhome
Fix a findingSearch
Phase 6 · Maintenance

Vulnerability intake

Vulnerability intake is how news of a vulnerability in your software reaches someone who will act on it: reports from researchers and customers through a published disclosure channel, and advisories for the third-party components you ship, matched by monitoring tools.

Your own testing finds what you look for. Researchers, customers and the maintainers of your dependencies find the rest, and they need somewhere to send it. Without a known route, a researcher's report lands in a sales inbox or a public issue tracker, and an advisory for a library you ship sits in a scanner dashboard that nobody owns, while attackers read the same advisory.

Who
A named intake owner or PSIRT rotation, with support forwarding reports and service teams receiving component alerts
When
From the first release onward, and before any new public host, product or open-source repository goes live
How often
Component monitoring on every build and daily; the report queue watched every business day
You end up with
A disclosure policy, a security.txt file per host, one monitored queue, and a tracked record with an owner for every report

Do this

  1. Name an owner and one queue

    Pick the person or on-call rotation that owns intake, and route every source into one tracked queue: the disclosure mailbox or form, bug bounty submissions, support tickets and scanner alerts. The FIRST PSIRT Services Framework expects reports to arrive from other parts of the company too, so give support staff a rule to forward anything that looks like a vulnerability report the same day.

  2. Publish a vulnerability disclosure policy

    State the scope (domains, apps and products), which testing is and is not allowed, how to report and what details to send, a commitment not to pursue legal action over good-faith research, and when reporters will hear back. CISA BOD 20-01 requires these elements of US federal agencies and makes a usable model; disclose.io publishes public-domain templates. Have counsel review the safe-harbor wording.

  3. Publish security.txt on every public host

    Serve /.well-known/security.txt over HTTPS as text/plain, with at least one Contact and exactly one Expires, which RFC 9116 recommends keeping less than a year ahead. Add Policy to link your disclosure policy. The file covers only the host that serves it, so publish one per hostname and check each with security.txt validator. On GitHub, also turn on private vulnerability reporting for public repositories.

  4. Acknowledge and record every report

    Reply from a person, not only an auto-responder, with a case ID and the date of the next update. Set targets and publish them: CISA recommends acknowledging within 3 business days, an initial assessment within 7 days and resolution within 90 days. Record the source, receipt time, product and version, and owner, and reproduce with your own test accounts rather than asking the reporter for more real customer data.

  5. Monitor advisories for what you ship

    Keep a component inventory per release, such as an SBOM (SBOM and provenance), so advisories match exact versions. Scan lockfiles and built images against databases such as OSV.dev, on every build and on a schedule, with tools such as OSV-Scanner or Dependabot alerts. Subscribe to vendor and distribution advisories, check the CISA KEV catalog daily, and route each new match to the owning team automatically.

  6. Test the route on a schedule

    Send a test report through each published channel, for example once a quarter, and time the reply against your target. Fail a scheduled check when a host lacks security.txt or its Expires date is near. Track reports received, valid reports and median time to acknowledge, so an unread mailbox shows up as a number rather than as a surprise.

Done when

Reports and component advisories reach a named owner within days, and a security.txt file on every public host says where to report.

Mark it in the gap check

Common mistakes

  • A security mailbox that nobody monitors, or that only an auto-responder answers. Reporters cannot tell active work from neglect, and the first you hear of the flaw may be its public disclosure.
  • Publishing security.txt only on the main domain, or letting Expires pass. RFC 9116 scopes the file to the host that serves it, so api. and app. hosts are left without one.
  • Claiming scope you cannot authorize, such as a vendor's help desk on your subdomain. Safe harbor binds only you, and researchers may rely on the scope you published.
  • Monitoring the repository instead of what ships. Lockfile alerts miss the old image still running, while development-only packages flood the queue.
  • Leaving scanner alerts in a dashboard with no owner. An alert nobody is assigned is not a report anyone handles; route each one to a team queue.

Where vulnerability reports come from

A common intake gap is a source with no route into the queue. List each source and what it needs.

Where vulnerability reports come from: table
SourceTypical channelWhat to set up
External researchersDisclosure form, security.txt contact, bug bounty platformPolicy with scope and safe harbor, published response targets
CustomersSupport ticketsA forwarding rule and a template that asks for version and impact
Maintainers and vendors of your componentsOSV and GitHub advisories, vendor and distribution advisoriesA component inventory per release and automated matching
Exploitation reportsCISA KEV feed or update subscription, vendor alertsA daily check against deployed components
CoordinatorsCERT/CC, national CSIRTsA contact they can find, such as security.txt
InternalPenetration tests, code review, scanners, incident investigationsThe same queue and record as external reports

Tools and guides

Standards

NIST SSDF 1.1
RV.1 Identify and Confirm Vulnerabilities on an Ongoing Basis

Sources

  1. RFC 9116: A File Format to Aid in Security Vulnerability Disclosure (security.txt). April 2022.
  2. CISA BOD 20-01: Develop and Publish a Vulnerability Disclosure Policy. 2 September 2020.
  3. FIRST: PSIRT Services Framework 1.1 (Services 2.1 and 2.3)
  4. OWASP Vulnerability Disclosure Cheat Sheet
  5. GitHub Docs: configuring private vulnerability reporting for a repository
  6. disclose.io dioterms: public-domain VDP, safe harbor and bug bounty templates
  7. OSV.dev: a distributed vulnerability database for open source
  8. OSV-Scanner: usage
  9. CISA: Known Exploited Vulnerabilities Catalog
  10. NIST SP 800-218: Secure Software Development Framework (SSDF) Version 1.1 (RV.1). February 2022.
  11. OWASP SAMM: Defect Management, Defect Tracking stream

Find your next answer

Type to search. Search runs in your browser.

Searches run in your browser, but the host can infer them from the index files they load. The address shows your search so you can bookmark or share it.