コース目次 / 第3章
typosquatting — 名前のなりすまし
有名パッケージに似た名前で油断を誘うtyposquattingの手口を理解します。インストール前に公式ページで名前・ダウンロード数・リポジトリを確かめる、防御の習慣を身につけます。悪用コードは扱いません。
sec-tooling で「公式導線から入れる」を学びました。npm パッケージにも、同じ注意が要ります。ここで扱う穴は、typosquatting(タイポスクワッティング)——よく使われるパッケージ名に、わずかに似せた名前で、間違ってインストールさせる手口です。
手口の形
攻撃者は、人気パッケージの名前を少しだけ変えた名前で、悪意あるパッケージを公開します。たとえば(実在するかどうかに関わらず、パターンとして):
・文字の入れ替え(cross-env → corss-env)
・文字の欠落(electron → electorn)
・似た見た目の文字(l と 1、rn と m)
・スコープの誤認(@babel/xxx に似せた無関係のスコープ)
インストールコマンドを急いで打つとき、1文字のタイプミスだけで、まったく別の、悪意あるパッケージを入れてしまう危険があります。
このコースでは、実在する悪意あるパッケージ名を具体的には挙げません。手口のパターンを理解し、防御の習慣を身につけることが目的です。特定のパッケージ名を晒すことは、かえってそれを探す人を増やしかねません。
インストール前に、確かめる
新しいパッケージを入れる前の、確認の型です。
1. npm の公式ページで、名前を確かめる。https://www.npmjs.com/package/<名前> を開き、綴りが正しいか、目で見て確認する。
2. ダウンロード数を見る。週間ダウンロード数が桁違いに少ない、あるいは公開されたばかりなのに有名パッケージのふりをしている——は危険信号。
3. リポジトリのリンクを確かめる。公式ページに「Repository」として貼られているリンクが、実在する・信頼できる組織のものか。誰も管理していないような空のリポジトリは危険信号。
4. メンテナと更新履歴を見る。有名パッケージのふりをして、実際の作者と違う人物が最近作ったばかりのパッケージでないか。
「速さ」より「確かめる一手間」
npm install は、コマンド一発で気軽に打てます。だからこそ、急いでいるときほど、タイプミスに気づきにくい。sec-tooling で見た「出どころを選ぶ」の精神を、ここでも思い出してください——知らないパッケージ名を打つときは、一呼吸置いて、公式ページで確かめる。とくに、package.json に新しい依存を足す・チーム外から共有されたコマンドをコピペする、といった場面で、この一手間が効きます。
package-lock.json も、ここで効いてくる
前章の integrity ハッシュは、typosquatting そのものは防げません(名前を間違えて指定すれば、その通り違うパッケージが lockfile に記録されてしまいます)。でも、一度確認して正しくインストールされた依存が、その後こっそり中身を差し替えられる——という別の脅威に対しては、しっかり効きます。それぞれの防御が、それぞれ別の脅威に効く——これも多層防御の一形です。
持ち帰る一言
パッケージ名も、なりすまされる。 綴り・ダウンロード数・リポジトリ・メンテナを、インストール前に一呼吸置いて確かめる。急ぐときほど、この一手間を省かない。次はまとめて、SCAの視点を畳みます。
こうなっていればOK
卒業まであと1章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。