セキュリティ
信頼していたライブラリが乗っ取られる
2026年8月17日

レン
有名なライブラリなら安心して入れていいよね?

ウィルスン
その「安心」こそが狙い目だ。ワタシがひとつひとつのサーバーを攻めるより、多くの人が使うライブラリに手を入れるほうが効率が良い。更新した全員が、自らワタシのコードを取り込んでくれるのだからな。

レン
そんなことが実際にあるの!?

プロクラ
あるんだ。手口はいくつかある。作者のアカウントを乗っ取る、管理を引き継ぐと申し出て権限を得る、名前がよく似た偽物を公開して打ち間違いを狙う、といったものだね。これらをまとめてサプライチェーン攻撃と呼ぶよ。
個人でもできる備え
- 入れる前に名前をよく確認する(1文字違いの偽物がある)
- 更新頻度・利用者数・issueの様子を見る。極端に新しい、または放置されているものは慎重に
- ロックファイルをコミットして、意図しないバージョンが入らないようにする
- 自動で最新版に上げる設定は便利だが、更新内容を見ないまま本番へ入れない
- 「これ1つのために依存を増やす価値があるか」を毎回考える

レン
全部の中身を読むなんて無理だよ…

プロクラ
無理だよ、それでいい。完全に防ぐのは現実的じゃないんだ。だから発想を変えて「入られた後に被害を小さくする」ほうも用意しておこう。アプリの実行権限を絞る、外部への通信を必要な先だけに限る、鍵をサーバー上に平文で置かない。こうしておけば、仮に混入しても持ち出せるものが減るからね。
プロクラ
そして一番効くのは、依存を増やしすぎないこと。数行で書ける処理のためにライブラリを入れるのは、割に合わないことが多いよ。
取り込むタイミングを自分で決める

プロクラ
更新は当てたほうがいい。でも、公開された瞬間に自動で取り込む必要はないんだ。少し待つだけで、問題のある版を踏む確率は下がるよ。
- バージョンを固定して記録する(同じものが再現できる状態にする)
- 更新するときは、何が変わったかを確認する
- 自動で最新版を取り込む設定にしない
- ただしセキュリティ修正は例外。これは早く当てる
入られた後を小さくする
- アプリを動かすユーザーの権限を絞る。rootで動かさない
- 外部への通信先を、必要な範囲に限る
- 認証情報は、そのアプリが本当に必要な分だけ渡す
- ビルドの環境と本番の環境を分ける

プロクラ
そして一番効くのは、依存を増やしすぎないこと。数行で書ける処理のためにライブラリを入れるのは、割に合わないことが多いよ。使わなくなったものを消すのも、立派な対策だ。

レン
全部は読めない。だから権限を絞って、増やしすぎない。
気づける状態にしておく
- 自動で脆弱性を知らせる仕組みを有効にする
- 使っているライブラリの一覧を、いつでも出せるようにしておく
- 外部への通信先が増えていないか、時々確認する
- アプリが動くユーザーの権限を絞っておく

プロクラ
完全に防ぐことはできない。だから、気づける状態と、被害が小さい状態の両方を用意しておくんだ。
あわせて読みたい
- セキュリティログイン機能の落とし穴:セッション管理ログイン状態を保つ仕組みと、なりすましを許す典型的な実装ミス。Cookieに付ける属性の意味、ログアウトで何をすべきか、そして認証を自作しないほうがいい理由を解説します。
- セキュリティファイルアップロード機能は危険な機能「画像だけ受け付ける」判定がなぜ難しいのか、中身を検査しても残る危険、容量と回数の上限、そして受け取ったファイルをどこに置くかまで解説します。
- セキュリティSQLインジェクション:入力欄からデータベースを操られる利用者の入力をそのままデータベースへ渡すと何が起きるのか、パラメータ化クエリが効く理由、効かない場面、そして万一に備えて被害を小さくする設定を解説します。
- セキュリティXSS:投稿された内容が他の人のブラウザで動く被害を受けるのがサーバーではなく訪問者である理由、表示するときに無害化するという原則、投稿でHTMLを許可したい場合の扱い、そして盗まれるものを減らす備えを解説します。