セキュリティカンファレンス「Def Con 2019」で研究者らは、通常のデータベース検索を悪用して悪意のある結果を生成する手法を実演し、それを証明するためにAppleの標準iOS連絡先アプリを使用した。
セキュリティ企業Check Pointは、業界標準のSQLiteデータベース形式に存在する脆弱性を実証しました。同社はDef Con 2019で、AppleのiOS連絡先アプリを操作するために使用されている手法を披露しました。このような状況下で連絡先アプリを検索すると、デバイス上で悪意のあるコードが実行される可能性があります。
「SQLiteは世界で最も広く普及しているデータベースエンジンです」と同社は声明で述べています。「あらゆるオペレーティングシステム、デスクトップ、モバイルフォンで利用可能です。Windows 10、macOS、iOS、Chrome、Safari、Firefox、AndroidはSQLiteの人気ユーザーです。」
「つまり、SQLite で制御されているデータベースにクエリを実行するすべてのユーザーを制御できるのです」と彼らは続けた。
連絡先を検索したり、アプリで情報を調べたりするとき、実際にはデータベースを検索しており、通常は SQLite が使用されます。
AppleInsiderが確認した4,000語のレポートに記載されているように、同社のハッキングにはAppleの連絡先アプリの一部を置き換えることが含まれており、発見されてから4年経っても修正されていない既知のバグにも依存していた。
「ちょっと待って、何だって? 4年前のバグが未だに修正されていないなんて」と研究者たちは文書に記している。「この機能は、信頼できないソースからの任意のSQLを許可するプログラムにおいてのみ脆弱性があるとみなされ、それに応じた対策が講じられてきた。しかし、SQLiteの使用法は非常に汎用的であるため、実際には今でも多くのシナリオでこの問題を引き起こす可能性がある。」
つまり、このバグは、未知のアプリケーションがデータベースにアクセスすることによってのみ引き起こされると考えられていたため、重要ではないと考えられてきました。iOSのようなクローズドシステムでは、未知のアプリは存在しません。しかし、Check Pointの研究者たちは、信頼できるアプリからこのバグをトリガーするコードを送信させ、悪用することに成功しました。
彼らは連絡先アプリの特定のコンポーネントを置き換え、アプリと実行可能コードは Apple の起動チェックを通過する必要があるものの、SQLite データベースは実行可能ではないことを発見しました。
「iOSでは、再起動後もデバイス上にコードを保持する永続性を実現するのは困難です」と彼らは述べた。「すべての実行ファイルはAppleのセキュアブートの一部として署名されている必要があるためです。幸いなことに、SQLiteデータベースは署名されていません。」
チェックポイントチームのハッキング文書の詳細
連絡先の一部を置き換えるこの代替アプリをインストールするには、ロック解除されたデバイスにアクセスする必要がありました。その後、連絡先データベースの検索時に何が起こるかを選択できるようになりました。
デモの目的のため、彼らはアプリをクラッシュさせただけでした。研究者たちは、パスワードを盗むためにアプリを細工することもできたと述べています。
「データベースにクエリを実行するだけでは、期待するほど安全ではない可能性があることが判明しました」と彼らは述べた。「SQLiteのメモリ破損問題が確実に悪用される可能性があることを証明しました。」
「我々の研究と方法論はすべて責任を持ってAppleに開示されている」と彼らは結論付けた。
SQLite データベースの問題によってバグが発生したり、何年も修正されないまま放置されたりするのは今回が初めてではありません。