Signal K Serverは、船の中央ハブで動作するサーバーアプリケーションです。バージョン2.19.0より前のアクセスリクエストシステムには、情報漏洩の脆弱性と連動し、管理者に対して説得力あるソーシャルエンジニアリング攻撃を可能にする2つの関連機能が存在します。デバイスがアクセスリクエストを作成する際、`clientId`、`description`、`permissions`の3つのフィールドを指定します。Signal K管理者用UIでは、保留中リクエストを表示する際に`description`フィールドが管理者に目立つように表示されますが、実際に付与されるアクセスレベルを決定する`permissions`フィールドは目立たず、場合によっては別画面で表示されます。このため、攻撃者は説明文で「読み取り専用アクセス」を装いながら、実際には`admin`権限をリクエストできます。アクセスリクエストハンドラーは`X-Forwarded-For` HTTPヘッダーを無条件に信頼してクライアントのIPアドレスとして扱っています。このヘッダーは本来リバースプロキシ経由でリクエストされた際に元のクライアントIPを保持する目的ですが、無条件に信頼することで攻撃者によるIPアドレスの偽装を許してしまいます。偽装したIPアドレスは管理者のアクセスリクエスト承認画面に表示されるため、悪意あるリクエストが信頼できる内部ネットワークからのもののように見せかけることが可能です。デバイスやソース名は情報漏洩の脆弱性により列挙が可能となっています。そのため、攻撃者は正規デバイスやソースになりすまし、説得力のある説明文を作成し、信頼された内部IPアドレスを偽装し、高権限のリクエストを送信できます。こうした手法により、非常に巧妙なソーシャルエンジニアリング攻撃シナリオを作り上げ、管理者による承認の可能性を高めてしまいます。ユーザーにはこの問題を修正するバージョン2.19.0へのアップグレードを推奨します。
|