SC Workbook
科目 A-2 · ソフトウェア開発管理技術

依存関係の混同への対策

A 社は,社内で開発した共通部品をパッケージ名 acme-logger として社内レジストリに公開し,複数のアプリケーションで利用している。ビルド環境のパッケージマネージャは,社内レジストリと公開レジストリの両方を参照し,同じ名前のパッケージがあれば版番号の大きい方を取得する設定である。ある日,ビルドで取得された acme-logger の版が 99.0.0 になっており,ビルド環境から外部への不審な通信が発生していた。社内レジストリにある acme-logger の最新版は 2.3.1 である。再発防止策として,最も適切なものはどれか。

  1. アSCA ツールで依存パッケージを既知の脆弱性情報と照合し,脆弱性が登録されている版を検出したらビルドを停止する。
  2. イ公開レジストリに,acme-logger と綴りが 1,2 文字だけ異なる名前のパッケージが登録されていないかを定期的に監視する。
  3. ウ社内レジストリへの公開操作に多要素認証を必須とし,社内レジストリにパッケージを公開できる利用者を限定する。
  4. エ社内パッケージにはスコープ(名前空間)を付けた名前を用い,そのスコープのパッケージは社内レジストリだけから取得するようにパッケージマネージャを設定する。
正解と解説を見る

正解 エ

この問題の基礎知識

  • ソフトウェアサプライチェーン攻撃は,開発で利用する部品やその配布経路を経由して,悪意のあるコードを利用者のシステムに入り込ませる攻撃である。
  • 依存関係の混同(dependency confusion)は,社内パッケージと同じ名前で大きい版番号のパッケージを公開レジストリに公開し,両方を参照するパッケージマネージャに取得させる攻撃である。タイポスクワッティングは,有名なパッケージと綴りの似た名前で入力ミスを誘う攻撃である。
  • SCA(ソフトウェア構成分析)は,利用している OSS の部品と版を把握し,既知の脆弱性情報やライセンスと照合する手法であり,脆弱性情報に登録される前の悪意のある版は検出できない。
アSCA ツールで依存パッケージを既知の脆弱性情報と照合し,脆弱性が登録されている版を検出したらビルドを停止する。

照合で検出できるのは,脆弱性情報として登録された後の版だけである。攻撃者が公開した直後の悪意のある版は登録前なので取得されてしまい,取得先が公開レジストリに切り替わるという原因も残るので,再発防止策にならない。

イ公開レジストリに,acme-logger と綴りが 1,2 文字だけ異なる名前のパッケージが登録されていないかを定期的に監視する。

綴りの似た名前で入力ミスを誘うタイポスクワッティングへの対策である。今回は社内パッケージと全く同じ名前で大きい版番号のパッケージが公開されており,この監視の対象にならない。

ウ社内レジストリへの公開操作に多要素認証を必須とし,社内レジストリにパッケージを公開できる利用者を限定する。

社内レジストリへの不正な公開を防ぐ対策である。今回の不正なパッケージは公開レジストリに公開されたものであり,社内レジストリは改ざんされていないので,再発は防げない。

エ社内パッケージにはスコープ(名前空間)を付けた名前を用い,そのスコープのパッケージは社内レジストリだけから取得するようにパッケージマネージャを設定する。正解

公開レジストリに社内パッケージと同じ名前で大きい版番号のパッケージを公開し,取得させる攻撃は依存関係の混同(dependency confusion)と呼ばれる。スコープ付きの名前とし,そのスコープの取得先を社内レジストリに限定すれば,公開レジストリから取得されなくなる。

検証用の出典出典照合済み
OWASP NPM Security Cheat Sheet(12) Prevent dependency confusion attacks) / npm Docs: scope(Associating a scope with a registry)
照合の根拠(5 件)
問題 ID A2-SDM-0508 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。