Skip to main content

Vulnerability Scanning

Cargoman integrates with multiple security advisory databases to scan your packages for known vulnerabilities. Available on Pro, Cloud, and Enterprise editions.

Advisory Sources

SourceCoverage
OSV (Open Source Vulnerabilities)Cross-ecosystem vulnerability database
GitHub Security AdvisoryGitHub's curated advisory database
PHP Security AdvisoryPHP-specific advisories (FriendsOfPHP/security-advisories)

Scanning Packages

Via API

Trigger a vulnerability scan:

curl -X POST https://packages.example.com/api/v1/vulnerabilities/scan \
-H "Authorization: Bearer $ADMIN_TOKEN"

List known vulnerabilities:

curl https://packages.example.com/api/v1/vulnerabilities \
-H "Authorization: Bearer $ADMIN_TOKEN"

Get details for a specific vulnerability:

curl https://packages.example.com/api/v1/vulnerabilities/{id} \
-H "Authorization: Bearer $ADMIN_TOKEN"

Via CLI

Audit a composer.lock file for vulnerabilities:

# Audit current directory
cargoman audit

# Audit a specific lock file
cargoman audit /path/to/composer.lock

# JSON output for CI integration
cargoman audit --format json --fail-on-any

# Filter by severity
cargoman audit --min-severity high

# SARIF output (for GitHub Code Scanning)
cargoman audit --format sarif > results.sarif

Via GraphQL

query {
vulnerabilities(packageName: "vendor/package") {
id
advisory
severity
affectedVersions
patchedVersions
description
}
}

Composer Security Advisories

Cargoman exposes security advisories through the Composer protocol:

GET /security-advisories.json
GET /api/security-advisories/{vendor}/{package}.json

This allows the Composer client to display warnings during composer install and composer update.

Output Formats

The cargoman audit command supports multiple output formats:

FormatUse Case
textHuman-readable terminal output (default)
jsonMachine-readable JSON for automation
junitJUnit XML for CI test reporting
sarifSARIF for GitHub Code Scanning integration

CI/CD Integration

GitHub Actions

- name: Audit dependencies
run: cargoman audit --format sarif --fail-on-any > results.sarif

- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif

GitLab CI

audit:
script:
- cargoman audit --format junit --fail-on-any > audit-report.xml
artifacts:
reports:
junit: audit-report.xml

Next Steps