OpenBSDメモリ保護メカニズムはデフォルトで有効になっていませんか?

OpenBSDメモリ保護メカニズムはデフォルトで有効になっていませんか?

とは別に「S」オプションmalloc.confそして増え続けるkern.stackgap_random削除して許可されたマウントオプション、その他記憶関連OpenBSDの強化はオンにできますが、基本的にはオンにできませんか?

カーネルを再コンパイルする必要があり、最小限のソースコードの変更が必要な場合でも、オプションが役に立ちます。

通常、コーディングエラーが原因で多くのアプリケーション(ポートのアプリケーションなど)がクラッシュするため、これを有効にしません。

grsecurityからリスト/アイデアを取得します(存在する場合はまだOpenBSDでは使用されていません)。しかし、プログラマーでない場合は難しいです。https://grsecurity.net/features.php

答え1

「...OpenBSDにはオンにできますが、デフォルトでは有効になっていない他のメモリ関連の強化メカニズムはありますか?

カーネル(または私が使用したプログラム)を再コンパイルする必要があり、最小限のソースコード修正が必要な場合でも、このオプションは役に立ちます。 」。

私が今まで見つけたこと:

常にカーネルの最新の安定版にアップデートしてください。また見てくださいhttp://www.trustedbsd.org/。参考資料をお読みください。WikipediaのOpenBSDセキュリティ機能ページ

オープンBSD記憶関連セキュリティ機能:

  • アドレス空間レイアウトのランダム化(ASLR):sysctl設定vm.randomize_mmap到着1(デフォルトではオンにする必要がありますが、DragonflyBSDではオフになっており、FreeBSDでは実装されていないようです。)

  • 使用タイミングセキュリティ_bmp(3)とbcmp(3)またはmemcmp(3)の代わりにtimingsafe_memcmp(3)。

  • 使用明示的_bzero(3)機密メモリ(パスワード変数など)を消去するbzero(3)の代わりにバリアントです。

  • 場所に依存しない実行可能ファイル(PIE):次に接続-パイまたは--イメージ実行可能ファイル

    場所に依存しない実行可能ファイルを作成します。これは現在ELFでのみサポートされます。プラットフォーム。場所に依存しない実行可能ファイルは、動的リンカーによってオペレーティングシステムが選択した仮想アドレス(呼び出しごとに異なる場合があります)に再配置されるという点で、共有ライブラリと似ています。通常の動的にリンクされた実行可能ファイルと同様に実行でき、実行可能ファイルに定義されているシンボルは共有ライブラリによって上書きできません。

  • ランダム化マッピング(2):MAP_FIXEDを使用しないでください。 mqueryを使用して確認してください。

  • ランダム()の交換:ランド(3)ランダム(3)ランド 48(3)BSDへの交換を待ちますアーク4ランダム(3)

  • 使用を検討してください配列再割り当て(3)機密データの場合は、malloc(3)、calloc(3)、または realloc(3) の代わりに callocarray(3) および Freezero(3) を使用してください。

  • スタック衝突防止(SSP):GCC + Propolice(SSP)がデフォルトで有効になっており、すべてのライブラリとアプリケーションを構築します。

  • KERN_STACKGAPRANDOMkern.stackgap_random) は、プログラムが実行されるたびにスタックポインタに追加される任意の値の範囲を設定します。バッファオーバーフローの悪用をさらに困難にするために、任意の値が追加されます。これ数字が大きいほど難しいこのような追加の保護は無差別代入として実行されますが、これはより大きなメモリの浪費を意味することもあります。基本:262144

  • 新しいものを使う構造py(3)strcpy(3)、strcat(3)、strncpy(3) または strncat(3) の代わりに strlcat(3) を使用すると、安全な文字列のコピーが可能です。

  • 使用ステテンハム(3)atoi(3) および strtol(3) インターフェイスファミリの代わりに関数を使用します。

  • W^Xポリシー:ページは書き込みと実行が可能ですが、同時に書き込みと実行はできません。したがって、W^X。アイデアは.rodataセグメントにはPROT_READ属性のみがあるため、PROT_EXEC属性は失われます。

関連情報