cari
RumahOperasi dan penyelenggaraanKeselamatanBagaimana 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

Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++

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:

Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++

Rajah 1: Gunakan selepas contoh pengesanan pelepasan

3.2 Kod pembaikan

Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++

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:

Bagaimana untuk melaksanakan analisis kelemahan yang disebabkan oleh penggunaan selepas keluaran program C++

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!

Kenyataan
Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MantisBT

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

Dreamweaver CS6

Alat pembangunan web visual