All integrations

Nosey Parker Integration with DefectDojo

Nosey Parker Integration with DefectDojo

Nosey Parker is an open source command-line secret scanner from Praetorian. It searches files, directories, and the full history of Git repositories for credentials and other sensitive values, such as cloud access keys, API tokens, private keys, and passwords, using a large set of detection rules. Scans are stored in a local datastore, and the report command writes findings in human-readable text, JSON, JSON Lines, or SARIF. Praetorian archived the repository in April 2026 and names Titus as its replacement, so existing pipelines keep working but new features will not arrive.

Nosey Parker Integration with DefectDojo

We added Nosey Parker because it is fast on large repositories and digs through Git history, which is where most of our leaked secrets turned out to be. The scanner tells you what it found. It doesn't tell you whether the key was rotated, who was asked to do it, or whether the same token reappeared a month later. Importing its JSON Lines output into DefectDojo gives every secret a Finding with its file, line, and commit, an owner, and a High severity SLA.

Why Nosey Parker Matters

A credential committed to a repository is exposed to everyone with read access, and deleting the file doesn't remove it from history.

  • Full-history scanning catches secrets that were committed and later removed, which branch-only checks miss.
  • Findings include the commit ID and committer, so the team can identify when and how a secret entered the code.
  • Its rules cover many credential types across cloud providers and SaaS services.
  • Secret findings need a real remediation workflow: rotate, remove, verify. A list of matches in a terminal doesn't provide one.

Advantages of This Integration

What we gained by routing Nosey Parker results through DefectDojo:

  • One finding per secret location. The parser merges matches with the same file path, line, and secret (or rule, in newer output) and counts repeats as occurrences, so a key copied across many commits doesn't flood the queue.
  • Consistent severity and CWE. Every finding is High with CWE-798 (use of hard-coded credentials), so secrets land under a single SLA and are easy to filter.
  • A built-in remediation step. Each finding's mitigation tells the owner to reset the credential, remove it from source, and move it to a secrets manager.
  • Lifecycle tracking. Reimporting into the same Test mitigates secrets that are gone and adds new ones.
  • Assignment and Jira. Findings can be routed to the repository owner and pushed to Jira so rotation work is visible.

How This Integration Works

DefectDojo imports Nosey Parker output with the Nosey Parker Scan scan type. The parser only accepts JSON Lines files with a .jsonl extension, and it supports the output formats of Nosey Parker v0.16.0 and v0.22.0.

1. Scan and write a JSON Lines report. Scan a repository into a datastore, then report from it:

noseyparker scan --datastore np.noseyparker ./payments-api
noseyparker report --datastore np.noseyparker --format jsonl --output noseyparker.jsonl

2. Import it. In the UI, open the Engagement, choose Import Scan Results, select Nosey Parker Scan, and upload the .jsonl file. For automation, use the API in Community Edition or DefectDojo Pro:

curl "https://YOUR_INSTANCE/api/v2/import-scan/" \
  -H "Authorization: Token $DD_API_TOKEN" \
  -F "scan_type=Nosey Parker Scan" \
  -F "file=@noseyparker.jsonl" \
  -F "product_name=payments-api" \
  -F "engagement_name=Secret Scanning" \
  -F "auto_create_context=true"

DefectDojo Pro users can run the same import with Universal Importer:

universal-importer import \
  --defectdojo-url "https://YOUR_INSTANCE.cloud.defectdojo.com/" \
  --scan-type "Nosey Parker Scan" \
  --report-path "./noseyparker.jsonl" \
  --product-name "payments-api" \
  --engagement-name "Secret Scanning" \
  --auto-create-context

3. Reimport with care. For full-history scans, a secret removed from the current code still appears in history, so it keeps showing up. DefectDojo's documentation recommends setting do_not_reactivate when reimporting through the API so findings you closed after rotation stay closed.

Data Granularity: What Gets Imported

DefectDojo Field Source in Nosey Parker Report Notes
Title Commit ID of the match "Secret(s) Found in Repository with Commit ID ..." or, without Git history, "Secret(s) Found in Repository"
Description Rule name, commit metadata, location Includes committer name and email, commit ID, file, and line
Secret preview match_content (v0.16.0) Only the first three characters of the secret are written
Rule Text ID rule_text_id (v0.22.0) Identifies the detection rule
Severity Fixed Always High
CWE Fixed 798
Mitigation Fixed text Reset the credential, remove it, store it in a vault
File Path Blob path or path From the commit, or the file path for non-Git scans
Line Match start line From the source span
Occurrences Repeated matches Counted on the merged finding
Finding type Static All findings are marked static
Deduplication Unique ID or hash code No unique ID is set, so the default hashcode fields apply: title, CWE, line, file path, description

Use Cases

When onboarding a legacy repository: A full-history scan of an old monorepo surfaces credentials from years of commits. The team imports them, assigns each to the service owner, rotates, and closes them with notes, using do_not_reactivate on later reimports.

In a CI/CD pipeline: A branch scan on every merge reimports into a Test per repository, and any new High finding is a signal to rotate before the change ships.

After an incident: When a token is reported leaked, a fresh scan and import shows every location it appears, with commit and committer, so responders can trace how it spread.

For security reporting: Leaders can report open secret findings by Asset and age against the High SLA without stitching together scanner output from many repositories.

Operational Tips

  • Save reports with the .jsonl extension. The parser rejects other extensions, including .json files containing the same data.
  • Rotate first, then remove. Removing a secret from the current code does not revoke it, and full-history scans will keep reporting it.
  • Use do_not_reactivate on API reimports of full-history scans, as the parser docs recommend, so rotated secrets don't come back as active.
  • Remember that the commit ID is part of the title. The same secret found through a different first commit can appear as a separate finding.
  • Restrict access to the Asset. Descriptions include committer names and email addresses, and v0.16.0 output adds the first three characters of each secret.
  • Plan for the archive. Nosey Parker no longer receives updates, and the DefectDojo parser supports v0.16.0 and v0.22.0 output only, so pin a version in CI.