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 コマンドを使用して拡張を実行します。
詳細は、セキュリティー拡張を使用した、マルウェアに対する保護および 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.o は prog.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) のマニュアルページを参照してください。