Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e144729
CI: real-tool smoke for semgrep and njsscan, exact trufflehog detector
remigiusz-antczak Nov 13, 2026
89bf645
CI: test semgrep 1.182.1 in real-hub, fix checkov pin assertion
remigiusz-antczak Nov 13, 2026
031542b
CI: real-tool smoke for tflint, kics, cppcheck and devskim
remigiusz-antczak Nov 13, 2026
8aee6f5
CI: pin the cppcheck .deb by sha256, verify the devskim signature, fi…
remigiusz-antczak Nov 13, 2026
a0871cb
CI: real-tool smoke for govulncheck and grype
remigiusz-antczak Nov 13, 2026
b496af3
CI: retry, longer timeout and wider grype rule for the govulncheck an…
remigiusz-antczak Nov 13, 2026
48c463f
Merge origin/main into feat/hub-real-smoke-7
remigiusz-antczak Nov 13, 2026
c054cf4
CI: real-tool smoke for trivy, with a digest-pinned vuln DB
remigiusz-antczak Nov 13, 2026
c20ef39
CI: verify the trivy checksums signature and assert the pinned DB digest
remigiusz-antczak Nov 13, 2026
d4736f4
CI: real-tool smoke for osv-scanner, shellcheck and guarddog
remigiusz-antczak Nov 13, 2026
6271c4a
CI: harden the osv DB seed, guarddog install and canary retries
remigiusz-antczak Nov 13, 2026
64d11a0
CI: real-tool smoke for cargo-audit, cargo-deny and brakeman
remigiusz-antczak Nov 13, 2026
f64da19
CI: real-tool smoke for mobsfscan and eslint-security
remigiusz-antczak Nov 13, 2026
f4ad4ca
CI: put the mobsfscan wrapper dir on GITHUB_PATH in its own step
remigiusz-antczak Nov 13, 2026
98d24b4
Hub: fix kubescape report path; add real kubescape to CI smoke
remigiusz-antczak Nov 13, 2026
4ae7fc7
Merge remote-tracking branch 'origin/main' into feat/hub-real-smoke-8b
remigiusz-antczak Nov 13, 2026
de1aadd
Merge remote-tracking branch 'origin/feat/hub-real-smoke-8b' into HEAD
remigiusz-antczak Nov 13, 2026
11e2769
Merge remote-tracking branch 'origin/main' into HEAD
remigiusz-antczak Nov 14, 2026
1c17f38
Merge commit '11e276905' into HEAD
remigiusz-antczak Nov 14, 2026
a9b8401
Merge commit '1c17f38a0' into HEAD
remigiusz-antczak Nov 14, 2026
b947d70
Merge commit 'a9b8401b0' into HEAD
remigiusz-antczak Nov 14, 2026
1d7c321
Merge remote-tracking branch 'origin/main' into HEAD
Nov 14, 2026
cb8efd2
CI: seed the osv-scanner offline DB for Go as well as npm
remigiusz-antczak Nov 14, 2026
cd931a6
Hub: hand osv-scanner go.mod, not go.sum
remigiusz-antczak Nov 14, 2026
121fc06
Merge commit 'cd931a639' into HEAD
remigiusz-antczak Nov 14, 2026
bcecf4b
Merge remote-tracking branch 'origin/main' into HEAD
remigiusz-antczak Nov 14, 2026
02c401b
Merge commit 'bcecf4b35' into HEAD
remigiusz-antczak Nov 14, 2026
b43696a
Merge remote-tracking branch 'origin/main' into HEAD
remigiusz-antczak Nov 14, 2026
0386f42
CI: tolerate tool update notices in version pins
remigiusz-antczak Nov 15, 2026
577d79a
CI: check the mobsfscan semgrep pin via package metadata
Nov 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,7 @@ jobs:
"$RUNNER_TEMP/venv/bin/pip" install --quiet --require-hashes --only-binary=:all: -r scripts/real-hub-requirements.txt
echo "$RUNNER_TEMP/venv/bin" >> "$GITHUB_PATH"
# upstream detect-secrets, not the bc-detect-secrets fork that checkov pulls in (same module name)
test "$("$RUNNER_TEMP/venv/bin/detect-secrets" --version)" = 1.5.0
"$RUNNER_TEMP/venv/bin/detect-secrets" --version | grep -qx 1.5.0
- name: Install checkov (hash-locked, own venv so bc-detect-secrets cannot shadow detect-secrets)
run: |
set -euo pipefail
Expand All @@ -567,7 +567,7 @@ jobs:
gem install --no-document --install-dir "$RUNNER_TEMP/gems" --bindir "$RUNNER_TEMP/gems/bin" rubocop -v 1.69.2
echo "GEM_HOME=$RUNNER_TEMP/gems" >> "$GITHUB_ENV"
echo "$RUNNER_TEMP/gems/bin" >> "$GITHUB_PATH"
- name: Install solhint 6.2.5 (package-lock integrity hashes)
- name: Install solhint 6.2.5, eslint 9.39.5 and eslint-plugin-security 4.2.1 (package-lock integrity hashes)
run: |
set -euo pipefail
npm ci --ignore-scripts --silent --no-audit --no-fund --prefix scripts/real-hub-npm
Expand Down Expand Up @@ -808,6 +808,19 @@ jobs:
echo "cfa9e5214e4925842f4bc849a64f8a7e6c5d0425fe98eac8d7b7bc60fdc17e07 brakeman-8.1.0.gem" | sha256sum -c -
gem install --local --no-document --ignore-dependencies --install-dir "$RUNNER_TEMP/gems" --bindir "$RUNNER_TEMP/gems/bin" ./brakeman-8.1.0.gem
GEM_HOME="$RUNNER_TEMP/gems" "$RUNNER_TEMP/gems/bin/brakeman" --version | grep -qF 8.1.0
- name: Install mobsfscan 1.1.0 (hash-locked, own venv, a wrapper puts it first on PATH so mobsfscan runs its pinned semgrep 1.172.0 and not the njsscan venv one)
run: |
set -euo pipefail
python3 -m venv "$RUNNER_TEMP/venv-mobsfscan"
"$RUNNER_TEMP/venv-mobsfscan/bin/pip" install --quiet --retries 5 --require-hashes --only-binary=:all: -r scripts/real-hub-requirements-mobsfscan.txt
mkdir -p "$RUNNER_TEMP/bin"
cat > "$RUNNER_TEMP/bin/mobsfscan" <<EOF
#!/bin/sh
PATH="$RUNNER_TEMP/venv-mobsfscan/bin:\$PATH" exec "$RUNNER_TEMP/venv-mobsfscan/bin/mobsfscan" "\$@"
EOF
chmod +x "$RUNNER_TEMP/bin/mobsfscan"
echo "$RUNNER_TEMP/bin" >> "$GITHUB_PATH"
"$RUNNER_TEMP/venv-mobsfscan/bin/python" -c "import importlib.metadata as m; assert m.version('semgrep') == '1.172.0', m.version('semgrep')"
- name: Real-tool canaries
run: REQUIRE_REAL_HUB=1 bash scripts/test-review-checks-real-hub.sh

Expand Down
3 changes: 3 additions & 0 deletions changelog.d/hub-real-smoke-12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Changed
- The real-hub CI job now also runs real mobsfscan 1.1.0 and the project's own local eslint 9.39.5 with eslint-plugin-security 4.2.1 through `review_checks.sh` on fictional canaries, and fails unless each ran (no `not run`, no `NOT CHECKED`) and reported its rule on its canary file. mobsfscan scans a debuggable Android manifest and reports `android_manifest_debugging_enabled`; eslint-security runs `./node_modules/.bin/eslint` under an `eslint.config.mjs` that loads the security plugin (committed in the base, because the hub does not run a config the diff changes) and reports `security/detect-eval-with-expression` on a Node canary. Pins: mobsfscan from a hash-locked requirements file in its own venv (it pins semgrep 1.172.0, so a wrapper puts that venv first on PATH instead of the njsscan venv's semgrep); eslint and the plugin in the existing `scripts/real-hub-npm` package-lock (integrity hashes, `npm ci --ignore-scripts`). Both join the bounded hub-run retry loop.
- psalm, sobelow and licensee are not added. psalm: the hub keeps only rows with an `is_security` field, which psalm 6.20.11 does not emit (7.x does), and psalm 7.4.0's platform check needs PHP 8.3.16 or newer while the runner ships 8.3.6, so it would need a third-party PHP setup action. sobelow needs an Erlang/OTP and Elixir toolchain the runner does not ship, with no checksum-pinned install path. licensee is an inventory line the hub never counts as a scan that ran, and its dependency set includes natively built gems (rugged) that cannot be hash-locked without a Bundler lockfile.
Loading
Loading