web-dev-qa-db-ja.com

シリコンセキュアメモリはバッファオーバーランを防ぐことができますか?

Oracleは 最近発表 新しいSPARC M7チップ。これには、HeartbleedやVenomなどのメモリ破損のバグを防ぐと主張するSilicon Secured Memoryと呼ばれる興味深い機能があります。

アイデアは、各ポインタと64バイトのメモリのチャンクに「色」を追加することです。各メモリアクセスで色がチェックされ、それらが一致しない場合、プログラムは中止されます。オンラインには 写真詳細 の情報があります。

アイデアは有望に聞こえます。ただし、バッファオーバーラン(DEPなど)を解決するための以前の試みは、期待よりも効果が低いことが判明しました。 SSMはバッファオーバーランを確実に防止できますか?この機能に対する潜在的な攻撃は何ですか?

6
paj28

SSMはバッファオーバーランを確実に防止できますか?

100%の防止を提供するとは主張していませんが、以前のハードウェアベースのソリューション(通常はページの粒度)と比較してよりきめ細かい保護を提供し、同様の粒度のソフトウェアベースの保護よりもはるかに優れたパフォーマンスを提供します。のようないくつかの制限があります

  • あなたのコードは実際にそれを利用する必要があります。これは、提供されたmallocを使用するのと同じくらい簡単ですが、OpenSSLで行われるようなカスタムメモリ割り当てを変更する必要があります。また、コンパイラがそのような保護をスタックに追加するのか、それともヒープに割り当てられたデータに対してのみ可能かどうかはわかりません。
  • メモリは64バイトにアラインする必要があります。したがって、32バイトのみの割り当てをオーバーフローした場合は検出されません。
  • 各64バイト領域で使用できるのは16色(4ビット)だけです。したがって、一部のランダムポインタが保護されたメモリ領域と同じ色になる可能性は6%です。

したがって、完璧ではありませんが、問題を早期に発見して攻撃を防ぐ機会は、少なくとも同じパフォーマンスクラスのソリューションを使用している既存のソリューションよりもはるかに高くなります。

バッファオーバーランを解決するための以前の試み(DEPなど)

私の意見では、DEPはバッファオーバーランからまったく保護しませんが、スタックまたはヒープに書き込まれたコードを単純に実行できないようにするだけです。したがって、SSMはオーバーフロー自体を防ぐのに役立ちますが、成功したバッファオーバーフローを利用する可能な方法のいくつかのみを扱います。

6
Steffen Ullrich

ポイントの補足として、ここでのもう1つの回答ですでに この項目The Register に記載されている2つの追加の懸念を指摘しておきます。

最初:攻撃者のコードが悪意のあるポインタで使用する必要がある「色」を誤って推測したとしても(16分の1の確率で正しく処理するのは簡単ではありません(少なくともこのコンテキストでは)。プロセッサからの例外により、問題のアプリケーションがクラッシュしますが、多くの場合、十分ではありません。ターゲットは、(a)クラッシュが発生したことを確認し、その特別な原因を認識し、(b)少なくとも管理者への攻撃に関するアラートを鳴らすために、セキュリティまたはログ監視ソフトウェアを導入する必要があります。 (もちろん、できれば洗練されたホストベースのIDPSがターゲットのサーバーに配置され、例外をトリガーしたエクスプロイトコードを認識し、それがさらなる攻撃で再度実行されることに対して自動対策を講じることができます。できれば...)

一方、アプリケーションのクラッシュが気付かれず、クラッシュしたインスタンスが自動的に十分な回数だけ再インスタンス化した場合、最終的に攻撃者のコードは、目的の64ビットメモリブロックの色と一致する16分の1の確率でヒットします負荷。この防衛線を迂回します。言い換えれば、アプリケーションやサーバーの動作に注意を払っていない場合でも、やけどをする可能性は十分にあります。 (そうだね)

2番目:攻撃者が何らかの方法で、特定のメモリブロックの色を特定したい場合、または特定のメモリブロックの色を特定できる場合、攻撃者は(may単純にポインタをその色に設定することができます。これらの線に沿った攻撃に対してどの程度脆弱である可能性がありますか?さて、回答を始めるには、これがどのように機能するかについて、これまでにないように見えるよりも技術的な詳細が必要になるでしょう。 (さらに、方法を知っている回答者方法 SPARC私よりももっと詳しい。)

上記の懸念/制限が存在する場合でも、他のアーキテクチャ(咳...インテル... ARM ...咳)のシリコンメーカーが試みているよりも野心的なハードウェアベースのセキュリティ対策です今すぐメモリ保護を改善するためにやります。 (メモリブロックの保護キー/チェック情報を持つという一般的な概念はほとんど新しいものではありません。)エクスプロイト保護(ある場合)の実際のプラスの違いがOracleショップにどの程度貢献するかを見るのは非常に興味深いでしょう。

1
mostlyinformed