Repository navigation
fix(security): P2 triage sweep — query injection, CVE pins, CodeQL fixes #839
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
d0d970b
584ca8f
623f807
569a422
b9317e3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| +0 −3 | .gitignore | |
| +0 −35 | Dockerfile | |
| +0 −53 | PMOVES.AI_INTEGRATION.md | |
| +0 −141 | pmoves_chit_bridge.py | |
| +0 −148 | pmoves_metrics.py | |
| +0 −152 | pmoves_nats_bridge.py | |
| +0 −5 | requirements-platform.txt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,7 +3,7 @@ | |
| > **Single source of truth** for PMOVES.AI production readiness. | ||
| > Supersedes all individual audit documents accumulated Feb 7 -- Feb 18, 2026. | ||
|
|
||
| **Last Updated:** 2026-03-09 (post-merge — PRs #834/#835 build-gate + hotfix runner) | ||
| **Last Updated:** 2026-03-09 (P2 triage sweep + query injection fix) | ||
| **Branch:** `PMOVES.AI-Edition-Hardened` (production release lane) | ||
| **Commit:** `ff9f5da1` | ||
| **Consolidated From:** 27 audit documents | ||
|
|
@@ -13,7 +13,26 @@ | |
|
|
||
| ## Latest Changes (Mar 9, 2026) | ||
|
|
||
| - **AB-9 RESOLVED** — 3/4 self-hosted runners back online (ai-lab-runner, hotfix-runner, vps-runner). Only `pmoves-ai-lab-win` (Windows) remains offline. CI queue healthy with zero starvation. CodeQL runs completing in ~4min. Concurrency/path throttles from PRs #832/#834/#835 confirmed effective. | ||
| - **P2 Tier 1 triage sweep** — 3 of 4 production-blocking P2 items verified FIXED in submodules: | ||
| - P2 #4 Open-Notebook: Auth fail-open → **FIXED** (fail-closed `HTTPException 500` at `auth.py:32-36`) | ||
| - P2 #1 BoTZ: MCP Gateway unauthenticated GET → **FIXED** (`_require_auth()` on `/servers`, `/tools`) | ||
| - P2 #8 DoX: NATS no auth → **FIXED** (auth block added to `nats.conf`; `no_tls: true` is documented dev-only) | ||
| - P2 #7 PMOVES.YT: Query injection → **FIXED** (added `_SAFE_VID_RE` validation on Hi-RAG-sourced `video_id` at `yt.py:3710`) | ||
| - **P2 tracker updated** — 4 production-blocking items closed → 11 open (all Tier 2/3, non-blocking) | ||
| - **Stale CI PRs** — #677/#678/#681 were already MERGED (2026-02-22), dashboard updated from "In progress" to "MERGED" | ||
| - **CodeQL alerts** — 2 open, both fixed in this session: | ||
| - `options.js`: XSS via innerHTML → replaced with DOM API (`textContent`) | ||
| - `mock-server.js`: unvalidated dynamic property → guarded with `Object.hasOwn()` | ||
| - **Dependabot alerts** — 0 open | ||
| - **Trivy CVE overrides** — added pip upgrade steps in Dockerfiles: | ||
| - `archon`: `crawl4ai>=0.8.0` (CVE-2026-26216 RCE), `langchain-core>=1.2.5` (CVE-2025-68664 RCE) | ||
| - `deepresearch`: `ray>=2.52.0` (CVE-2025-62593 RCE), `vllm>=0.14.1` (CVE-2026-22778 RCE) | ||
| - **AB-9 UPDATE** — All 4 self-hosted runners offline as of Mar 9 investigation. Previous "3/4 online" claim was stale. Root causes: `ai-lab-runner` (WSL2, no systemd service installed — process stopped), `ai-lab-win` (no Windows service — process stopped), `hotfix-runner` + `vps-runner` (remote machines, not accessible from dev workstation). WSL2 systemd now enabled (`/etc/wsl.conf`). Local runners require manual restart via `svc.sh install` (WSL) or interactive `run.cmd` (Windows). GHCR builds targeting `[self-hosted, Linux, X64, vps]` remain blocked until VPS runner is restored. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. AB-9 is reported with multiple conflicting runner states. The latest-changes section says all four self-hosted runners are offline, the executive summary says As per coding guidelines, "Keep status claims aligned with evidence in runbooks and smokes." Also applies to: 374-375, 499-499 🧰 Tools🪛 LanguageTool[style] ~30-~30: Consider using “inaccessible” to avoid wordiness. (NOT_ABLE_PREMIUM) 🤖 Prompt for AI Agents |
||
| - **Dockerfile audit fixes (4 images):** | ||
| - `pmoves-archon`: Renamed `MCP_CREDENTIALS_PATH` → `MCP_CONFIG_PATH` to eliminate BuildKit `SecretsUsedInArgOrEnv` warning | ||
| - `pmoves-archon-ui`: Added USER directive (uid 65532, alpine `adduser`) | ||
| - `pmoves-firefly-iii`: Added `USER www-data` defense-in-depth (upstream default) | ||
| - `pmoves-llama-throughput-lab`: Added USER directive (uid 65532) + nginx permission fixup for non-root | ||
| - **PRs #834/#835 merged** — build-gate Phase 2 (`build_gate.py` + `build-gate.mk`) and hotfix runner lane with `subprocess.TimeoutExpired` handling | ||
| - **Dependabot alerts**: 0 open (was 1 medium — now resolved) | ||
| - **P2 tracker refreshed** — 15 items remain open, 1 previously closed (HiRAG stale). No P2s fixed by intervening merges. Tracker date updated to 2026-03-09. Re-prioritized into 3 tiers: 4 production-blocking (P2-HIGH/MED), 6 tracked improvements, 5 cosmetic/env syntax. | ||
|
|
@@ -352,7 +371,7 @@ Three CI pipelines build Docker images. This matrix is the single cross-referenc | |
| | CodeQL alerts (open) | **0 open** (live GitHub API on 2026-03-09) | | ||
| | Dependabot alerts | **0 open** (live GitHub API on 2026-03-09) | | ||
| | Open PRs | **0** | | ||
| | CI queue | Healthy — hosted + self-hosted (3/4 runners online) | | ||
| | CI queue | DEGRADED — 1/4 self-hosted runners online (`ai-lab-win`); WSL runner needs manual start; VPS+hotfix remote; hosted (ubuntu-latest) workflows healthy | | ||
|
|
||
| ### Runtime Verification Snapshot (2026-03-09) | ||
|
|
||
|
|
@@ -441,9 +460,9 @@ Release coordination note: `https://github.com/POWERFULMOVES/PMOVES.AI/pull/699# | |
|
|
||
| | PR | Branch | Focus | Status | | ||
| |----|--------|-------|--------| | ||
| | #681 | `fix/ci-self-hosted-hardening` | GHCR workflow adjusted to build-only behavior on pull requests (no push/sign/scan) to avoid 403 package push failures | In progress (checks re-running) | | ||
| | #678 | `fix/ci-pytest-conftest-collision` | Python tests switched to importlib mode and CodeQL JS lane now pins Node 20 on self-hosted runners | In progress (checks re-running) | | ||
| | #677 | `fix/silent-failure-hardening` | Same CI fix set as #678 plus compose fix to keep `nats-init` defined for default validation path | In progress (checks re-running) | | ||
| | #681 | `fix/ci-self-hosted-hardening` | GHCR workflow adjusted to build-only behavior on pull requests (no push/sign/scan) to avoid 403 package push failures | **MERGED** (2026-02-22) | | ||
| | #678 | `fix/ci-pytest-conftest-collision` | Python tests switched to importlib mode and CodeQL JS lane now pins Node 20 on self-hosted runners | **MERGED** (2026-02-22) | | ||
| | #677 | `fix/silent-failure-hardening` | Same CI fix set as #678 plus compose fix to keep `nats-init` defined for default validation path | **MERGED** (2026-02-22) | | ||
|
|
||
| ### Static Audit Layer Results (2026-02-18) | ||
|
|
||
|
|
@@ -477,7 +496,7 @@ Evidence log: `pmoves/docs/evidence/audit-validation-2026-02-20-production-runti | |
|
|
||
| | ID | Blocker | Source Doc | Severity | Status | Next Action | | ||
| |----|---------|-----------|----------|--------|-------------| | ||
| | AB-9 | Self-hosted runner queue starvation on CodeQL/GHCR lanes | Release closeout 2026-02-24 | **HIGH** | **RESOLVED** | 3/4 runners online (ai-lab, hotfix, vps). Windows runner offline (non-blocking). CI queue healthy, CodeQL ~4min. Concurrency throttles effective. Resolved 2026-03-09. | | ||
| | AB-9 | Self-hosted runner queue starvation on CodeQL/GHCR lanes | Release closeout 2026-02-24 | **HIGH** | **REGRESSED** | All 4 runners offline (no persistent services installed). WSL2 systemd enabled, local runners need manual `svc.sh install`/`run.cmd`. VPS+hotfix runners remote-only. GHCR builds blocked. Hosted workflows (ubuntu-latest) unaffected. | | ||
| | AB-10 | `main` vs hardened commit-history divergence after squash promotion | Sync pass 2026-03-04 | **LOW** | TRACKED | Maintain content parity (`git diff` clean). Use explicit promotion + back-sync notes to avoid false-positive divergence alarms in ops reports | | ||
|
|
||
| ### Blocker Detail | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The blocker closeout count contradicts itself.
Line 16 says
3 of 4production-blocking P2 items were fixed, but the bullets below mark four items fixed and Line 21 says four blockers were closed. Please collapse this to one number before publishing the dashboard.As per coding guidelines, "Keep status claims aligned with evidence in runbooks and smokes."
🤖 Prompt for AI Agents