-1

さまざまな OS で効率的に malloc() 関数を使用する方法。

4

4 に答える 4

0

The Art of Software Security Assessment」という本は、 を使用する際に遭遇する可能性のあるさまざまな問題をうまく説明していますmalloc()

于 2012-03-01T19:56:16.043 に答える
0

まず第一に、最近のほとんどのオペレーティング システムでmalloc()は、ランタイム ライブラリによって実装されています。オペレーティングシステムではありません。GNU 実装のソース コードはこちらを参照してください。

第 2 に、プロセス空間の拡大に対してクリアされた RAM のみを提供することにより、プロセス間のセキュリティが保証されます。C ランタイムmalloc()ライブラリ関数は、malloc のメモリ プールが使い果たされると、オペレーティング システムに追加のメモリを要求する場合があります。

于 2012-03-01T19:59:46.617 に答える
0

malloc の安全でない使用によって引き起こされる可能性のある主要な脆弱性がいくつかあります。たとえば、次のとおりです。

  • malloc が失敗した場合、結果は NULL になる可能性があります。この状態を確認して処理しないと、特定の状況で悪用可能な null 逆参照が発生する可能性があります。
  • malloc に渡されたサイズが小さすぎる場合 (ほとんどの場合、オーバーフローした算術演算が原因です)、malloc は成功する可能性がありますが、元の開発者が意図したよりも小さいバッファーが返されます。このバッファを使用すると、ヒープ オーバーフローが発生する可能性があります。
  • 最終的に free() の呼び出しを介してメモリを解放できなかった場合、たとえばサービス拒否攻撃の一部として、メモリを使い果たすために使用される可能性があるメモリ リークが発生する可能性があります。

Malloc は標準ライブラリ関数です。OS によって処理されることは保証されておらず (各プラットフォームの CRT の一部です)、上記のルールを除けば、異なる実装間で依存できる共通性はありません。Malloc は本質的に安全ではありません。人々の使用は可能です。

于 2012-03-06T11:22:07.640 に答える