DependencyTrack / DependencyTrack/dependency-track

Optional template-based ID generation for internal vulnerabilities

Open
#6,638 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Java
Stars
4.2k
Forks
811
Avg merge
8h 39m
Merged PRs (30d)
237

Description

### Current Behavior

Internally-created vulnerabilities (from pen-tests, manual reviews, or audits) are assigned a random identifier in the INT-xxxx format (e.g. INT-a1b2-c3d4-e5f6),generated by VulnerabilityUtil.randomInternalId(). There is no way to configure this format. The identifier carries no human-readable meaning — it does not indicate the organization, the year it was raised, or a running sequence number, which makes internal findings harder to reference, sort, and track in reporting and audit workflows.

### Proposed Behavior

Add an opt-in setting to generate internal vulnerability IDs from a configurable
template instead of the random INT-xxxx format.

When enabled by an administrator:
- IDs follow a configurable template with placeholders: {ORG_CODE}, {YYYY}, {MM},
{DD}, {SEQUENCE}, and optionally {PROJECT_NAME}. Default: {ORG_CODE}-{YYYY}-{SEQUENCE}
(e.g. ACME-2026-00001, mirroring the familiar CVE-YEAR-SEQUENCE convention).
- A sequence counter increments automatically, with a configurable reset policy
(never / yearly / monthly / daily) and a configurable zero-padding width.
- The setting is off by default. When disabled, IDs use the existing random INT-
format and behavior is completely unchanged, so existing installations are unaffected.

Why: teams that raise internal findings need stable, human-readable, organization-aligned
identifiers that fit their reporting and audit processes, rather than opaque random IDs.
Keeping it opt-in and off-by-default ensures zero impact on current behavior.

Implementation note: no database migration is required (the sequence table is
auto-created from its JDO model and config properties are seeded at startup). A backend
PR and a small admin-UI frontend PR are ready and will be linked to this issue.

### Checklist

- [x] I have read and understand the [contributing guidelines](https://github.com/DependencyTrack/dependency-track/blob/main/CONTRIBUTING.md#filing-issues)
- [x] I have checked the [existing issues](https://github.com/DependencyTrack/dependency-track/issues) for whether this enhancement was already requested

Contributor guide

Open the contributing guide

Research direction

Start with VulnerabilityUtil.randomInternalId() to trace current internal-ID generation, then inspect the backend configuration and JDO model referenced by the issue. Review how the admin UI exposes settings. Done means an opt-in template, sequence and reset configuration works with the listed placeholders, while the default disabled path preserves existing random INT-xxxx behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend-api-design, frontend, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.