Add comprehensive security scanning workflows for Java #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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' |