Aqua Securityはこのほど、「Snap Trap: The Hidden Dangers Within Ubuntu's Package Suggestion System」において、Linuxディストリビューション「Ubuntu」の標準コマンド「command-not-found」から悪意のある不正パッケージが提案され、システムを侵害される可能性があると伝えた。
コマンド「command-not-found」とは
システムの標準コマンド「command-not-found」は、存在しないコマンドをユーザーが入力した際に、そのコマンドに関連したパッケージを提案するユーティリティーソフトウェア。これはBash(Ubuntuの標準シェル)に認識できないコマンドを入力するたびにBashが呼び出す関数によって実行される。このコマンドによりアンインストールした、またはインストールしていないコマンドを使用した際にインストールすべきパッケージが提案されるため、ユーザーはパッケージを探す手間から解放される。
よくある例としては、コマンド「ifconfig」がある。古くからよく使われてきたコマンドだが「ip」コマンドに置き換えられ、Ubuntuの標準コマンドから削除されている。そのため、クセでifconfigを使用しようとして「net-tools」パッケージのインストールを提案されることがある(参考:「If you’re still using ifconfig, you’re living in the past | Ubuntu」)。
「command-not-found」の問題点
command-not-foundは通常、APT(Advanced Package Tool)およびsnapパッケージの中からインストールすべきパッケージを提案する。これら提案の元となる情報はAPTとsnapパッケージでは異なる方法がとられている。APTパッケージはcommand-not-foundに含まれるデータベースの情報を参照する。対してsnapパッケージはsnap storeから定期的に更新される独自のデータベースを参照する。
APTパッケージのデータベースを変更するには、公式APTリポジトリにパッケージを提案し、承認プロセスを経る必要がある。このため、悪意を持ってAPTパッケージのデータベースを変更することは困難とされる。snapパッケージのデータベースにも一定の制限は存在するが、APTパッケージに関連するsnapパッケージを登録することは可能とされる。APTパッケージの管理者が対応するsnapパッケージの登録を見落としている場合、攻撃者は悪意のあるsnapパッケージをアップロードすることができる。
上記の画像のように悪意のあるsnapパッケージがAPTパッケージよりも上位に表示されてしまうため、ユーザーはだまされてインストールしてしまう可能性がある。また、Aqua Securityはパッケージ名のタイプミス戦術も使用可能としている。「ifconfig」のタイポとして「ifconfigg」を入力した場合、command-not-foundは似たコマンドを持つパッケージとしてAPTパッケージのnet-toolsを提案する。しかしながら、snapパッケージに「ifconfigg」が登録された場合、APTパッケージではなく悪意のあるsnapパッケージだけが提案されることになる。
対策
Aqua Securityはこの問題の回避策として、ユーザーおよび開発者に次のような対策を推奨している。
- パッケージのインストール前にパッケージ管理者の信頼性を確認する。また、パッケージの推奨プラットフォーム(APTまたはsnap)に間違いがないことを確認する
- エイリアスを持つsnap開発者は、悪用を防ぐためにアプリケーションに対応する名前を速やかに登録する
- APTパッケージの開発者はコマンドに関連するsnap名を登録する
Aqua SecurityはAPTパッケージの26%がこの攻撃に対して脆弱だとして、開発者に対策を求めている。また、タイプミスを考慮するとその潜在的な影響範囲は広く、攻撃者はさまざまなコマンドを悪用する可能性があると指摘している。過去にsnapはマルウェアの配布に悪用されたことがあり、この攻撃を実行することは可能と推測されるため、ユーザーは十分に警戒してパッケージを利用することが望まれている。