広く普及している「SQLite」データベースエンジンにセキュリティ上の脆弱性が発見された。この脆弱性により、膨大な数のデスクトップアプリやモバイルアプリがリスクにさらされているという。

TencentのBladeセキュリティチームによって発見されたこの脆弱性が悪用された場合、被害者のコンピュータ上において悪意のあるコードの実行が可能になるとともに、それほど深刻ではないケースでもプログラムメモリのリークやプログラムのクラッシュが引き起こされる可能性がある。





SQLiteは膨大な数のアプリに組み込まれているため、この脆弱性はIoTデバイスからデスクトップソフトウェア、ウェブブラウザ、「Android」アプリ、「iOS」アプリに至るまでの広範なソフトウェアに影響を及ぼす。

Bladeチームの研究者らによると、ブラウザがSQLiteと、「Web SQL」データベースのAPIをサポートしている場合、ウェブページへのアクセスという簡単な手段で（ウェブページ上の脆弱性を突くコードが同APIを通じて通常のSQLシンタックスに変換されるため）この脆弱性を遠隔地から悪用することもできるという。

FirefoxとEdgeはこのAPIをサポートしていないが、オープンソースのブラウザエンジンChromiumはサポートしている。つまり、「Google Chrome」「Vivaldi」「Opera」「Brave」などのChromiumベースのブラウザはすべて影響を受ける。Chromeのタブをクラッシュさせるデモが公開されている。

ブラウザ以外のアプリも影響を受け、Google Homeも対象となっている。 Tencent Bladeのチームはセキュリティアドバイザリで、「この脆弱性でGoogle Homeを悪用することに成功した」と述べた。

Tencent Bladeの研究者は今秋、この問題をSQLite開発チームに報告したという。修正は12月1日に「SQLite 3.26.0」のリリースで公開された。この修正はChromiumにも移植されており、12月に入ってリリースされた「Google Chrome 71」にも修正が含まれている。

ChromiumベースのブラウザでもVivaldiやBraveは、最新版のChromiumが動くようになっている。Operaは現在も1つ古いChromiumを利用しており、最新版でも脆弱性の影響を受けている。

「Firefox」はWeb SQLをサポートしていないものの、ローカル環境からアクセス可能なSQLiteデータベースを搭載しているため影響を受ける。つまり、ローカル環境からこの脆弱性を悪用することで、コードの実行などが可能になる。

Check Pointの研究者であるEyal Itkin氏も、この脆弱性を悪用するには「データベースを破損させて脆弱性を突くうえで、任意のSQLコマンドを発行できる必要がある」ため、影響を受けるアプリケーションの数はそれほど多くはないと指摘している。

しかし、SQLiteの開発チームがフィックスをリリースしたとしても、多くのアプリケーションは何年も脆弱性を抱えたままになる可能性が高い。どのようなデスクトップアプリやモバイルアプリ、ウェブアプリであっても、組み込まれているデータベースエンジンをアップデートするというのはリスクの高い作業であり、場合によってはデータの破損を引き起こす。このため、ほとんどのプログラマーはそういった作業をできる限り先延ばしにしようとするはずだ。

アプリ開発者は、自らのアプリで使用しているライブラリやコンポーネントをまれにしかアップデートせず、放置しておくことが多いため、今回の脆弱性が何年にもわたってアプリのエコシステムに影響を与える可能性は極めて高いと言えるだろう。

このため、Bladeチームは当面の間、実証コードの公開を控えると述べている。とはいうものの、既に他のセキュリティ研究者らがSQLiteに対するパッチのリバースエンジニアリングに着手しており、脆弱性がどのようなかたちで悪用可能なのかを見極めようとしている。

Was looking at the SQLite 3.25 branch looking for the Magellan SQLite bug: https://t.co/6GtdJPiSUZ could this be it? https://t.co/qdEOdMbKvC No linked bug in tracker, likely reachable via Chrome's WebSQL. — Zhuowei Zhang (@zhuowei) 2018年12月14日

SQLiteのこの脆弱性には、まだ共通脆弱性識別番号（CVE識別番号）が割り当てられていないため、Bladeチームの研究者らは現在のところ「Magellan」というコード名を使用している。