Signal K Serverは、船舶の中央ハブで動作するサーバーアプリケーションです。2.19.0以前のアプリストアインターフェースでは、管理者がREST APIエンドポイント経由でnpmパッケージをインストールできます。このエンドポイントはパッケージ名がnpmレジストリで既知のプラグインまたはウェブアプリであることを検証しますが、バージョンパラメータにはURLを含む任意のnpmバージョン指定子を指定できてしまいます。そのため、npmはGitリポジトリやGitHubの省略記法、tarballファイルへのHTTP/HTTPS URLからもパッケージをインストール可能です。また、npmがパッケージをインストールする際には、`package.json`に定義された`postinstall`スクリプトが自動で実行され、任意のコードが実行されるおそれがあります。この脆弱性の原因は、npmのバージョン指定子構文が非常に柔軟であることと、Signal Kのコードがバージョンパラメータを無加工でnpmに渡していることです。管理者権限を持つ攻撃者は、攻撃者が管理するソースから悪意ある`postinstall`スクリプトを含むパッケージをインストールすることができます。バージョン2.19.0でこの問題へのパッチが提供されています。
|