Repository navigation
fix(security): Node実行環境と依存を更新しcritical/highを解消 - #68
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的
Node.jsのeMudhra対応を含む2026-10-21のセキュリティ版へCI・開発・controller実行環境を揃え、npm依存の全advisoryを解消します。
Base:
5bd511ed3d74c339e4c81379a91a9b037517dc14変更
.node-version、devcontainer、controller imageをNode 22.23.4へ固定。CIは22.23.4/24.22.1。enginesは^22.23.4 || ^24.22.1 || ^26.12.1。npm ci --omit=dev --ignore-scriptsで再現。.dockerignoreでホストのnode_modules混入を防止。.node-versionの公式配布物をSHA-256照合して導入。npm audit fix --forceは不使用。監査
2026-10-21のnpm audit。依存ノード数であり独立advisory数ではありません。
初回PRで残った2 advisoryも、無視設定を使わず追補で解消しました。
uuid(CVE-2026-41907 / GHSA-w5hq-g745-h8pq): dockerode@4.0.6 → uuid@10、googleapis@128 → googleapis-common@7 / gaxios@6.7.1 → uuid@9をTrivyも検出。修正版は11.1.1 / 12.0.1 / 13.0.1。親の同major更新では解消しないため、dockerode@^4.0.2/googleapis-common@7/gaxios@6の直下だけUUID 11.1.1に固定しました。実コードはCommonJSで引数なしv4()のみ。実Dockerode session生成、Google Drive SDKとGaxiosのmultipart生成を通信なしで検証しています。sprintf-js(GHSA-hp3w-g68c-fv3c): 旧経路はJest → transform → babel-plugin-istanbul → load-nyc-config → js-yaml@3 → argparse@1。sprintf-js自体には修正版がないため、@istanbuljs/load-nyc-config@1直下のjs-yamlだけ4.3.2へ固定し、argparse 2を使う経路へ移しました。実loadNycConfig()でYAMLのextends/配列/booleanを確認し、coverageも通過しています。両lockからsprintf-jsは消えました。上流が修正版依存を採用した時点で、該当overrideを個別に外して同じ契約テストと監査を再実行します。
WizのKeyv関連IoC(blob
9f165191323ff74a6d06ed6115363f0cdc912d2e)と両lockのbefore/afterをpackage名+versionで照合、一致0。過去インストール・グローバルCLI・既存imageの侵害調査ではありません。検証
Node 22.23.4 / npm 10.9.9。
npm ci --ignore-scripts: 成功NODE_PATHを空にして各親がrepo内の修正版を解決することも確認bash -n、git diff --check: 成功最初のsandbox実行ではlocalhost listenがEPERMとなり、許可済みローカルfixture環境で再検証しました。Docker実行環境がないためローカルbuildは未実施ですが、初回PR CIのcontroller image build、Node 22/24 matrix、integration、Windows PoCは成功しています。依存override追補後のCIも下記の通り成功しました。Windows実機、Google Drive実アカウント、OBS、配信先には接続していません。
適用条件
このPRではmerge/deploy/常駐プロセス再起動/配信操作は行いません。現行の本番deploy定義は
.github/workflows/deploy.yml.disableで無効化されています。main pushだけでは本番配備されないため、運用手順で別途配備してください。既存containerは新base/lockから再buildし、既存host/開発containerも更新して、再起動後の実効Node versionを確認する必要があります。詳しい根拠・残件・手順:
docs/security/node-security-2026-10.md。公式: Node 22.23.4、SPKI blocklist、証明書ストア更新。
最新HEADのPR CI
d8cac889d9f06a644300fc8f0033c7803dd7966bの全13 checksが成功(2026-10-21)。node:22.23.4-alpineと独立lockのnpm ci --omit=dev --ignore-scriptsによるbuild成功。マージ後の確認と配備についての訂正
main
a719a606ea7ee95b0804f146da5c4565c3b30391に統合済み。4 workflows・10 checksが成功し、Node 22.23.4/24.22.1、115 Controller tests、audit 0件、公式Nodeイメージのbuild成功を確認しました。以前記載した『main pushで本番deployが起動する』という説明を訂正します。現行のdeploy定義は
deploy.yml.disableで無効、controllerのDocker jobもpush: falseです。今回は本番deployは起動していません。報告文書も同じ内容に訂正します。