Repository navigation
fix(security): repair shared dependency scan failures - #1828
seonghobae wants to merge 8 commits into
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: ContextualWisdomLab/naruon/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (12)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughBackend and frontend dependency pins and lock records are updated. Tests check dependency pins, lock ownership, and a populated JWKS response. Repository guidance and documentation record the security-scan handling and verification history. ChangesDependency Security and Lock Alignment
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to Dependency, lock, and fixture validation is reported as passing, and no actionable code issue remains from this review. Promotion remains subject to the stated independent-review condition. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The inspected changes preserve authentication and network destination controls and strengthen dependency ownership checks. No introduced security issue was established. Risk remains low rather than minimal because compatibility of the refreshed dependencies, particularly signing-key cache and recovery behavior, is not fully established. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Exact-head verification refresh for
The remote commit contains the same 12-file tree ( |
|
Consumer reproduction added for canonical-owner traceability:
These are the same shared-manifest/lock families owned here; no duplicate leaf repair belongs in #1827. Acceptance remains: this owner PR reaches exact-head integrated GREEN and independent review, merges ordinarily into |
Exact consumer evidence: #1827Draft #1827 exact head At #1828 exact head After protected integration, #1827 must merge the new protected |
Preserve PR #1818's bounded URL traversal repair while stacking the repository-wide dependency owner delta from PR #1828. The previous exact head failed Trivy on three AnyIO advisories, two Next.js advisories, and one Sharp advisory inherited from develop; #1828 repairs those source manifests and generated locks without weakening the fail-closed security gate. Combined-tree evidence: 1,809 backend tests passed with warnings fatal, 37 focused URL/dependency contracts passed, 437 frontend tests passed, Python and pnpm production audits found no known vulnerabilities, and git diff --check passed.
|
Consumer evidence: #1818's exact head failed Trivy on the same shared AnyIO, Next.js, and Sharp locks. Its valid URL traversal delta is now non-force stacked on this canonical owner head |
Application CI RCA / owner repair
Repair commit: 이 PR은 새 exact-head hosted Checks가 terminal successful이 될 때까지 Draft/Proposed 상태를 유지합니다. queued/skipped/predecessor 결과는 통과로 취급하지 않습니다. |
Preserve the complete PII masker delta while inheriting the develop-root dependency remediation proven by Security Scan run 36697284358. This replaces exact-head trivy failure run 36706608256 without suppressing findings or rewriting history.
2026-10-01 advisory refresh — canonical-owner repairExact consumer evidence from Draft #1833 at
Root cause: the prior owner head was valid against its then-current advisory set, but the exact-current consumer scan received newly published residual advisories. This remains a shared manifest/lock responsibility owned here, not a product-graph leaf fix. Repair head:
This PR remains Draft. New hosted exact-head Checks must be terminal successful; pending, queued, skipped, and predecessor results are not acceptance evidence. |
Application CI follow-up repairThe refreshed dependency owner exposed one test-fixture incompatibility on exact head
Root cause is the unrealistic transport fixture, not production OIDC behavior. The production client continues to reject empty or unusable JWKS fail-closed. Repair head Verification:
This PR remains Draft pending fresh exact-head hosted Checks and independent review. No warning, gate, or empty-key rejection was suppressed. |
2026-10-01 exact-head revalidation completeAt current Draft head |
|
Canonical-owner admission update (2026-10-01): exact head |
|
Upstream admission-cycle RCA is now repaired at canonical owner ContextualWisdomLab/.github#2376, exact head This PR remains Ready but blocked: its prior Draft-skipped CodeQL run did not re-enter on |
Residual dependency repair checkpoint — not merge-readyCurrent owner remains Parent-executed verification: backend 1817 passed / 33 skipped, Ruff clean; frontend 437 testcase rows / failure 0 / skip 0, lint/typecheck/production build exit 0. Seven pre-existing React act warnings were genuinely reproduced and repaired by awaiting input events/source loading, without suppressing console output. Permanent call-through warning assertions pass; restoring one original dispatch makes them fail. Final full frontend run emits no forbidden warning-class signals. Verified child scanner receipt: unfiltered OSV querybatch returns 102/102 candidate responses with zero findings; artifact manifest 88/88 hashes matches. Full frontend audit still returns HIGH GHSA-vfj7-8cjw-p6xm, braces 3.0.3; official advisory currently has no patched version. Do not treat this candidate as clean audit or merge-ready, invent braces 3.0.4, ignore the advisory or weaken scanners. The existing central admission prerequisite #2376/#2536 also remains Draft/unmerged and previously skipped gates are not substantive execution. Evidence correction: archive SHA Whole current candidate diff is bound to SHA256 Post-security live-browser replay now has an actual successful receipt after retaining the two prior failures. The fixture readiness check was corrected to query the final TCP PostgreSQL server, not its temporary bootstrap UNIX server. Actual Chrome/cookie proxy/import/list/detail/search/second-owner isolation passed again on the #1317 owner composition with the updated frontend lock; browser errors0 and identity headers absent. Source/runtime/provider/release limits are unchanged. Owned resources were cleaned up. Related to #1428. |
Published canonical-owner successor / blocked before hosted executionExisting #1828 now carries ordinary non-force successor Actual adopted-checkout execution: full backend 1817 passed / 33 skipped, focused dependency/release/auth 137 passed, Ruff clean. Identical reviewed frontend tree has 437 testcase rows / failure0 / skip0, warning-clean default logs, lint/typecheck/production build success. Nonblocking parity-coverage suggestions remain follow-up work, not reasons to invalidate the reviewed tree. Fresh hosted checks are not executed test failures. All 11 failed jobs on this head have the exact failure-level annotation: “The job was not started because your account is locked due to a billing issue.” Backend job111128661382, frontend111128661572 (run37096935690), image jobs111128662320/415/450 (run37096935861), Bandit111128661266 and five CodeQL jobs share that admission cause. The separate Ubuntu-image notice is not causal. The annotation does not identify whether the affected payer is personal or organizational; that context and payment recovery need the authorized account administrator. No payment, credentials, runner/protection change or duplicate rerun was attempted. Local success does not satisfy these hosted gates. Remaining source security work: braces3.0.3 GHSA-vfj7-8cjw-p6xm HIGH has no published patch in current verified evidence. A bounded investigation of actual dependent removal/replacement is underway; no invented3.0.4, ignores or severity suppression. Existing central #2376/#2536 admission prerequisites remain unmerged. Keep Draft and do not auto-merge. The separately attributed #1317/private dependency composition also passed actual PostgreSQL and Chrome cookie-proxy import/list/detail/search/cross-owner isolation after the new frontend lock. This proves the tested candidate journey, not protected develop shipment or customer-provider writes. Related to #1428. |
|
Existing #1828 now carries ordinary successor Actual clean committed-head execution: backend1817passed/33skipped; frontend437JUnit/0failure/error/skip plus all dependency regressions and3Nodewatcher contracts via normal test; frozen install/lintmax-warnings0/typecheck/build/unfiltered pnpm audit exit0. Node24/pnpm11.5.3; final local logs have no warning-class signals. External chain removed; Playwright family1.63.0 bundle removal verified. Vite embedded braces remains, so audit0 is not all-source security clearance. All11fresh failed hosted jobs again report the same exact-head failure annotation: The job was not started because your account is locked due to a billing issue. This is shared pre-execution blockage, not11product source failures. No rerun/payment/protection change/auto-merge. Full canonical E2E still pending: separate38distinctcase harness correction35pass3fail is not included here, with remaining fixture/selector repair underway. Related to #1428. |
|
Published the reviewed ordinary successor Actual clean committed-head frontend437JUnit cases passed, dependency/3Nodewatcher contracts passed, lint/typecheck/production build/package audit passed. Backend1817passed33skipped. Full3project UI/mock collection:158passed19existing-skips177unique, exit0, matchingChromium1243 and original60s/15s bounds; no live guard edits or new skips. Parent executed this committed-head browser run rather than transferring scratch test results. Private#1317 plus final dependency/frontend composition separately passed freshPG17 schema to0020 and real signed HttpOnly mail import/list/detail/lexical-search/other-owner isolation; original real dashboard smoke1pass0skip. This is private integration, not standalone#1828freshbackend, released product, model/provider execution or OIDC-admin membership. Complete browser authority-header observer correction remains pending; anonymous-negative console messages are preserved. All11exact-new-head failed hosted jobs again report 'The job was not started because your account is locked due to a billing issue.' Their annotations were read on this head. No source execution, rerun, payment, protection bypass or auto-merge. Vite embedded braces remains. KeepDraft and original Issue#1428OPEN until protected integration/released acceptance. Actual authority-observer follow-up — October 3, 2026Parent verified all49 receipt digests. Primary real mail journey completed14/14 asynchronousallHeaders collections:12 signed-cookie requests,2 anonymous without-cookie requests; Authorization plus all6 public identity headers absent; pageerrors0; freshPG17 import/list/detail/lexicalsearch/other-owner isolation passed. Supplementary original dashboard testcase succeeded, but added observer cookie guard rejected2 early POST/api/search observations (IDs7/13) with absent Cookie. CLI and overall probe exited1; this is NOT whole acceptance. Cancellation-before-transmission is an unverified hypothesis, not an exemption. A separate owned actual-wire investigation is running without product changes. Earlier failed readiness/networkidle receipts and deliberate401 console errors remain; no all-console-clean claim. Ports/ownedDB cleaned. PR remainsDraft, notmerged/released. Measured ingress diagnosis — October 3, 2026The separate actual-wire reproduction observed both missing-cookie search requests failing net::ERR_ABORTED in Playwright and canceled=true in Chromium. Only two POST/search calls reached the fixture Next server; both completed200 with cookie. All25 received signed API requests carried Cookie and no forbidden public identity/Authorization headers. Parent verified32 receipt digests,1881 unchanged source files,55 unchanged predecessor receipts and owned-port cleanup. The original strict all-initiated-request collector still rejects2/27 missing cookies and exits1; it was not weakened or called passed. A deliberate abort control additionally proves an aborted request can omit Cookie in allHeaders while actually sending Cookie. Thus cancellation alone is not an exemption. The diagnosis supports pre-ingress cancellation for this reproduction, not retrospective historical attribution or proof of zeroTCPbytes. CDPExtraInfo covers21/25 completed requests; server-ingress and completed Playwright observations cover the remainder; the gap is disclosed. Exact application cleanup trigger remains unproved. A scratch-only Vite depth-guard proposal has437 frontend tests and other local gates passing, but keeps embedded braces/chokidar3. This is bounded remediation, not removal or hosted approval. Parent found nested patch export whitespace warnings before adoption; serialization repair and independent incremental source assessment are pending. Canonical publishedhead remains unchanged/Draft; no merge or released usability claim. Reviewed Vite owner publication — October 3, 2026Published ordinary successor Actual clean committed-head frozen install, normal dependency/watch contracts plus437frontendJUnit/0failure/error/skip, lintmaxwarnings0, typecheck, productionbuild and unfilteredpackageaudit allpassed. Fullbackend1817passed33skipped. Real matchingChromium production UI/mock run:177unique,158passed19unchangedskips/0unexpected/flaky; originaltestlimits andliveguards preserved. Current11hosted jobs didnotstart due billing/account-lock annotations; noexecutedCIpass or blanket security clearance. Vite's embedded braces remains: mandatory64parser/65walker depth bounds remediate the scoped recursive-stack finding, not removal/cardinality/hostileobject/asyncprocess-survival protection. Normalcommand restored-originalbundle mutation rejects; exactfreshsupplier35bytes verified. Author-privateTMPDIR blocker and actualpremature-ready fixture race corrected without deadline/sleep/poll/retry bypass. Earlierfailedreceipts remain. Final published-overlay primary realPG/mail acceptance and Linux-native exact-source contracts are now separate owned tasks. Earlier private#1317 journey and measuredNextingress remain valid but are not transferred automatically to thisnewhead. Supplementaryoriginalinitiated-requestcookieguardexit1 staysfailed. PRDraft/Issue1428OPEN; no merge, provider execution, release or deployment claim. Published overlay primary live result — October 3, 2026Primary real private#1317composition plus exact published64eff330 seven-path overlay passed actual probe0/browser0. Parent independently checked46receipt hashes,1885source files and all7Git-bound overlay blobs; installed patchedVite bundle b7d9b41e bytes verified. FreshPostgreSQL17.11/pgvector0.8.7/migration0020; anonymous401/signedHttpOnlysession200/EMLimport1failed0/list1/detail200/lexicalsearch1/other-ownerlist0/detail404. All14queuedallHeaders complete:10signedcookiepresent/4anonymousnone, all7forbiddennames0, pageerrors0. This is primary privateintegration, NOT standalone#1828freshbackend or protectedrelease/provider/OIDC-admin certification. Historicalsupplementaryguardfailure wasnot rerun. Rawconsole errors7 retained, including a late401 without precise response correlation; no all-console-clean claim. Initialownedfrozeninstall WARN53/240s timeout/child-9/runner1 preserved; separately labeled retry succeeded. Successful currentjourney doesnot convert allattempts to clean. Source drift0, canonicalunchanged and ownedports/containercleanup independentlychecked. Linuxfullfrontendvalidation stopped beforetests:3frozeninstallsOOM137 at~1.9GiB VM/no swap, oom_kill3. Parent verified23retained log digests, failedexits andcleanedownedcontainer. NoLinuxcontract/fullsuitepass; no policy weakening/sharedservicekill/VMreconfiguration. A smaller exactsupplier diagnostic is being prepared separately without anotherfullinstall retry and cannot replace fullfrozeninstallation acceptance. Hostedbillingadmission/formalreview/protectedmerge/releasedusability remain outstanding; keepDraft/Issue1428OPEN. Linux exact-supplier follow-up — October 3, 2026Small Linuxarm64/Node24.19.0 actual Vite createServer/native bundledwatcher seam passed with exact published supplier35files/bundle b7d9b41e, individually integrity-verified public locked dependencies and real Linuxrolldownnativebinding. Parent checked208artifact hashes,35supplierbytes against the published install,4sourceGit hashes and10raw command outcomes (8positiveexit0/2expectedupstreamREDexit1). TMPDIRunset/present, pollingfalse, original5sdeadlines, literal/glob/symlink/subscription/negativeclose controls exercised. Only diagnosticresolutionstatements differ from immutablepublishedscripts; nofakewatch/import orpackagepolicychange. Twooffline768MiBownedcontainers zeroOOM; other12containerspreserved. This recovers supplier/platform seam evidence, NOT a fullLinuxfrontendfrozeninstall, originalfullpnpmcommand orhostedCIpass. Prior3installOOM137receipts remain FAILED_NOT_CERTIFIED. Native add callback alone wasnotclaimedcomplete readiness; actual file subscription was verified before mutation. Recursionbounds are not removal or comprehensiveDoSclearance. No sourcechanges/push/protectedmerge/release. Freshcurrentheadstill11failedadmissionjobs withbillinglock; informationalUbuntuimage-migrationannotation retained separately. Repo-localrunners0 butorg has9registered/8online; labels/status are not eligibility ordisposabletrustproof. Existing selfhostedmigration owner/routing is being investigated read-only to advance requiredchecks without an unchangedrerun, scanner/gateweakening, persistentprivilegedPRexecution or sharedVMchanges. Openqueue331PR/76issues; protecteddevelopunchanged. Existing CI admission owners recovered — October 3, 2026Existingcentralmigrationowner is .github#2565 (cd2c3f97), existingcapacity/isolationowners linux-cluster-ops#326 and QSR#136/#137. Read-onlygroup inventory confirms CWL CI isolated absent; online runners in restricted privileged groups are not substitutes for ordinary Naruon PR payloads. All11currentfailedjobs have runner0/steps[]/hostedubuntu-latest/account-lock. FiveCodeQL failures are service-manageddynamicCodeQuality/code-scanning, NOTcentralcodeql-pr; no centralSecurityScanproducer appears in thisheadrollup. Defaultsetup configuredstandard/extended/remote_and_local is a separate administrator routing obligation; no settings weakened. Bounded owner-history/liveidentity recovery proves existing term_c2814f17 is actively handling centralschema correction and credential-free isolatedpreleasecanary; predecessorregisteredcheckoutHEAD is not evidence of an abandoned writer. One exactconsumerlink msg_64548b257bbd enqueued to that existingowner; delivered/adopted/runtimeactivation not claimed. No centralorinfra writer duplication, SSH/VM changes or blind rerun. Naruon's existingowner is preparing an unpublished scratch-only four-job selector proposal in app-ci/bandit/DockerPRvalidation. It cannot be activated or used as current64headCIpass before actual isolatedcapacity/group+repoeligibility/offlinehost-LANdenial/cleanup/toolchain/canary and exactheadchecks. Credential-bearing release jobs remain outside that bounded slice and no allselfhostedcompletion claim is made. Current sourcehead64eff330 remains unchanged Draft; protected merge/releasedusability incomplete. Scratch routing source-admission correction — October 3, 2026The initial four-job/three-workflow scratch proposal reproduced four unknown-custom-label actionlint findings. Parent retained that failed export and added the one missing cwlab-ci-isolated declaration to the proposal's normal .github/actionlint.yaml, preserving mail-egress and all lint checks. A new regression failed1/16passed before configuration change; final scratch fullbackend1834passed33existing-skips, Ruff0 and normal unsuppressed all7workflowactionlint0. This is a linter inventory, not a runtime runner label/access grant or warning suppression. Parent verified all1868originalsource entries, with only4existing paths changed (config+3selector-onlyworkflows) and2added test/document paths. Prior5source/37evidence files remain immutable. Originalpermissions/events/matrices/steps/actionpins/securitygates and credential-bearing Dockerrelease jobs remain unchanged. Finalwhole42pathsource review is pending; scratch is unpublished/HOLD. The current PRhead64eff330 is unchanged. Actual group/capacity/host-LANdenial/cleanup/canary and exactheadCI approval/merge/release remain separate unmet prerequisites; no allselfhostednormalization claim. Conditional whole42 source verdict received — October 3, 2026Independent deleg_a5c27660 assessed all42paths, rebound36byte-identical prior judgments and substantively passed6new CI-proposal paths, no source blockers. Parent matched binding9c3213f8/fullpatch Existingcentral source/capacity owner is still active with the same verified incarnation; no reply or proven canary/group/access adoption received. No duplicateowner or blanket wait inference. CurrentsecurityPR64eff330clean/Draft preserved. Separately current DB prerequisites1694/1782/1794/1317 andregistry1503 are being reconciled in an owned private diagnostic to close fresh/existing-schema compatibility without overwriting old dependency graphs or generating another repairPR. Prior realmailprivateacceptance is not proof of normalprotectedprerequisiteintegration. CurrentCIcapacity/isolation/requiredgates/protectedrelease goals remain unmet. |
October 3, 2026 — reviewed owner successor; Draft, not merged
Current head
64eff330f2bf8e383c4de15cb7fc1a89063d1c85, parentaa08f2a6c63366df6f4109a74dbc759b23423541, reviewed36-path tree84faeee48240a6b8b58c8b69931d31bc1cc600deand complete diffSHA256ba036e3dea576c1677864d34db03907d5327cf39575c1990c611fe779c50fd59. Independent complete source verdict passed for safe Draft publication only. Ordinary same-branch push and remote/PRhead verified; no duplicate PR, forced push, protection bypass or counted self-approval.Vite8.1.4 exact pnpm patch bounds embedded braces parser stack at64 and recursive compile/expand/stringify at65. Eight anchored vendor hunks reproduce35supplierfiles exactly. This is narrow recursion remediation, NOT embedded braces/chokidar removal, comprehensive DoS/resource protection or asynchronous watcher/process-survival assurance. Canonical package audit0 refers to external inventory only. Exact mandated regressions reject restored vulnerable bundle. Prior private-TMPDIR blocker fixed; actual file-subscription witness resolves reproduced premature-global-ready fixture race without sleeps, polling, retries or deadline increases.
Actual clean committed-head frozeninstall/normaldependency+watchcontracts/437frontendJUnit0fail0skip/lintmaxwarnings0/typecheck/productionbuild/audit0 all passed. Full backend1817passed33skipped. Committed-head production UI/mock collection across3projects completed naturally:177unique,158passed19unchangedskips,0unexpected/flaky. Original60s/15slimits, Node24.19.0/pnpm11.5.3/matchingChromium1243. The19skips include15live/model and4desktop-only conditions. UI/mock acceptance is not realbackend/providerexecution. Earlier timeouts/warnings/production-env failures remain separate failed historical evidence.
Separate private complete#1317af362d58 composition with previous runtime/frontsource reached freshPG17migration0020 and actual signedHttpOnly EMLimport/list/detail/lexicalsearch/other-owner isolation. Complete primary14API allHeaders guard passed; supplementary original initiated27request guard still rejects2canceledsearchcookieobservations/exit1. Separate actual Next ingress measured25received requests allcookiepresent/forbidden0/200, with explicitcancellation/CDP gaps. This is private integration, not standalone#1828freshbackend, protected release or provider/OIDC-admin acceptance. No generic canceled-request exemption or all-console-clean claim.
Exacthead failed hosted admission jobs observed: 11. Their current annotations are retained; checks/formalqualifyingreview/protectedmerge/releasedusability remain unmet. No auto-merge or gate waiver. KeepDraft and Issue#1428OPEN. Nonblocking source-review suggestions retained as follow-ups without modifying this frozen reviewed tree.
2026-10-01 current owner admission (authoritative)
74f9d6dd3b34d1179ca5f2aa3c5c294d22c7d2b2; base:develop@042b0c70531b229af3acbd0421a2f23098d848b3.Summary
develop-root owner changeRoot cause
Protected
develop@042b0c70531b229af3acbd0421a2f23098d848b3still resolves the vulnerable shared versions. Partial fixes were mixed into unrelated stale PR heads, so each PR inherited a different subset of the same repository-wide scan failure. The first full warning-fatal validation also exposed Starlette 1.3.1's deprecated AnyIO alias; this change fixes that supplier boundary instead of suppressing the warning or downgrading AnyIO.TDD and local evidence
PYTHONWARNINGS=errorimportsstarlette.testclient.TestClientsuccessfullyPYTHONWARNINGS=error; Ruff green;uv pip checkgreenAdmission
This PR is Ready for independent review only. Exact-current-head required Checks and independent review must be terminal successful before ordinary merge. Pending, queued, skipped, or predecessor results are not treated as passing. No gate or advisory is suppressed.
Full traceability:
docs/doctoring/2026-09-30-dependency-security-scan-rca.md.Summary by CodeRabbit