セキュリティフィールドには、ヒープエクスプロイトとスタックスマッシング攻撃があります。スタックまたはヒープセグメントのコードを実行できるのはなぜですか?
しかし、/proc/*/maps
ファイル、ヒープとスタックセグメント、 にはrw-p
-permissionしかありません。
これらの2つのセグメントには実行権限がありません。 私のエンジニアの友人は、インテルCPUでrw
パーミッションがあれば、あなたのコードは自動的に実行許可を得られると言いました。 しかし、なぜインテルがこの設計を行うのか理解できません。
が、Intelプロセッサは、[NXビットのオプション]を持っていた(https://でen.wikipedia.org/wiki/NX_bit)をご覧ください。 –
@HansPassantただし、ロングモード(64ビットのページテーブルエントリ)でのみ。 –
あなたはこのhttps://en.wikipedia.org/wiki/Executable_space_protectionを見なければならないかもしれません。実際には、スタックまたはヒープセグメント内のコードはジャンプしても実行できません。セグメンテーションフォルトが発生します。これは、セグメント(スタックまたはヒープ)に実行権限がないのに実行しようとするためです。その後、CPUは例外をスローします。 – bananaappletw