脆弱性の発見者:Cory Duplantis(Cisco Talos)
概要
LibOFX は、OFX(オープン ファイナンシャル エクスチェンジ)のオープンソース実装ライブラリです。OFX とは、金融機関がクライアントと金融データを共有する際に使用するオープン フォーマットです。OFX は非常に複雑な規格で、これを実装した LibOFX は GnuCash などの金融ソフトウェアで広く使用されます。Talos では、LibOFX にバッファ オーバーフローの脆弱性を発見しました。細工された OFX ファイルによってメモリ境界外(out of bounds)の書き込みが引き起こされ、リモートでコードが実行される危険性があります。現時点で脆弱性に対するセキュリティ更新プログラムは未提供です。Talos はベンダーに脆弱性を通知しましたが、「脆弱性の報告・開示ポリシー」で定めた期間内に開発元からの回答を得られませんでした。
TALOS-2017-0317(CVE-2017-2816):不適切な LibOFX タグ解析コードにより、リモートでコードが実行される脆弱性
皮肉なことに、今回の脆弱性はサニタイズ関数でタグを解析する方法に起因しています。関数内ではタグ名がローカル(スタック内)で格納されますが、タグ名が長すぎるとスタックのオーバーフローが発生します。
脆弱性の詳細については、脆弱性レポート(TALOS-2017-0317)を参照してください。
テストされたバージョン:LibOFX 0.9.11
詳細
LibOFX はオープンソース ライブラリとして、金融ソフトウェアで広く使用されています。今回発見された脆弱性には、攻撃者にとって非常に魅力的な特徴が多くあります。まず、脆弱性のエクスプロイトには、必ずしもユーザによる操作が必要ではありません。また、この脆弱性が存在するシステムには貴重な財務情報が含まれている可能性が高く、個人情報の盗用、詐欺、他の犯罪者への転売など、狙う理由も十分にあります。
サードパーティ製ソフトウェアや自社製システムに LibOFX が組み込まれている場合は、OFX ファイルの解析用途でそれが使用されていても気付かない可能性があります。今回のような脆弱性からシステムを保護するには、社内プロジェクトで使用されたオープンソース ライブラリを把握し、サードパーティ ベンダーから提供されたセキュリティ更新プログラムを迅速に適用することが不可欠です。
カバレッジ
この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、FireSIGHT Management Center または Snort.org を参照してください。
Snort ルール:42277-4227
本稿は 2017年9月13日に Talos Group のブログに投稿された「Vulnerability Spotlight: LibOFX Tag Parsing Code Execution Vulnerability」の抄訳です。