Go to main content

Oracle® Solaris 11.4 でのシステムおよび接続されたデバイスのセキュリティー保護

印刷ビューの終了

更新: 2018 年 8 月
 
 

adistack を使用した ADI ベースのスタック保護

M7 および T7 SPARC プロセッサは、Silicon Secured Memory (SSM) という包括的機能の下のハードウェア機能である、Application Data Integrity (ADI) を備えています。ADI は、リニアバッファーオーバーフローやはぐれたポインタ間接参照など、ソフトウェアを悪用した脅威の防止に役立ちます。

SPARC T7 ベースおよび M7 ベースのシステム、または Application Data Integrity (ADI) をサポートしているほかの新しいプラットフォームでは、adistack セキュリティー拡張が ADI ベースのスタックバッファーオーバーフロー検出を管理し、サポートします。このようなオーバーフローによって、SPARC 64 ビットユーザープロセスのスタックフレームのレジスタ保存領域が上書きされる可能性があります。アクティブになっている場合、adistack は ADI と一緒に、SPARC のレジスタウィンドウのスピルおよびフィル処理を活用して、このタイプのバッファーオーバーフローを検出し、SEGV シグナルを生成します。

adistack はデフォルトでは有効になっていません。アプリケーションでは、次の新しいリンカーオプションでサポートされるバイナリのタグ付けによって adistack を有効にできます。

-z sx=adistack[=enable|disable]

このオプションの詳細は、使用例 3, adistack を有効にしたアプリケーションのコンパイルおよび オブジェクトごとのセキュリティー拡張の指定を参照してください。

アプリケーションの adistack を有効にするには、sxadm exec コマンドを使用して拡張を実行します。


注 -  一部のアプリケーションやインタプリタ型言語は自分のスタックを直接読み取ったり変更したりする場合があるため、adistack では model=all プロパティーはサポートされていません。特に、C++ および Java アプリケーションは adistack をまだサポートしていません。

詳細は、セキュリティー拡張を使用した、マルウェアに対する保護および sxadm(8) のマニュアルページを参照してください。

使用例 3  adistack を有効にしたアプリケーションのコンパイル

この例では、基本的なメイクファイルとリンカーオプションを使用して、adistack をオブジェクトごとのセキュリティー拡張として指定し、拡張モードを enable に設定しています。

依存関係およびその解決方法を記述するメイクファイルルールを次のように指定します。

CFLAGS=-m64 -O
LDFLAGS = -z sx=adistack=enable

prog: prog.o
	${CC} ${CFLAGS} ${LDFLAGS} -o prog prog.o

    この例では、次のようになります。

  • CFLAGS 変数は、作成されるオブジェクトが 64 ビットオブジェクトであることを指定します。

  • LDFLAGS 環境変数は、作成されるオブジェクトのセキュリティー拡張として adistack を有効にします。

  • prog バイナリは prog.o オブジェクトファイルの存在に依存しています。prog.oprog.c に依存しています。

上記のメイクファイルルールを使用して次のコマンドを実行すると、依存関係を満たし、adistack を有効にした prog バイナリを作成できます。

make
cc -m64 -O  -c  prog.c
cc -m64 -O -z sx=adiheap=enable -o prog prog.o

詳細は、make(1S) および cc (1) のマニュアルページを参照してください。