Security Scanning

Overview

KissRequests uses free, GitHub-native and open-source tooling for security scanning. No accounts, tokens, or paid services are required.

What Runs Automatically

Tool Trigger Where
CodeQL Push to main, PR to main, weekly schedule GitHub Actions
Dependency Review PR to main GitHub Actions
OpenSSF Scorecard Weekly schedule, manual dispatch GitHub Actions and code scanning
Dependabot Weekly GitHub (automatic PRs)
CI build, test reports, coverage reports Every push and PR GitHub Actions

CodeQL

CodeQL is a static analysis tool by GitHub that scans Java code for security vulnerabilities.

Dependency Review

Dependency Review checks pull request dependency changes and fails on moderate or higher vulnerability findings. It does not require repository secrets.

OpenSSF Scorecard

OpenSSF Scorecard runs on schedule and manual dispatch, then uploads SARIF to code scanning. It uses only GitHub-provided permissions.

Dependabot

Dependabot monitors Maven dependencies and GitHub Actions for known vulnerabilities and outdated versions.

OWASP Dependency-Check

OWASP Dependency-Check scans project dependencies for known vulnerabilities using the NVD database.

Local Command

mvn -Psecurity verify

This runs the full build plus dependency vulnerability scanning. The first run downloads the NVD database and may take several minutes.

Normal Build (No Security Scan)

mvn -B clean verify

The OWASP scan does not run during normal builds. It is explicitly activated via the security profile.

Coverage

JaCoCo runs during Maven verify. Local coverage reports are generated at:

target/site/jacoco/jacoco.xml
target/site/jacoco/index.html

Use target/site/jacoco/index.html for review. The XML report is compatible with Codecov or Sonar if those services are configured later; they are not required for the current setup.

SpotBugs

SpotBugs is available as an optional profile:

mvn -Pspotbugs verify

The profile generates reports without making normal CI depend on static-analysis findings.

CI Command

To run in CI (if desired):

mvn -Psecurity verify

This is not wired into the default CI workflow to keep normal builds fast.

Reading Reports

Reports are generated in:

target/dependency-check-report/

False Positives

OWASP Dependency-Check may produce false positives, especially for libraries with similar names to vulnerable projects. Review findings carefully before acting.

To suppress a false positive, add a suppression file and configure it in the security profile in pom.xml. Document the reason for each suppression.

Build Failure Threshold

The security profile is configured with failBuildOnCVSS set to 11 (effectively disabled). This means the build will not fail on findings by default. To enforce a threshold, lower this value:

Document any threshold change in this file.

Dependency Policy

Secrets Policy

See docs/SECRET_HYGIENE.md and docs/MAVEN_CENTRAL.md.

Snyk (Optional Manual Usage)

Snyk is a commercial dependency vulnerability scanner. It is not wired into CI and is not required.

If a maintainer wants to use Snyk manually:

  1. Install the Snyk CLI.
  2. Authenticate with snyk auth.
  3. Run snyk test or snyk monitor locally.

This requires a Snyk account and is entirely optional.

Limitations