Kinotic
Kinotic OS

Supply Chain Security

How Kinotic inventories, scans and gates the container images it publishes, and where the evidence for each control is kept.

Overview

Every Kinotic service image is inventoried and scanned for known vulnerabilities before it is published. An image with a Critical vulnerability that has a published fix is never promoted to Docker Hub. Every control on this page runs automatically in the Build and Publish workflow (.github/workflows/gradle-build.yml), and each one leaves evidence in GitHub.

Scope

ImagePublished as
Kinotic management serverkinoticai/kinotic-server-management
Kinotic system serverkinoticai/kinotic-server-system
Kinotic app serverkinoticai/kinotic-server-app
Kinotic migrationkinoticai/kinotic-migration

Controls

Software inventory (SBOM)

ControlEach build produces a software bill of materials for each image. It lists every operating-system package and application library in the image, with its version.
FormatCycloneDX JSON, generated with Syft from the built image, not from source manifests. The inventory therefore matches what runs.
FrequencyEvery build of the images: each pull request into develop or main, each push to them that changes application code, and nightly.
EvidenceWorkflow run artifacts named sbom-kinotic-server-management.cdx.json, sbom-kinotic-server-system.cdx.json, sbom-kinotic-server-app.cdx.json and sbom-kinotic-migration.cdx.json.
Retention90 days.

Vulnerability scanning

ControlGrype scans each image's SBOM against current vulnerability advisories: GitHub Security Advisories, the National Vulnerability Database, and operating-system vendor feeds. The scan covers the same artifact the inventory records.
FrequencyEvery build, including each pull request, and nightly. The nightly run checks newly published advisories against the current images.
EvidenceFindings of every severity are recorded as GitHub code scanning alerts in the categories image-kinotic-server-management, image-kinotic-server-system, image-kinotic-server-app and image-kinotic-migration, with open and fixed history per finding. Each workflow run's summary lists the fixable findings for each image.

Release gate

ControlA build fails when either image has a Critical vulnerability with a published fix. On a pull request, the failure is reported on the change before it merges. Only an image from a fully passing build of develop or main is promoted from the staging registry (ghcr.io) to Docker Hub.
EffectAn image is published only when, at build time, it has no known Critical vulnerability with an available fix.
EvidenceThe SBOM and Vulnerability Scan jobs and the Build Result job of each workflow run. Build Result performs the promotion and records which job withheld it.

Integrity of the scanning tools

ControlThird-party actions in the scan job are pinned to full commit SHAs rather than version tags, so a repointed tag cannot change the code that runs. The scan job has read-only access to repository contents and holds no publishing, signing or deployment credentials.
MaintenanceDependabot proposes updates to every workflow action weekly, including the pinned SHAs (.github/dependabot.yml).

Source code analysis

ControlCodeQL static analysis of the Java and TypeScript source.
FrequencyEvery push to develop, and weekly.
EvidenceGitHub code scanning alerts from the CodeQL workflow.

Control mapping

ControlNIST SP 800-171 Rev 2SOC 2ISO/IEC 27001:2022
Software inventory (SBOM)3.4.1CC7.1A.5.9, A.8.9
Vulnerability scanning3.11.2CC7.1A.8.8
Release gate3.11.3, 3.14.1CC7.1, CC8.1A.8.8, A.8.32
Integrity of the scanning tools3.4.1, 3.14.1CC8.1A.8.25, A.8.28
Source code analysis3.11.2CC7.1A.8.28
Copyright © 2026