Zimperium zScan Integration with DefectDojo
Zimperium zScan Integration with DefectDojo
Zimperium zScan is a mobile application security testing product from Zimperium. Teams upload Android or iOS app builds to zScan, which assesses each build and reports security and privacy issues found in the build, such as weak cryptography and hard-coded secrets. Assessment results are available as SARIF reports and through the zScan API. DefectDojo imports a zScan SARIF report, optionally wrapped with app and build context, and DefectDojo Pro can sync assessments through an API connector.
Zimperium zScan Integration with DefectDojo
Our mobile teams ship Android and iOS builds every sprint, and zScan assesses each one. What we needed was a way to see those results next to the backend findings for the same product and to tell whether an issue survived from one release to the next. Importing zScan assessments into DefectDojo gives each finding the app name, build version, and platform, so two builds of the same app stay distinct and we can follow a problem across releases.
Why Zimperium zScan Matters
Mobile apps run on devices you do not control, so problems in the build itself are what an attacker gets to examine.
- zScan assesses the compiled app build that is actually shipped, not only the source tree.
- It covers both Android and iOS from one place.
- Results use SARIF, a standard format with rules, locations, and severity properties.
- Each assessment is tied to a specific build, which is how release-to-release comparisons work.
Advantages of This Integration
What DefectDojo adds to zScan results:
- App and build context on every finding. A SARIF document does not say which app or build it came from. DefectDojo fills component name with the app name, component version with the build's version, the date with the build upload date, and adds the platform as a tag.
- Only failures imported. SARIF results whose
kindis anything other thanfail(for examplepass) are skipped. A missingkindcounts as a failure. - Suppressions respected. A suppressed SARIF result imports as inactive and a false positive.
- Sensible severity. The rule's
security-severityproperty is used first, as a CVSS number and then as a word, before falling back to the result level. A result with no level is Medium rather than Info. - Per-build identity. Findings are identified by assessment, rule, file, and line, so the same rule firing in two builds stays two findings and you can see what carried over.
- File and connector agree. The parser mirrors the DefectDojo Pro connector, including its shared SARIF mapping, and uses the same scan type.
How This Integration Works
DefectDojo supports zScan with the Zimperium zScan scan type, by file (UI Import, API Import, Universal Importer in DefectDojo Pro) or through the DefectDojo Pro API connector.
1. Prepare the SARIF report. A bare zScan SARIF report imports fine, but it carries no app name, version, or platform. To supply them, wrap the report in a JSON object with an assessment block (id, appVersion, buildUploadedAt), an app block (name, platform), and the SARIF log under sarif (or log or report). The same fields may also sit at the top level. Include the assessment ID: without it, file findings will not deduplicate against connector-synced ones.
2. Import the file. In the UI, open an Engagement, choose Import Scan Results, select Zimperium zScan, and upload the JSON. Through 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=Zimperium zScan"
-F "file=@zscan-assessment.json"
-F "product_name=mobile-banking-app"
-F "engagement_name=Release 3.2"
-F "auto_create_context=true"
With Universal Importer in DefectDojo Pro:
universal-importer import
--defectdojo-url "https://YOUR_INSTANCE.cloud.defectdojo.com/"
--scan-type "Zimperium zScan"
--report-path "./zscan-assessment.json"
--product-name "mobile-banking-app"
--engagement-name "Release 3.2"
--auto-create-context
3. Or use the connector (DefectDojo Pro). Issue a zScan client ID and secret in zConsole under Account Management, Authorizations. In the DefectDojo Pro UI, add the Zimperium connector, enter your zConsole host in Location, the client ID and client secret in their fields, and optionally a Minimum Severity. DefectDojo exchanges the credentials for a bearer token on each sync. Each zScan mobile app becomes a Record carrying the findings of that app's latest completed assessment.
Data Granularity: What Gets Imported
| DefectDojo Field | Source in zScan Report | Notes |
|---|---|---|
| Title | Result message | Falls back to rule short or full description, name, or ID; 150 characters max |
| Severity | Rule security-severity, then result level |
CVSS bands or words; error High, warning Medium, note Info; no level Medium |
| Description | Result message and rule text | Rule name and descriptions added when they add something |
| CVSS v3 Score | security-severity |
When it is a number |
| CWE | Rule relationships and tags | First CWE found, rule before result |
| File Path / Line | First physical location | Artifact URI and start line |
| Mitigation | Result fixes |
Fix descriptions, one per line |
| References | Rule helpUri |
Or help text that is a link |
| Vulnerability IDs | Rule ID | When it contains a CVE |
| Component Name / Version | App name, appVersion |
Only when SARIF left them empty |
| Date | buildUploadedAt |
Date the build was uploaded |
| Tags | Rule and result tags, platform | Platform appended last |
| Active / False Positive | suppressions |
Suppressed results are inactive false positives |
| Unique ID from Tool | Assessment, rule, location | zimperium-<assessment id>-<rule id>-<file>:<line> |
| Vuln ID from Tool | ruleId |
|
| Finding type | Static | zScan analyzes an uploaded build |
| Deduplication | Unique ID or hashcode | Unique ID from tool, falling back to title, severity, file_path, vuln_id_from_tool |
Use Cases
Release-by-release tracking: Each app build is assessed in zScan and imported into an Engagement for that release. Because identity includes the assessment, the team can see which findings persisted from the previous build and which are new.
Mobile and backend in one Asset: The mobile app and its API share an Asset in DefectDojo, so a weak-crypto finding in the app and a related API finding are reviewed together.
Platform-specific triage: The platform tag lets Android and iOS teams filter to their own findings while sharing one Asset and one set of SLAs.
Restricted environments: Teams that cannot grant zScan API credentials export assessment SARIF, add the context wrapper, and upload it. Findings line up with the connector if it is enabled later.
Operational Tips
- Always include the assessment ID in file imports. It is part of every finding's identity and is what lets file and connector findings deduplicate.
- Add
appVersionandplatformto the wrapper. Without them, two builds of one app are hard to tell apart in DefectDojo. - Suppress accepted results in zScan where possible. They import as false positives and stay out of active metrics.
- Expect Medium for results with no level. Review rule severity properties if Medium findings look inflated.
- Use one Engagement per release so per-build findings stay grouped and reports by release are straightforward.
- If you use both the file route and the connector, send both to the same Asset so their findings deduplicate.