npmレジストリのセーフワードはSocketです

Table of Contents

npmレジストリのセーフワードはSocketです

Exclusive Socket は、GitHub の安全性が不十分な JavaScript パッケージ マネージャーである npm をセキュリティ ブランケットで包むことで、開発者を保護する方法を見つけました。

npmレジストリは、2020年にセキュリティ事業がMicrosoftのGitHubに買収されるまでNPMによって運営されており、JavaScriptエコシステム向けのソフトウェアパッケージをホストしています。npmレジストリは、自ら「世界最大のソフトウェアレジストリ」と称しています。

ここ数年、悪意のある攻撃者は、いわゆるサプライチェーン攻撃において、npmのようなパッケージレジストリへの侵入にますます重点を置いています。人気のあるソフトウェアライブラリを改ざんすることで、ウイルスによる拡散が広範囲に及ぶ可能性があります。

npmレジストリを運営する人々は、長年にわたり、npm auditnpmコマンドラインインターフェース(CLI)の脆弱性スキャンコマンドなど、様々な防御策を導入してきました。しかし、このツールの実装には改善の余地があり、特に自動解決が機能しない場合、開発者は監査警告メッセージを無視してしまうことがよくあります。

Socketは独自の脆弱性スキャンシステムを開発し、昨年オープンソースプロジェクト向けに無料(チームおよび組織向けの有料プランあり)で提供を開始しました。このスキャナーは、コードリポジトリの変更時にGitHubアプリとして実行されます。npm auditよりも多くの問題を検出し、サプライチェーンリスクだけでなく、品質、メンテナンス、脆弱性、ライセンスに関する懸念事項も網羅しています。

変化を告げる

しかし、Socketのスキャナは現在、開発者が自身のマシンにインストールできるCLIとしても利用可能になっています。木曜日、SocketはCLIを更新し、開発者がまたはsafe npmを呼び出す際に、他のパッケージを削除すると同時にインストールしてしまう可能性のあるコマンドを追加しました。npm installnpm uninstall

「npmは特定のパッケージに対して『理想的なツリー』と呼ばれるものを作成しますpackage.json」と、Feross Aboukhadijeh氏はThe Registerに語った。「そのため、パッケージを削除すると、実際には理想的なツリーが変わってしまう可能性があります。パッケージを削除すると、パッケージを古いバージョンに維持するという制約が解除される可能性があり、npmはそれらのパッケージをより理想的な、あるいはより新しいバージョンに更新する可能性があります。」

この懸念の原因は、npm経由で配布されるJavaScriptパッケージが侵害される可能性があることです。Aboukhadijeh氏によると、Socketでは過去30日間だけで200以上のパッケージが削除されています。

  • このJavaScriptスキャナは図書館内のマルウェアを駆除します
  • Googleがオープンソースのセキュリティホールを見つけるGoツール「OSV-Scanner」を発表
  • Microsoft Azure開発者が200以上のデータ窃盗npmパッケージの標的に
  • オープンソースソフトウェアには利点があるが、サプライチェーンのリスクは無視できない

Aboukhadijeh氏によると、npmパッケージには平均79個の推移的な依存関係があり、1つのパッケージをインストールすると数十個の追加パッケージも一緒にインストールされる可能性があるとのことです。そして、それらすべてを手動で検証するのは、ほとんどの人にとって能力、時間、あるいは意欲に欠ける作業です。

を使用するとnpm audit既知の脆弱性が表面化する可能性がありますが、コマンドの追加により、Socket CLI はより詳細な情報を取得できるようになりました。このコマンドは、実行可能プログラムが見つかる場所を指定する環境変数に socket コマンドを追加するsafe npmことで設定できます。npm install -g @socketsecurity/cliPATH

socket npm installその後、開発者はの代わりにと入力することでツールを起動できますnpm install。コマンドにエイリアスを設定すると、さらに便利になります。組織では、使い慣れた呼び出しが Socket CLI に透過的に渡されるように、をプロファイル(または、あるいは使用しているシェル)alias npm="socket npm"に追加することを推奨しています。.bashrc.zshrcnpm install

ソケットの安全性を利用したnpmコマンドラインインタラクションのデモ

「ソケットのsafe npmツールはnpmコマンドを透過的にラップし、マルウェア、タイポスクワット、インストールスクリプト、テレメトリ、プロテストウェアなど、合計11の問題から開発者を保護します」と同社は述べている。

npxこのアプローチは、ダウンロードしたコードを直ちに実行するや などの、より危険なコマンドからも保護しますnpm exec

「これらのコマンドは頻繁に使用されるため、これらのコマンドにも保護を追加しました。これにより、npxREADME ファイルや StackOverflow の回答からコマンドをコピーして貼り付けることで、誤って不正なコードを実行し、セキュリティ侵害を受けることがなくなります」と同社は約束しました。®

Discover More