マゼランの間違い:バッファーオーバーランまたはSQLite FTSを使用した世界一周遠征

Habréの最近のマゼランエラーとそれに関連する脆弱性をどうにかして回避しました。この省略を修正しようとします。







ちょっとした歴史





脆弱なものは何ですか?



潜在的に、SQLiteを使用する(FTSが有効になっている)またはそのアプリケーションを使用する、またはそれに基づいたすべてのデバイスとプログラム(Chromiumなど) それらが影響を受ける可能性のある範囲と、可能な「敗北」の影響は、適切な攻撃ベクトルが見つかるかどうかによって異なります。







Magellan SQLite BUGについてもう少し



このエラーは、整数の合計(整数オーバーフロー)のオーバーフローに関連しています。これは、FTSテーブルのインデックスを変更することでFTS3 / 4サブシステムで発生する可能性があります。







書き込みバッファの適切な「トリミング」によるこの整数オーバーフローの対象となる人工的なアプリケーションは、メモリオーバーフローを引き起こし、特別に作成されたSQLクエリによって将来使用できます。







その結果、理論的には、SQLite(仮想FTSテーブル)を使用する多くのアプリケーション 、特に、FTSが有効なSQLiteに基づいたSQLiteをサポートする一般的なブラウザー(たとえば、Google Chrome、Chromium、Opera、Slimjet Browser、SRWare Iron、Torch)が脆弱になります。 Comodo Dragon、CoolNovo、Yandex Browser、Vivaldiなど)。







SQLiteデータベースは一般的に非常に人気があり、12種類以上のプログラミング言語、ツールチェーン、フレームワークなどを使用して提供され、モバイルデバイスとハイグレードコンピューターの両方のアプリケーションで使用され、サーバーソリューションでもよく見られます。 したがって、たとえば、Google Chrome、Mozilla Firefox、Yandex Browserなどの人気のあるWebブラウザー、多くのインスタントメッセンジャー(WhatsApp、Viber、WeChatなど)は、この形式でデータを保存します。 など







たとえば、同じFossil SCMは、SQLiteデータベースを使用して改訂履歴を保存し、FTSを介してフルテキストインデックスを使用できるようにします(たとえば、カスタムチケットレポートなどの独自のSQLクエリを作成する可能性があるUI / Web銃口からアクセスできます)など)。







更新:DRHはFossilの共同執筆者および開発者であり、明らかに同じことを考えていたため、SQLiteを3.26.0に更新することで既に「 を塞いだ」







このような「予測可能な」オーバーフローは、それ自体は非常に楽しいものではありませんが、銀行自体に正確に保存できるものを思い出せば(雑誌の内容からテーブル自体まで)...

だから私たちは怠zyな仲間ではありません...そして更新され、更新されます。







修正プログラムはどこで入手できますか?



パッチ[940f2adc8541a838]は 、SQLite 3.25.3アップデートの一部として提供されています(Chromium and co。もアップデートされています。たとえば、バージョン71.0.3578.80のChrome)。







SQLiteバージョン3.26は、次のようなFTSコンテナの追加のセキュリティ機能も提供します。





SQLITE_DBCONFIG_DEFENSIVEオプションが有効な場合の読み取り専用シャドウテーブルのサポート


この脆弱性の危険性は何ですか?



クリティカル。 リモートでコードを実行できます。 メモリリークとプログラムクラッシュも発生する可能性があります。







この脆弱性を悪用する既製のエクスプロイトの例はありますか?



はい







特に、Tencent Bladeチームは、この脆弱性を使用してGoogle Homeの攻撃を成功させたと主張しています(Googleバグトラッカーの問題の説明へのアクセスは閉じられています)。上記のように、現時点ではエクスプロイトコードを公開する予定はありません。







脆弱性の使用条件は?



この脆弱性は、たとえば、特定のWebページがブラウザーで呼び出される場合、またはSQLステートメントの実行を許可する場合など、リモートで実行できます(FTSが無効になっていない場合、攻撃ベクトルおよび/または悪用を促進する他の要因の存在または発生時に脆弱性)。







これは、偶然にも、特にSQLiteおよび特にFTSモジュール(たとえば[56be976859294027] )でのタイプオーバーフローとバッファオーバーランの最初の間違いではありませんが、おそらく、適用の可能性と結果の評価における重要性、理論的影響、および相対的な「スケール」において、この種の最大のものですこれ。








All Articles