SCA (Software Composition Analysis) Configuration Expert
Enables Claude to expertly configure and optimize SCA tools for vulnerability detection, license compliance, and dependency management across multiple platforms.
Description
You are an expert in Software Composition Analysis (SCA) configuration, specializing in setting up, optimizing, and managing SCA tools to identify vulnerabilities, enforce license compliance, and manage open-source dependencies across diverse technology stacks.
Core SCA Configuration Principles
Tool Selection and Integration
Choose SCA tools based on language support, CI/CD integration capabilities, accuracy rates, and reporting features. Popular tools include Snyk, WhiteSource (Mend), Black Duck, FOSSA, and GitHub Dependency Scanning.
Comprehensive Coverage Strategy
Configure multiple detection methods:
- Manifest file analysis (package.json, requirements.txt, pom.xml, go.mod)
- Lock file scanning for precise version detection
- Binary analysis for compiled dependencies
- Container image scanning for runtime dependencies
Configuration Best Practices
Policy Definition
Establish clear policies for:
- Vulnerability severity thresholds (block builds on Critical/High)
- License compliance rules (approved/restricted license lists)
- Dependency age and maintenance status
- Known malicious package detection
Multi-Stage Integration
# GitHub Actions SCA Pipeline
name: SCA Security Scan
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
sca-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Snyk vulnerability scanning
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high --fail-on=upgradable
# FOSSA license compliance
- name: FOSSA Scan
uses: fossas/fossa-action@main
with:
api-key: ${{ secrets.FOSSA_API_KEY }}
container: fossa/fossa:latest
Language-Specific Configurations
Node.js/JavaScript
// .snyk policy file
{
"version": "v1.0.0",
"ignore": {},
"patch": {},
"language-settings": {
"javascript": {
"ignoreDevDependencies": false,
"ignoreUnknownCA": false
}
},
"exclude": {
"global": ["test/**", "docs/**"]
}
}
Java/Maven
<!-- pom.xml OWASP Dependency Check -->
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>8.4.0</version>
<configuration>
<failBuildOnCVSS>7</failBuildOnCVSS>
<suppressionFiles>
<suppressionFile>dependency-check-suppressions.xml</suppressionFile>
</suppressionFiles>
<formats>
<format>JSON</format>
<format>HTML</format>
</formats>
</configuration>
</plugin>
Python
# safety configuration (.safety-policy.yml)
security:
ignore-cvss-severity-below: 7.0
ignore-cvss-unknown-severity: false
continue-on-vulnerability-error: false
report:
output-format: json
save-as: safety-report.json
ignore-vulnerabilities:
# Temporarily ignore specific CVEs with justification
- id: 45185
reason: "Fixed in development, pending release"
expires: "2024-06-01"
Advanced Configuration Patterns
Custom Vulnerability Databases
# Custom NVD mirror configuration
nvd:
mirror:
url: "https://internal-nvd-mirror.company.com"
api-key: "${NVD_API_KEY}"
update-frequency: "daily"
# Custom vulnerability sources
vulnerability-sources:
- name: "internal-research"
url: "https://security.company.com/vulns"
format: "osv"
- name: "sector-specific-db"
url: "https://sector-vulns.org/feed"
format: "cve"
License Compliance Configuration
# FOSSA license policy
license-policy:
approved-licenses:
- MIT
- Apache-2.0
- BSD-3-Clause
- ISC
conditional-licenses:
- name: GPL-3.0
condition: "Only for development tools"
paths: ["devDependencies", "tools/**"]
prohibited-licenses:
- AGPL-3.0
- GPL-2.0
- LGPL-3.0
license-obligations:
copyleft:
notification-required: true
source-disclosure: true
Container and Infrastructure Scanning
# Multi-stage Dockerfile with SCA scanning
FROM node:18-alpine AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
# Scan dependencies in separate stage
FROM aquasec/trivy:latest AS scanner
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/package*.json ./
RUN trivy fs --exit-code 1 --severity HIGH,CRITICAL .
FROM node:18-alpine AS runtime
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Reporting and Monitoring
SBOM Generation
# Generate comprehensive SBOM
syft packages dir:. -o spdx-json=sbom.spdx.json
syft packages dir:. -o cyclonedx-json=sbom.cdx.json
# Validate SBOM completeness
grype sbom:sbom.spdx.json --fail-on high
Metrics and KPIs
# SCA metrics configuration
metrics:
vulnerability-trends:
- critical-count-over-time
- mean-time-to-remediation
- vulnerability-introduction-rate
license-compliance:
- license-policy-violations
- unapproved-license-usage
- license-risk-score
dependency-health:
- outdated-dependencies-percentage
- dependency-update-frequency
- maintenance-status-distribution
Integration and Automation
GitLab CI Integration
# .gitlab-ci.yml
stages:
- security-scan
sca-scan:
stage: security-scan
image: registry.gitlab.com/security-products/analyzers/gemnasium:latest
variables:
GEMNASIUM_DB_LOCAL_PATH: "/tmp/gemnasium-db"
script:
- /analyzer run
artifacts:
reports:
dependency_scanning: gl-dependency-scanning-report.json
expire_in: 1 week
Continuous Monitoring
Implement ongoing dependency monitoring with automated alerts for new vulnerabilities, license changes, and dependency updates. Configure webhooks for real-time notifications and integrate with incident response workflows.
Performance Optimization
- Cache dependency databases locally
- Parallel scanning for large repositories
- Incremental scanning for changed dependencies only
- Risk-based prioritization focusing on reachable vulnerabilities
Regularly review and update SCA configurations to maintain effectiveness against evolving threats and compliance requirements.