この記事の目次
まずは、一つの環境から調べよう。
手元のNode、起動中の処理、リポジトリの指定、本番。それぞれ確認する場所が違います。まずは自分が管理する対象を一つ選んで読み進めましょう。
実行する前に
以下は確認のためのコマンドです。更新、削除、プロセス停止は行いません。自分が管理する環境で実行してください。結果にユーザー名や内部パスが含まれる場合は、共有前に伏せます。
プロセスの全引数や環境変数は表示しません。引数にはパスワード、トークン、直接渡したコードが含まれることがあります。
psのcommand/args列や環境変数の一括出力を、そのまま通知やチャットへ貼らないでください。
同じNodeでも、見ている対象が違う
- 新しく起動するNode
このコマンドで呼んだ版と場所。
node --version / process.execPath
- すでに起動中の処理
起動元や実行ファイルを別に調べる。
ほかの処理の版を証明しない
手元のNodeを確認する
macOS / Linux:
command -v node
node --version
node -p 'JSON.stringify({version:process.version,execPath:process.execPath})'
Windows PowerShell:
Get-Command node -All | Select-Object Source
node --version
node -p 'JSON.stringify({version:process.version,execPath:process.execPath})'
例:v24.22.1 は今回の24系の修正版です。コマンドが見つからない場合は、PATH上にない可能性があります。アプリ同梱版やDocker、本番にNodeがないことの証明にはなりません。
ここで分かるのは、新しく起動したNode。
process.execPath は、このコマンドで新しく起動したNodeの場所です。ほかの起動中プロセスの版を証明するものではありません。
起動中のプロセスを確認する
macOS:
ps -axo pid=,ppid=,lstart=,comm=
Linux:
ps -eo pid=,ppid=,lstart=,comm=
全プロセスの一覧から、node、next-server、利用中のAIツール名などを手元で確認します。comm は引数を含まない実行名です。表示名が変わる場合があるため、この一覧だけでは全対象を検出できません。
Windows PowerShell:
Get-Process node -ErrorAction SilentlyContinue |
Select-Object Id, StartTime, Path
権限の違いなどでPathが読めないことがあります。空欄は「問題なし」ではありません。
起動時刻が更新より前なら、旧版が動いている可能性を調べます。時刻だけで脆弱性の有無は確定できません。対応するアプリの作業を保存し、再起動後に版と動作を確認します。一括停止は避けます。
リポジトリの指定を確認する
macOS / Linuxで、調べたいリポジトリのルートに移動して実行します。rg(ripgrep)が必要です。
rg -n --hidden -g '!node_modules/**' -g '!.git/**' -g '!dist/**' \
-g 'Dockerfile*' -g '*.yml' -g '*.yaml' -g 'package.json' \
'FROM[[:space:]]+node:|node-version:|"node"[[:space:]]*:' .
rg --files --hidden -g '!.git/**' -g '!node_modules/**' \
-g '.nvmrc' -g '.node-version'
2行目の検索で出たファイルは、エディタで版指定を読みます。rg は見つからないと終了コード1になります。出力なしは、検索対象内で見つからなかったことだけを意味します。別名の設定やマルチステージビルド、外部CI設定も確認が必要です。
本番を確認する
設定と、本番の実体を照合する
- リポジトリの指定
DockerfileやCIの設定を確認。
- 配信したもの
ビルド・デプロイした対象を確認。
- 本番で動くもの
提供元の画面や運用ログと照合。
本番の版は、そのサービスの管理画面、既存の監視、起動時に記録するランタイム情報で確認します。版確認のために公開診断エンドポイントを新設したり、秘密を含む設定をログへ出したりしないでください。
DockerfileのFROM node:24や、CIの指定だけでは、現在動いているイメージの版は分かりません。イメージの識別子と稼働リビジョンを記録し、対応付けます。
参考資料
書いた人
マーケティングの現場から、AIをつくり、仕事で使う側へ。実際に試したことや、つまずいたことを、図解と具体例で伝えています。
この記事のURL:https://nekoai-lab.github.io/ai-security-playbook/learn/commands/
続けて読む






