Skip to main content
QUICK REVIEW

[論文レビュー] SpellBound: Defending Against Package Typosquatting

Matthew Taylor, Ruturaj K. Vaidya|arXiv (Cornell University)|Mar 6, 2020
Advanced Malware Detection Techniques参考文献 26被引用数 9
ひとこと要約

SpellBoundは、語彙的類似性とパッケージの人気度を分析することで、npmとPyPIにおけるパッケージのタイポスコーティングを検出・警告する軽量で効率的なツールを提案する。インストールの0.5%に満たない偽陽性を実現し、パフォーマンスへの影響は2.5%にとどまり、既知の高リスクのタイポスコーティング事例および1件の未知の高リスク事例を特定し、パッケージの削除に成功した。

ABSTRACT

Package managers for software repositories based on a single programming language are very common. Examples include npm (JavaScript), and PyPI (Python). These tools encourage code reuse, making it trivial for developers to import external packages. Unfortunately, repositories' size and the ease with which packages can be published facilitates the practice of typosquatting: the uploading of a package with name similar to that of a highly popular package, typically with the aim of capturing some of the popular package's installs. Typosquatting has serious negative implications, resulting in developers importing malicious packages, or -- as we show -- code clones which do not incorporate recent security updates. In order to tackle this problem, we present SpellBound, a tool for identifying and reporting potentially erroneous imports to developers. SpellBound implements a novel typosquatting detection technique, based on an in-depth analysis of npm and PyPI. Our technique leverages a model of lexical similarity between names, and further incorporates the notion of package popularity. This approach flags cases where unknown/scarcely used packages would be installed in place of popular ones with similar names, before installation occurs. We evaluated SpellBound on both npm and PyPI, with encouraging results: SpellBound flags typosquatting cases while generating limited warnings (0.5% of total package installs), and low overhead (only 2.5% of package install time). Furthermore, SpellBound allowed us to confirm known cases of typosquatting and discover one high-profile, unknown case of typosquatting that resulted in a package takedown by the npm security team.

研究の動機と目的

  • npmやPyPIのようなソフトウェアパッケージリポジトリにおけるタイポスコーティングの増加する脅威に対処し、攻撃者が名前の類似性を悪用して開発者をだまし、悪意あるまたは古くなったパッケージをインストールさせることを防ぐ。
  • 開発者がパッケージ名の単純なタイポによって、悪意あるまたは不安全なパッケージを誤ってインストールするリスクを低減する。
  • インストールワークフローに統合可能な実用的で低コストのソリューションを提供し、インストール前に名前の混乱を示す警告を発する。
  • 悪意あるだけでなく、更新が行われていないためにセキュリティに危険を及える可能性があるが、悪意のコードを実行しない類似パッケージ(クラーニング)も検出する。

提案手法

  • ツールは、文字の入れ替え、省略、置換といった一般的なタイポによって誤解を招きやすいパッケージ名を特定する語彙的類似性モデルを用いる。
  • 低利用パッケージが人気の高いパッケージの代わりにインストールされる場合に警告を優先するため、パッケージの人気度指標を組み込む。
  • 依存関係ツリーを分析し、要求されたパッケージ名を高人気パッケージのリストと照合することで、タイポスコーティングの兆候を検出する。
  • npmとPyPIのメタデータを活用して、名前類似度が高く使用頻度が低いパッケージをタイポスコーティングの候補としてマークする検出モデルを構築する。
  • 検出ロジックをパッケージインストールプロセスに統合し、パフォーマンスへの影響を最小限に抑えながらインストール時に警告を発生させる。
  • 実世界のnpmおよびPyPIデータを用いて評価を行い、パッケージメンテナーやnpmセキュリティチームとの手動確認および協力も実施した。

実験結果

リサーチクエスチョン

  • RQ1軽量でリアルタイムの検出システムは、npmやPyPIのような人気パッケージリポジトリにおけるタイポスコーティングパッケージを効果的に同定できるか?
  • RQ2語彙的類似性とパッケージの人気度をどのように組み合わせれば、タイポスコーティング検出における偽陽性を低減できるか?
  • RQ3このような検出システムを標準的なパッケージインストールワークフローに統合した際のパフォーマンスオーバーヘッドはどの程度か?
  • RQ4このツールは、悪意あるだけでなく、更新が行われていないがセキュリティリスクを伴うパッケージ(人気パッケージのクローン)も検出できるか?
  • RQ5このようなシステムは、実際のタイポスコーティング被害が発生する前に、どの程度の影響で防止できるか?

主な発見

  • SpellBoundは、全インストールの0.5%に満たない偽警告にまで低減し、実際のタイポスコーティングリスクの高精度な同定を示した。
  • ツールは平均して2.5%のパフォーマンスオーバーヘッドしか引き起こさず、既存のパッケージワークフローへの統合に実用的であることが示された。
  • 既知のタイポスコーティング事例(例:loadsh)を正常に特定した。loadshはlodashとほぼ同一で、1文字のタイポがあるが、悪意あるパッケージであった。
  • 手動での連絡を通じて、loadshに依存する3人のメンテナが、意図的にlodashを使用していたことを確認した。これにより、ツールの検出精度が裏付けられた。
  • 未知の高リスクタイポスコーティング事例を発見し、npmセキュリティチームによる削除に繋げた。これは実世界への影響を示す。
  • このアプローチは、悪意あるだけでなく、セキュリティ更新が行われていないために危険なパッケージ(人気パッケージのクローン)も効果的に同定できる。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。