公開日:2019/07/17 最終更新日:2019/07/17

JVNVU#96954584
LLVM の Arm バックエンドにおいてスタック保護機構が機能しなくなる問題

概要

LLVM の Arm バックエンドにおいて、スタック保護機構が正常に機能せずバッファオーバーフローが検知できなくなる問題があります。

影響を受けるシステム

  • LLVM

詳細情報

LLVM の Arm バックエンドにおけるスタック保護機構では、関数のスタックフレーム内においてローカル変数と戻り先アドレスの間にチェック用の cookie 値(カナリア)がスタックプロテクタとして配置されます。関数の実行終了時にこの値が上書きされていないかチェックすることでスタックの改ざんを検知します。
スタックプロテクタが置かれるスタック上の位置はあらかじめ決められていますが、スタック上にローカル変数を配置する処理のなかで新しいスタックプロテクタを設けてしまう可能性があることがわかりました。この場合、スタック保護機構は正常に機能せず、スタックの改ざんを検知することができません。また、スタックプロテクタを指すポインタ値がスタック上に置かれる可能性があることも分かりました。この場合も、スタックの改ざんを検知できない可能性があります。

想定される影響

スタックバッファオーバーフローが正常に検知されなくなることにより、第三者により任意のコードを実行されたり、サービス運用妨害 (DoS) 攻撃を受けたりする可能性があります。

対策方法

ベンダのアップデートを適用する  
ベンダの提供する情報を元に最新版にアップデートを行なってください。

詳しくはベンダの提供する情報を参照してください。

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia