ClamAV
Import the output of ClamAV’s clamscan, which matches files against
malware signatures.
File Types
Plain text, as printed by clamscan:
clamscan -r --allmatch /path/to/scan > clamav.txtclamscan writes one line per file — <path>: <signature> FOUND for a hit, <path>: OK for a clean
file, <path>: Empty file, or <path>: <reason> ERROR for a file it could not read — followed by a
SCAN SUMMARY block. Only FOUND becomes a finding; a clean run therefore parses to zero findings
even though it produces plenty of output.
--allmatch is worth passing: without it clamscan stops at the first signature that matches a file,
so a file matching several signatures reports only one. With it, each signature on that file is its
own finding.
The signature name becomes vuln_id_from_tool and the scanned path becomes file_path. Findings are
severity High with CWE-506. A signature match is a detection rather than a guess — ClamAV names
what it matched — and a confirmed hit is often triaged up to Critical depending on the artifact, which
is a judgement about the artifact rather than something clamscan measures.
The .UNOFFICIAL suffix ClamAV appends to signatures from any database other than its own is kept and
called out in the description, because it says how much the detection is worth.
The SCAN SUMMARY block is deliberately not carried into findings: it holds an engine version and a
scan date, both of which change between runs of an unchanged artifact.
Sample Scan Data
Sample ClamAV scans can be found here.
The captures were produced with the local signature database committed alongside them
(custom.ndb), which matches placeholder strings in ordinary local files — so no malware sample is
needed to reproduce them.
Default Deduplication Hashcode Fields
By default, DefectDojo identifies duplicate findings using these hashcode fields:
- title
- cwe
- line
- file_path
- description