π οΈ Custom Plugins Development

This guide explains how to send your security scan data (from tools like Nessus, OpenVAS, or CIS Benchmarks) into ThreatVault. Itβs written simply β even non-technical users can follow it.
Youβll learn:
The difference between VAPT and Compliance data
Which fields ThreatVault expects
How to map your toolβs data
Example plugins you can use
π§© What Is a Plugin?
A plugin is a small Python module that transforms your uploaded scan file (usually CSV) into a format ThreatVault understands.
Workflow:
You upload a CSV/JSON scan file.
ThreatVault calls your pluginβs
process()function.The plugin converts your data into the required schema.
ThreatVault validates the output and saves your findings.
π Two Types of Data
VAPT
Finds vulnerabilities (bugs, weak configurations)
βTLS 1.0 is enabledβ
Compliance
Checks if rules or policies are followed
βPassword must be 8+ chars β β FAILEDβ
Quick rules:
VAPT: βWhatβs broken?β β Use
risk(Critical, Highβ¦)Compliance: βDid we follow the rule?β β Use
status(PASSED, FAILED)
π§ ThreatVault Field Requirements
1οΈβ£ VAPT (Vulnerability Scan) Fields
Used for tools like Nessus, OpenVAS, Invicti:
β Required:
risk,host,port,name,description,remediationπΉ Optional:
cve,evidence,vpr_score
2οΈβ£ Compliance (Rule Check) Fields
Used for CIS, ISO 27001, and internal policy checks:
β Required:
risk,host,port,name,description,remediation,statusπΉ Optional:
evidence
Notes:
Nessus compliance scans donβt use severity levels.
riskvalues are mapped tostatus.If
riskis empty, the plugin assigns Medium automatically.cveandvpr_scoreare not used for compliance scans.
πΊοΈ Mapping Scan Data to ThreatVault
Risk
β
risk
Use Critical/High/Medium/Low. Leave empty for compliance β auto Medium
Host
β
host
IP or hostname
Port
β
port
Use 0 if not applicable
Name
β
name
Issue title
Description
β
description
Full explanation
Solution
β
remediation
How to fix
Plugin Output / Actual Value
β
evidence
Proof from scan
VPR Score
β
vpr_score
Only for VAPT
(none)
β
status
Only for Compliance (copy from risk)
π§© Real Examples
πΉ VAPT Scan (Nessus)
CSV Header:
CVE,Risk,Host,Port,Name,Description,Solution,Plugin Output,VPR Score
Mapped to ThreatVault JSON:
πΉ Compliance Scan (Nessus)
CSV Header:
CVE,Risk,Host,Port,Name,Description,Solution,Plugin Output,VPR Score
Mapped to ThreatVault JSON:
β
Acceptable Values
Risk (Severity)
CRITICAL
Only for VAPT
HIGH
Both
MEDIUM
Both
LOW
Both
None
Only Compliance β auto Medium
Status
VAPT
NEW, OPEN, CLOSED, EXEMPTION, OTHERS
Compliance
PASSED, FAILED, WARNING
π§° Plugin Examples
1οΈβ£ Compliance Plugin (Python + Polars)
2οΈβ£ VAPT Plugin (Python + Polars)
π Quick Steps to Build Your Plugin
Decide: VAPT or Compliance
Read your CSV/JSON file
Rename columns to match ThreatVault
Fill in required fields
For Compliance (Nessus):
status = riskRemove unused fields (e.g.,
cvein Compliance)Return Polars LazyFrame or DataFrame
Upload to ThreatVault β Test β Done
π Summary Table
cve
β
β
risk
β
β
status
β
β
host
β
β
port
β
β
name
β
β
description
β
β
remediation
β
β
evidence
β
β
vpr_score
β
β
Last updated