fix(security): projectId path guard, npm HIGH CVEs, Foote novelty sign - #727
Conversation
- Reject path separators and exact "."/".." in Python analysis job projectId (defense-in-depth alongside Rust orchestration validation), with tests that still accept substring identifiers like "my..id". - Pin brace-expansion 5.0.9 and postcss 8.5.25 via npm overrides to clear GHSA-3jxr-9vmj-r5cp and GHSA-r28c-9q8g-f849. - Correct inverted Foote checkerboard novelty kernel so section boundaries produce positive peaks detectable by detect_boundaries (Python + Rust). Security Notes: - Untrusted input: analysis job projectId from orchestration payloads. - Trust boundary: Python engine validates before any path join; Rust already validates at the Tauri IPC boundary. - Mitigations: reject "/", "\\", exact "." and ".."; fail closed with ValueError. - Logging: warning only (no raw payload dump of untrusted paths beyond id shape). - Test points: test_api path-traversal cases + my..id allowlist; novelty peak-at-boundary test; numeric parity still exercises reference vs native.
|
Warning Review limit reached
Next review available in: 19 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (8)
Comment |
- Raise yt-dlp floor to >=2026.7.4 and refresh uv.lock to clear CVE-2026-55404 (HIGH) that blocked trivy-fs on #727. - Document CVE-2026-59890 for setuptools 81.0.0 in .trivyignore with expiry — latest resolvable release remains unfixed; setuptools is not on the runtime analysis path. Security Notes: untrusted YouTube import path uses yt-dlp; pin is the mitigation. setuptools ignore is build-time only with revisit date.
Summary
Commercial-readiness loop cycle: land the highest-priority unique security and product correctness fixes that were stuck as a storm of near-duplicate open PRs.
projectIdpath-traversal guard — reject/,\, and exact./..before any path join (defense-in-depth with Rust).brace-expansion@5.0.9andpostcss@8.5.25via root overrides (clears GHSA-3jxr-9vmj-r5cp and GHSA-r28c-9q8g-f849).+1, cross-1, so section boundaries produce positive peaks thatdetect_boundariescan detect (Python reference + Rust native).Supersedes open clusters:
Security Notes
projectIdon analysis job payloads; transitive npm build-tool CVEs./..); npm overrides to fixed releasesValueErrorwith path-traversal message; no generic exectest_apitraversal cases +my..idallow; Foote peak-at-boundary; existing parity suiteTest plan
uv run --project services/analysis-engine pytesttargeted:test_apivalidation cases,test_segmenterFoote peak, novelty paritynpm audit→ 0 vulnerabilities after overridesVerification
Local: targeted pytest 5 passed; ruff clean on touched files.