Security¶
The project's security policy and supply-chain rules, included verbatim from
SECURITY.md at the repo root:
Security Policy¶
Reporting a vulnerability¶
Report suspected vulnerabilities privately to olivier@micoli.org (or via GitHub "Report a vulnerability" on the Security tab). Do not open a public issue for security problems. Expect an acknowledgement within a few days.
Supply-chain scope¶
This project consumes dependencies from two ecosystems:
- Gradle / Maven —
core,server,app/webApp,plugin-examples(repos: Maven Central + a filtered Google repo, declared insettings.gradle.kts). - npm —
app/webApp/ts-src(registry: npmjs.org). The Kotlin/JS toolchain also pulls yarn packages, locked inkotlin-js-store/.
Controls in place¶
- Version catalog (
gradle/libs.versions.toml) — single source of dependency versions. - Gradle dependency locking (
gradle.lockfile) + checksum verification (gradle/verification-metadata.xml). - Gradle wrapper pinned with
distributionSha256Sum. - npm exact-version pinning (
.npmrcsave-exact), committedpackage-lock.json, installs vianpm cionly. - Dependabot (
.github/dependabot.yml) for gradle, npm, github-actions, docker. - CI security workflow (
.github/workflows/security.yml): OSV-Scanner, CycloneDX SBOM, GitHub dependency submission. (Private repo without Advanced Security — no SARIF / CodeQL; findings land in workflow logs and build artifacts.) - GitHub Actions pinned to commit SHAs.
Lockfile hygiene¶
npm auditonapp/webApp/ts-srcis clean; theoverridesblock inpackage.jsonforces patcheduuid/js-yaml.kotlin-js-store/yarn.lock(webpack toolchain, regenerated by the Kotlin Gradle Plugin) is kept clean viaresolution(...)entries in the rootbuild.gradle.kts. Refresh after any Kotlin bump:./gradlew kotlinUpgradeYarnLockthen re-run OSV-Scanner; drop aresolutiononce the KGP-pinned version already includes the fix.- OSV-Scanner runs on both lockfiles in CI and is blocking.
Adding or bumping a dependency¶
- Gradle: edit
gradle/libs.versions.toml, then in the same commit runmake security-locks(regeneratesgradle.lockfile) andmake security-verify(regeneratesgradle/verification-metadata.xml); review both diffs — every new line is a new artifact to vet. - npm:
npm cifirst, add withnpm install --save-exact <pkg>@<version>, review the fullpackage-lock.jsondiff. Never run barenpm installin CI or scripts. - Do not add a Maven repository or npm registry that is not already declared.