動的に割り当てられたメモリが解放されると、メモリの内容は不確実であり、再取得されると、メモリ マネージャは、解放されたメモリ ブロックを割り当てるか割り当て解除するかを決定しますが、そのメモリの内容が変更され、予期しないプログラム動作が発生する可能性があります。したがって、メモリが解放されると、メモリへの書き込みや読み取りが行われなくなることが保証されます。
不適切なメモリ管理によって引き起こされる問題は、C/C プログラムの一般的な脆弱性です。解放後に使用すると、プログラムの異常終了、任意のコードの実行、サービス拒否攻撃など、悪用可能なリスクが生じる可能性があります。 2018 年 1 月から 11 月までに、CVE に関連する脆弱性情報は合計 134 件ありました。脆弱性の一部は次のとおりです。
脆弱性の概要 | |
---|---|
Artifex Mupdf バージョンの fz_keep_key_storable には、サービス拒否やコード実行の問題を引き起こす可能性のある use-after-free の脆弱性が存在します。この脆弱性は、被害者をだまして特別に細工された PDF ファイルを開かせることで悪用される可能性があります。 | |
Google Chrome 70.0.3538.67 より前のバージョンの Blink エンジンの HTMLImportsController に use-after-free の脆弱性があります。リモート攻撃につながる可能性がある 作成者は、特別に構築された HTML ページを通じてヒープ破損の問題を悪用します。 | |
Adobe Acrobat および Reader 2018.011.20063 以前のバージョン、2017.011.30102 以前のバージョン、2015.006.30452 以前のバージョンにリリースが存在します。バージョン 脆弱性のその後の使用。リモートの攻撃者がこの脆弱性を悪用して任意のコードを実行する可能性があります。 |
# 図 2: 修復後の検出結果
4、リリース後の使用を回避する方法(1) メモリ解放時には必ずnullポインタを設定してください。複数または複雑なデータ構造を利用する場合、ただし、いくつかの問題はある程度回避できます。
(2) ループ文内でメモリの確保や解放を行う場合は、問題がないか十分に確認する必要があります。 (3) 自動検出にはソース コードの静的分析ツールを使用します。これにより、ソース コード内のリリース後の使用法の問題を効果的に検出できます。
以上がC++プログラムリリース後の使用による脆弱性解析の実施方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。