Safeguard
Application Security•

PGP Key or Web Form for Vulnerability Reports: What to Offer

Offering a PGP key sounds serious, but a key nobody can use is worse than none. How to choose between PGP, a web form and private reporting, with what the Django and CVE Program pages do.

Safeguard Security Team
3 min read

The CVE Program's own FAQ still tells people to use PGP for sensitive communication with the MITRE CNA of Last Resort. It lists a 4096 bit key and notes the key was updated in March 2026. Django's security page offers an encryption key too, but calls it optional. Rails sends reporters to a web program page and does not mention PGP at all.

So three credible projects, three answers. The right one for a small company depends on who will actually read the reports.

What's affected

Anyone writing the "how to report" section of a disclosure policy. The options:

ChannelGood forCost to you
Plain email to a shared mailboxLow friction, reaches everyoneReports cross the network and sit in mail archives
PGP encrypted emailReporters who insist on encryptionKey custody, expiry, rotation, and someone who can decrypt on a Sunday
Web form or private reporting on a code hostMost reporters, attachments, a record of stateYou depend on a platform, and notifications must reach a person

RFC 9116 gives the rule for security.txt. The Encryption field must be a URI that points to where the key can be fetched, and keys must not appear in the field itself. It also says it is always the researcher's job to check that the key is one they trust, so publish the fingerprint on a page you control.

Django's page shows a sensible compromise. It asks for plain email first, offers a key ID for those who want encryption, and promises an acknowledgment within 3 working days either way.

What to do now

  1. Make the default channel the easiest one: a shared mailbox plus a web form or, for open source, GitHub private vulnerability reporting.
  2. Offer PGP only if at least two people hold the private key and have decrypted a test message this quarter.
  3. Publish the fingerprint on your /security page and link the key from the Encryption field in security.txt.
  4. Put the key expiry on a shared calendar. An expired key sends researchers back to plain email, or away.
  5. Say in your policy that unencrypted reports are fine. That removes the excuse to skip reporting.

Quick check

Can you paste an armored PGP key directly into the Encryption field of security.txt?

No. RFC 9116 says keys must not appear in the field. It must be a URI pointing to where the key can be retrieved.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.