mirror of
https://github.com/ruvnet/RuView.git
synced 2026-07-10 01:30:01 +00:00
|
Some checks are pending
Continuous Deployment / Pre-deployment Checks (push) Waiting to run
Continuous Deployment / Deploy to Staging (push) Blocked by required conditions
Continuous Deployment / Deploy to Production (push) Blocked by required conditions
Continuous Deployment / Rollback Deployment (push) Blocked by required conditions
Continuous Deployment / Post-deployment Monitoring (push) Blocked by required conditions
Continuous Deployment / Notify Deployment Status (push) Blocked by required conditions
Continuous Integration / Code Quality & Security (push) Waiting to run
Continuous Integration / Notify (push) Blocked by required conditions
Continuous Integration / Docker Build & Test (push) Blocked by required conditions
Continuous Integration / API Documentation (push) Blocked by required conditions
Continuous Integration / Rust Workspace Tests (push) Waiting to run
Continuous Integration / Tests (push) Waiting to run
Continuous Integration / Tests-1 (push) Waiting to run
Continuous Integration / Tests-2 (push) Waiting to run
Continuous Integration / Performance Tests (push) Blocked by required conditions
Firmware CI / Verify version.txt matches release tag (push) Waiting to run
Firmware CI / Build ESP32-S3 Firmware (4mb) (push) Waiting to run
Firmware CI / Build ESP32-S3 Firmware (8mb) (push) Waiting to run
Firmware QEMU Tests (ADR-061) / Build Espressif QEMU (push) Waiting to run
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-max) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (boundary-min) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (default) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier0) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (edge-tier1) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (full-adr060) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / QEMU Test (tdm-3node) (push) Blocked by required conditions
Firmware QEMU Tests (ADR-061) / Fuzz Testing (ADR-061 Layer 6) (push) Waiting to run
Firmware QEMU Tests (ADR-061) / NVS Matrix Generation (push) Waiting to run
Firmware QEMU Tests (ADR-061) / Swarm Test (ADR-062) (push) Blocked by required conditions
Fix-Marker Regression Guard / Verify fix markers (push) Waiting to run
Security Scanning / Static Application Security Testing (push) Waiting to run
Security Scanning / Dependency Vulnerability Scan (push) Waiting to run
Security Scanning / Container Security Scan (push) Waiting to run
Security Scanning / Infrastructure Security Scan (push) Waiting to run
Security Scanning / Secret Scanning (push) Waiting to run
Security Scanning / License Compliance Scan (push) Waiting to run
Security Scanning / Security Policy Compliance (push) Waiting to run
Security Scanning / Security Report (push) Blocked by required conditions
wifi-densepose sensing-server → Docker Hub + ghcr.io / build · push · smoke-test (push) Waiting to run
ota_check_auth() previously returned true when s_ota_psk[0] == '\0'
("permissive for dev"). A freshly-flashed node — or any node where
nobody had provisioned an OTA PSK yet — accepted attacker-controlled
firmware over plain HTTP on port 8032 from any host on the WiFi. No
Secure Boot V2, no signed-image verification, no transport encryption.
Single LAN call could brick or backdoor a node.
This was flagged in the deep security review of PR #596 but was a
PRE-EXISTING bug in main, not new code from that PR — so it stood as
a critical-severity production issue until this commit.
Fix:
- ota_check_auth() now returns false when no PSK is provisioned, with
ESP_LOGW("OTA rejected: no PSK in NVS …") at the call site so the
operator can diagnose the rejection from serial logs
- ota_update_init() ESP_LOGW message updated to surface the new posture
at boot ("upload endpoint will REJECT all requests until provisioned")
- Doc comment on ota_check_auth() rewritten to make the contract
explicit and reference the audit
The OTA HTTP server itself still starts even when no PSK is set. That
lets the operator run `provision.py --ota-psk <hex>` over USB-CDC to
write the NVS key without reflashing the firmware. The upload endpoint
just refuses every request in the meantime.
Breaking change for any deployment that depended on the unauthenticated
OTA path working out of the box. Documented in CHANGELOG under
[Unreleased] / Security so it's visible at the next release cut.
Fix-marker RuView#596-ota-fail-closed (scripts/fix-markers.json)
requires the new behaviour and forbids the old "permissive for dev"
fallback strings, so a future revert fails CI.
|
||
|---|---|---|
| .. | ||
| swarm_presets | ||
| align-ground-truth.js | ||
| apnea-detector.js | ||
| benchmark-model.py | ||
| benchmark-rf-scan.js | ||
| benchmark-ruvllm.js | ||
| benchmark-wiflow.js | ||
| check_fix_markers.py | ||
| check_health.py | ||
| collect-ground-truth.py | ||
| collect-training-data.py | ||
| csi-graph-visualizer.js | ||
| csi-spectrogram.js | ||
| deep-scan.js | ||
| device-fingerprint.js | ||
| esp32_jsonl_to_rvcsi.py | ||
| esp32_wasm_test.py | ||
| eval-wiflow.js | ||
| fix-markers.json | ||
| gait-analyzer.js | ||
| gcloud-train.sh | ||
| generate-witness-bundle.sh | ||
| generate_nvs_matrix.py | ||
| inject_fault.py | ||
| install-qemu.sh | ||
| mac-mini-train.sh | ||
| material-classifier.js | ||
| material-detector.js | ||
| mesh-graph-transformer.js | ||
| mincut-person-counter.js | ||
| mmwave_fusion_bridge.py | ||
| passive-radar.js | ||
| probe-fft-platform.py | ||
| provision.py | ||
| publish-huggingface.py | ||
| publish-huggingface.sh | ||
| qemu-chaos-test.sh | ||
| qemu-cli.sh | ||
| qemu-esp32s3-test.sh | ||
| qemu-mesh-test.sh | ||
| qemu-snapshot-test.sh | ||
| qemu_swarm.py | ||
| record-csi-udp.py | ||
| release-v0.5.4.sh | ||
| rf-scan-multifreq.js | ||
| rf-scan.js | ||
| rf-tomography.js | ||
| room-fingerprint.js | ||
| seed_csi_bridge.py | ||
| sleep-monitor.js | ||
| snn-csi-processor.js | ||
| stress-monitor.js | ||
| swarm_health.py | ||
| through-wall-detector.js | ||
| train-camera-free.js | ||
| train-ruvllm.js | ||
| train-wiflow-supervised.js | ||
| train-wiflow.js | ||
| training-config-sweep.json | ||
| udp-relay.py | ||
| validate_mesh_test.py | ||
| validate_qemu_output.py | ||
| wiflow-model.js | ||