web-dev-qa-db-ja.com

Raspberry PIでのバッファオーバーフロー

ARMプロセッサが Raspberry Pi)で使用されている場合 は、標準のバッファオーバーフローに対して脆弱ですか?つまり、BOの脆弱性を持つプログラムがPiで実行されると、悪用されやすい

ARMおよびSoCの固有のアーキテクチャは、脆弱性またはエクスプロイトにどのように影響しますか?

フットプリントが小さく、攻撃対象領域が小さいことを考えると、攻撃の可能性が高いのはどのようなものでしょうか?

そして最も興味深いのは、Raspberry PiがASLR、DEP/NX、カナリア全般などのオーバーフローに対する組み込みの保護をサポートしているかどうかです。

2
AviD

Raspberry Piは、ARM1176JZF-Sプロセッサで動作します。 ARMはRpiよりも多くのデバイスで使用されます。ARM悪用は確かに可能です。以下の論文をご覧ください。

この Defcon 18 プレゼンテーションもご覧ください。

悪用に関しては、バッファオーバーフローが確実に発生する可能性があります(技術的な詳細については、ペーパーを参照してください)。多くの新しいプラットフォームでは、スタックは実行不可能であるため、スタックを悪用しようとすることは以前よりも困難です。 ARMは変数管理を実行する方法が原因で、ret2libcのような手法は機能しません。変数は、スタックに置かれるのではなく、レジスタ間でプッシュされることがあり、適切なポップがはるかに困難になります。シェルコードの一部にジャンプするための変数です。代わりに別のタイプの攻撃を使用できますが、 この論文 に示されているように、この手法を採用していますリターン指向プログラミングを利用する。

ASLRは主にオペレーティングシステムの責任です。したがって、Rpiで実行しているOSと、ASLRサポートを使用してコンパイルされているかどうかに大きく依存します。 NXビットは実装されていますが、リターンオリエンテッドプログラミングを使用して回避できます。

Raspberry Pi内のARMプロセッサは、2つのスペースを許可するTrustZoneをサポートしています。

  • 安全な世界
  • 通常の世界

ARMは仮想コアを使用してこれら2つの世界を分離し、異なる実行権限を許可します(たとえば、Androidでこれは、モバイル決済モジュールを分離して、通常のアプリケーションとはまったく異なるゾーンで実行するために使用されます)したがって、デバイスを悪用できる可能性がある場合でも、機密データにアクセスできない可能性があります。

もっともらしい攻撃ベクトルに関しては、Rpiを何に使用するかによって異なります。 ARMを実装している他のデバイスでは、たとえばブートローダーのロックを解除するために攻撃が使用されています(このエクスプロイトは、通常の保護から通常の世界の保護をバイパスできました)。

4
Lucas Kauffman