過去数年間、Node Package Manager (npm) を通じて利用できる JavaScript ソフトウェア パッケージのセキュリティは、失敗、騒動、不十分な対策の結果として、懐疑の対象となってきました。
しかし、IEEEに所属する数人のコンピューター科学者は、npm パッケージは実際には示唆されているほど危険ではないと述べている。
ArXiv で配布された「Node.js アプリケーションにおける npm の脆弱な依存関係の脅威について」と題された論文の中で、Mahmoud Alfadel、Diego Elias Costa、Mouafak Mokhallalati、Emad Shihab、Bram Adams といった科学者たちは、npm ライブラリを Node.js アプリケーションに統合することの危険性は誇張されていると主張しています。
npmレジストリは、開発者がNode.jsベースのアプリに特定の機能を実装するために追加するソフトウェアライブラリやパッケージを保存します。これにより、開発者はテキストブロックからURLを取得するルーチンを追加するなど、毎回車輪の再発明をする必要がなくなります。他の開発者が作成してnpmレジストリにアップロードしたURL取得コードを、npmコマンドラインインターフェース経由でインストールするだけで済みます。
レジストリには約140万のパッケージがホストされています。監査を受けていないサードパーティのコードに依存することによるセキュリティリスクが警鐘を鳴らすほどではないとしても、これらのパッケージの多くが他のnpmパッケージに依存していることを念頭に置いてください。そのため、これらのライブラリのいずれかにコーディングエラーや悪意のあるコミットがあると、依存ライブラリや、脆弱なパッケージを必要とするすべてのアプリに影響を及ぼす可能性があります。
事態が悪化した例としては、2018 年に npm のモジュールを改ざんして暗号通貨を盗もうとした事件や、昨年event-stream
発生した同様の状況、そして2016 年の事件などが挙げられます。electron-native-notify
left-pad debacle
広く使用されているJavaScriptパッケージをハイジャックしたい場合は、主要なNode.jsドメインのDMARC型の穴を通じて開発者をフィッシングしてみてください。
続きを読む
npm エコシステムを管理する NPM, Inc. が直面しているセキュリティ上の課題は、少なくとも今年初めに Microsoft の GitHub に買収されるまでは、その人気に対応できない資金によってさらに複雑化していました。
Node.js のセキュリティ面およびその他の問題は、Node.js の作成者である Ryan Dahl 氏に、より優れたセキュリティ モデルの提供など、さまざまな改善点を提供する Deno と呼ばれる後継ランタイムの開発を促すに至りました。
しかし、IEEEの専門家たちは、現在使用されている6,673個のNode.jsアプリを分析した結果、セキュリティ状況はセキュリティベンダーが主張するほど悪くないことを発見しました。npmパッケージには多くの脆弱性が存在しますが、そのほとんどはそれほど深刻ではありません。
「調査したアプリケーションの67.93%が少なくとも1つの脆弱なパッケージに依存しているものの、影響を受けるアプリケーション内の脆弱なパッケージの94.91%は脅威度が低いと分類されていることが、調査結果から明らかになった」と研究者らは論文で述べている。
さらに、脅威依存度が高い少数のアプリ(3.03%)のうち、大多数(90.8%)には、適用されていない修正プログラムが存在していました。
専門家たちは、この場合の責任はパッケージ管理者ではなく、アプリの依存関係を最新の最も安全なバージョンに更新しなかったアプリ開発者にあると主張している。
「私たちの研究の主な意味は、アプリケーション開発者は依存関係からプッシュされた更新を真剣に受け止めるか、少なくとも依存関係を積極的に追跡する必要があるということだ。なぜなら、それらは非常に深刻な影響につながる可能性があるからだ」と論文は結論づけている。®