Skip to content

Add comprehensive security scanning workflows for Java #1

Add comprehensive security scanning workflows for Java

Add comprehensive security scanning workflows for Java #1

Workflow file for this run

name: "CodeQL Security Analysis"
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
# Run CodeQL analysis weekly on Mondays at 2 AM UTC
- cron: '0 2 * * 1'
permissions:
actions: read
contents: read
security-events: write
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 360
strategy:
fail-fast: false
matrix:
language: [ 'java' ]
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Initialize CodeQL
uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
with:
languages: ${{ matrix.language }}
# Override default queries to include security-extended for more comprehensive analysis
queries: security-extended,security-and-quality
- name: Set up JDK 11
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
java-version: '11'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0
- name: Autobuild
uses: github/codeql-action/autobuild@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
with:
category: "/language:${{matrix.language}}"
dependency-scan:
name: Java Dependency Scan
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up JDK 11
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
java-version: '11'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0
- name: Run OWASP Dependency Check
run: |
# Download and run OWASP Dependency Check
wget -q https://github.com/jeremylong/DependencyCheck/releases/download/v11.1.0/dependency-check-11.1.0-release.zip
unzip -q dependency-check-11.1.0-release.zip
./dependency-check/bin/dependency-check.sh \
--project "aws-xray-sdk-java" \
--scan . \
--format SARIF \
--out dependency-check-results.sarif \
--suppression dependency-check-suppressions.xml \
--failOnCVSS 7 \
--enableRetired
- name: Upload OWASP Dependency Check results to GitHub Security tab
uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
if: always()
with:
sarif_file: dependency-check-results.sarif
category: 'dependency-check'
- name: Run Gradle dependency vulnerability check
run: |
# Use Gradle's built-in dependency insight
./gradlew dependencyInsight --dependency org.apache.logging.log4j || true
./gradlew dependencies --configuration runtimeClasspath > gradle-dependencies.txt
- name: Upload dependency report
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
if: always()
with:
name: dependency-reports
path: |
dependency-check-results.sarif
gradle-dependencies.txt
security-scan:
name: Java Security Scan
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up JDK 11
uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b # v4.5.0
with:
java-version: '11'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0
- name: Run SpotBugs security analysis
run: |
# Add SpotBugs with security rules
./gradlew build -x test || true
# Download SpotBugs with security plugin
wget -q https://github.com/spotbugs/spotbugs/releases/download/4.8.6/spotbugs-4.8.6.tgz
tar -xzf spotbugs-4.8.6.tgz
# Download security plugin
wget -q https://github.com/find-sec-bugs/find-sec-bugs/releases/download/version-1.13.0/findsecbugs-plugin-1.13.0.jar
# Run SpotBugs with security rules on compiled classes
find . -name "*.jar" -path "*/build/libs/*" | head -5 | while read jar; do
echo "Scanning $jar"
./spotbugs-4.8.6/bin/spotbugs -textui -effort:max -low -sarif \
-pluginList findsecbugs-plugin-1.13.0.jar \
-output spotbugs-results.sarif \
"$jar" || true
done
- name: Upload SpotBugs results to GitHub Security tab
uses: github/codeql-action/upload-sarif@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
if: always()
with:
sarif_file: spotbugs-results.sarif
category: 'spotbugs-security'