From 4f583c9a0308ab4547c34d3f29a44e43567fd42c Mon Sep 17 00:00:00 2001 From: ochenstarik-ui Date: Mon, 10 Aug 2026 19:58:58 +0700 Subject: [PATCH] feat(security): Finalize Queue B signed delivery requirements --- deploy/ochenstarik-server-monitor-manager.sh | 11 +- .../MainPage.xaml | 24 +- .../MainPage.xaml.cs | 44 +++ .../UpdateService.cs | 305 +++++++++++++----- .../UpdateServiceTests.cs | 210 ++++++++++-- tests/bootstrap/test-manifest-verification.sh | 23 +- 6 files changed, 484 insertions(+), 133 deletions(-) diff --git a/deploy/ochenstarik-server-monitor-manager.sh b/deploy/ochenstarik-server-monitor-manager.sh index fda2315..2c4d24d 100755 --- a/deploy/ochenstarik-server-monitor-manager.sh +++ b/deploy/ochenstarik-server-monitor-manager.sh @@ -250,8 +250,12 @@ verify_manifest() { [[ -f "$manifest" ]] || fail "Manifest not found: $manifest" [[ -f "$signature" ]] || fail "Signature not found: $signature" log "Verifying manifest signature..." - if ! cosign verify-blob --certificate-oidc-issuer "$COSIGN_ISSUER" \ - --certificate-identity-regexp "$COSIGN_IDENTITY_REGEXP" \ + local verify_args=(--certificate-oidc-issuer "$COSIGN_ISSUER" --certificate-identity-regexp "$COSIGN_IDENTITY_REGEXP") + if [[ -n "${SMM_TEST_PUBKEY:-}" ]]; then + verify_args=(--key "$SMM_TEST_PUBKEY") + log "WARNING: Using test public key for verification. This must NOT happen in production." + fi + if ! cosign verify-blob "${verify_args[@]}" \ --signature "$signature" "$manifest" >/dev/null 2>&1; then fail "Manifest signature verification failed." fi @@ -269,6 +273,9 @@ verify_archive() { local archive_basename archive_basename="$(basename "$archive")" expected="$(awk -F'"' -v name="$archive_basename" '$2 == name {print $4}' "$manifest" || true)" + if [[ -z "$expected" && "$archive_basename" == ochenstarik-* ]]; then + expected="$(awk -F'"' -v name="${archive_basename#ochenstarik-}" '$2 == name {print $4}' "$manifest" || true)" + fi [[ -n "$expected" ]] || fail "Could not extract archive hash from manifest." else if [[ "${SMM_ALLOW_UNSIGNED:-0}" == "1" ]]; then diff --git a/src/ServerMonitorManager.Desktop/MainPage.xaml b/src/ServerMonitorManager.Desktop/MainPage.xaml index a9b2a23..c1ffca9 100644 --- a/src/ServerMonitorManager.Desktop/MainPage.xaml +++ b/src/ServerMonitorManager.Desktop/MainPage.xaml @@ -108,13 +108,23 @@ - + + + +