


Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++
1. Gunakan selepas keluaran
Apabila memori yang diperuntukkan secara dinamik dilepaskan, kandungan memori tidak pasti dan mungkin kekal utuh dan boleh diakses, kerana apabila ia semula- Ia adalah keputusan pengurus memori untuk memperuntukkan atau mengagihkan blok memori yang dibebaskan, tetapi juga mungkin kandungan memori telah diubah, menyebabkan tingkah laku program yang tidak dijangka. Oleh itu, apabila ingatan dilepaskan, ia dijamin tidak akan ditulis atau dibaca lagi.
2. Bahaya penggunaan selepas bebas
Masalah yang disebabkan oleh pengurusan memori yang tidak betul adalah kelemahan biasa dalam program C/C++. Penggunaan selepas percuma boleh membawa kepada potensi risiko yang boleh dieksploitasi, termasuk penamatan program yang tidak normal, pelaksanaan kod sewenang-wenangnya dan serangan penafian perkhidmatan. Dari Januari hingga November 2018, terdapat sejumlah 134 maklumat kerentanan yang berkaitan dengannya dalam CVE. Beberapa kelemahan adalah seperti berikut:
CVE | 漏洞概述 |
---|---|
CVE-2018-1000051 | Artifex Mupdf 版本的 fz_keep_key_storable 中存在一个释放后使用漏洞,可导致拒绝服务或代码执行问题。通过诱骗受害者打开一个特殊构造的 PDF 文件,该漏洞即可遭利用。 |
CVE-2018-17474 | 谷歌 Chrome 浏览器70.0.3538.67 之前版本 Blink 引擎的 HTMLImportsController 中存在一个释放后使用漏洞,很有可能导致远程攻击者通过一个特殊构造的 HTML 页面利用堆损坏问题。 |
CVE-2018-15924 | Adobe Acrobat 和 Reader 2018.011.20063及之前版本、2017.011.30102 及之前版本、2015.006.30452 及之前版本中存在释放后使用漏洞。远程攻击者可利用该漏洞执行任意代码。 |
3 Kod sampel
Sampel datang daripada Samate Juliet TestSuite untuk C/C++ v1.3 (https: //samate.nist .gov/SARD/testsuite.php), nama fail sumber: CWE416_Use_After_Free__malloc_free_char_01.c.
3.1 Kod Kecacatan
Gunakan 360 Code Guard untuk mengesan kod sampel di atas, anda boleh mengesan "guna selepas release" defect , tahap paparan adalah tinggi. Seperti yang ditunjukkan dalam Rajah 1:
Rajah 1: Gunakan selepas contoh pengesanan pelepasan
3.2 Kod pembaikan
Dalam kod pembaikan di atas, kaedah pembaikan yang diberikan oleh Samate ialah: gunakan malloc() pada baris 30 untuk peruntukan memori, dan gunakan free() pada baris 36 untuk keluaran Selepas keluaran Tiada operasi lain dilakukan pada ingatan ini.
Gunakan 360 Code Guard untuk mengesan kod yang dibaiki, dan anda boleh melihat bahawa tiada kecacatan "penggunaan selepas pelepasan". Seperti yang ditunjukkan dalam Rajah 2:
Rajah 2: Hasil pengesanan selepas pembaikan
4 Cara mengelak daripada menggunakan
Untuk mengelakkan penggunaan selepas pelepasan, anda perlu memberi perhatian kepada perkara -perkara berikut:
(1) Pastikan untuk menetapkan penunjuk null apabila melepaskan memori ini. menggunakan struktur data berbilang atau kompleks, Tetapi beberapa masalah boleh dielakkan pada tahap tertentu. (2) Apabila memperuntukkan atau melepaskan memori dalam pernyataan gelung, anda perlu mengesahkan dengan teliti sama ada terdapat masalah. (3) Gunakan alat analisis statik kod sumber untuk pengesanan automatik, yang boleh menemui isu penggunaan selepas keluaran dalam kod sumber dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Dreamweaver CS6
Alat pembangunan web visual
