Jadual Kandungan
1. Kaedah pelepasan memori yang salah
2. Bahaya kaedah pelepasan memori yang salah
3. Kod sampel
3.1 Kod Kecacatan
4 🎜>
Rumah Operasi dan penyelenggaraan Keselamatan [Defect Weekly] Isu 31: Keluaran memori yang salah

[Defect Weekly] Isu 31: Keluaran memori yang salah

May 23, 2023 pm 11:07 PM
Audit kod

1. Kaedah pelepasan memori yang salah

Fungsi aplikasi memori biasa dalam bahasa C termasuk malloc(), realloc(), calloc() Walaupun ia mempunyai fungsi yang berbeza, semuanya Bersesuaian kepada fungsi pelepasan memori yang sama free(), aplikasi memori dan keluaran dalam C++ menggunakan kaedah baru/padam, baru []/padam[]. Tidak kira sama ada bahasa C atau bahasa C++, semasa menulis kod sumber, anda mesti memilih kaedah pelepasan memori mengikut kaedah aplikasi memori yang berbeza untuk mengelakkan penggunaan keluaran memori yang salah. Contohnya: penggunaan campuran peruntukan/pelepasan memori C/C++, atau penggunaan campuran peruntukan/pelepasan memori skalar dan vektor.

2. Bahaya kaedah pelepasan memori yang salah

Membebaskan memori yang salah boleh menyebabkan tingkah laku ralat yang tidak dijangka, atau malah menyebabkan program ranap. Perkara 5 "C++ (Edisi Kedua) Berkesan" "Baharu dan pemadaman yang sepadan mesti menggunakan bentuk yang sama" menunjukkan: "Jika unsur-unsur dalam objek dilepaskan secara tidak betul, ia boleh menyebabkan keseluruhan objek atau bahkan keseluruhan struktur memori menyala. timbunan itu rosak, mengakibatkan kebocoran memori atau ranap program."

Terdapat juga maklumat kelemahan yang berkaitan dengan ini dalam pangkalan data CVE. Dari Januari 2018 hingga April 2019, terdapat sejumlah 3 maklumat kerentanan berkaitan dalam pangkalan data CVE. Maklumat kerentanan adalah seperti berikut:

CVE 漏洞概况
CVE-2018-14948 dilawar sound2017-11-27 及之前版本中的 wav-file.cc文件存在错误的内存释放方法漏洞 (new[]/delete)。
CVE-2018-14947 PDF2JSON 0.69 版本中的 XmlFonts.cc 文件的‘XmlFontAccu::CSStyle’函数存在错误的内存释放漏洞(new[]/delete)。
CVE-2018-14946 PDF2JSON 0.69 版本中的 ImgOutputDev.cc 文件的 HtmlString 类存在错误的内存方法漏洞 (malloc/delete)。

3. Kod sampel

Sampel datang daripada Samate Juliet Test Suite untuk C/C++ v1.3 (https: //samate. nist.gov/SARD/testsuite.php), nama fail sumber: CWE762_Mismatched_Memory_Management_Routines__new_array_delete_char_01.cpp.

3.1 Kod Kecacatan

[Defect Weekly] Isu 31: Keluaran memori yang salah

Dalam kod contoh di atas, baris 31 menggunakan new[] untuk mencipta tatasusunan objek, dan dalam baris 34 Baris menggunakan delete untuk pelepasan Memandangkan new[] yang sepadan delete[] tidak digunakan semasa melepaskan tatasusunan objek, terdapat masalah "kaedah pelepasan memori yang salah".

Gunakan Pelindung Kod untuk mengesan kod sampel di atas Anda boleh mengesan kecacatan "kaedah pelepasan memori yang salah", dan tahap paparan adalah sederhana. Seperti yang ditunjukkan dalam Rajah 1:

[Defect Weekly] Isu 31: Keluaran memori yang salah

Rajah 1: Contoh pengesanan kaedah pelepasan memori yang salah

3.2 Kod pembaikan

[Defect Weekly] Isu 31: Keluaran memori yang salah

Dalam kod pembaikan di atas, kaedah pembaikan yang diberikan oleh Samate ialah: buat tatasusunan objek melalui new[] pada baris 31, dan gunakan delete[] pada baris 33 untuk melepaskan . Ini mengelakkan kaedah pelepasan memori yang salah.

Gunakan Pengawal Kod untuk mengesan kod yang telah dibaiki, dan anda boleh melihat bahawa kecacatan "kaedah pelepasan memori yang salah" tidak lagi wujud. Seperti yang ditunjukkan dalam Rajah 2:

[Defect Weekly] Isu 31: Keluaran memori yang salah

Rajah 2: Hasil pengesanan selepas pembaikan

4 🎜>

Untuk mengelakkan kaedah pelepasan memori yang salah, anda perlu memberi perhatian kepada perkara berikut:

(1) Apabila melepaskan memori, jelaskan kaedah yang digunakan untuk aplikasi memori untuk mengelakkan struktur program yang kompleks dan kecuaian kakitangan Akibatnya, kaedah pelepasan yang salah digunakan.

(2) Menggunakan alat analisis statik kod sumber dapat mengesan jenis masalah ini dengan berkesan.

Atas ialah kandungan terperinci [Defect Weekly] Isu 31: Keluaran memori yang salah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

[Defect Weekly] Isu 31: Keluaran memori yang salah [Defect Weekly] Isu 31: Keluaran memori yang salah May 23, 2023 pm 11:07 PM

1. Kaedah pelepasan memori yang salah Fungsi aplikasi memori biasa dalam bahasa C termasuk malloc(), realloc(), dan calloc() Walaupun mereka mempunyai fungsi yang berbeza, semuanya sepadan dengan fungsi pelepasan memori yang sama memori dalam Aplikasi C++ dan keluarkan menggunakan kaedah baru/padam, baru[]/padam[]. Tidak kira sama ada bahasa C atau bahasa C++, semasa menulis kod sumber, anda mesti memilih kaedah pelepasan memori mengikut kaedah aplikasi memori yang berbeza untuk mengelakkan penggunaan keluaran memori yang salah. Contohnya: penggunaan campuran peruntukan/pelepasan memori C/C++, atau penggunaan campuran peruntukan/pelepasan memori skalar dan vektor. 2. Kemudaratan kaedah pelepasan memori yang salah Menggunakan kaedah pelepasan memori yang salah.

Teknik pengauditan kod PHP yang disyorkan dan alat praktikal Teknik pengauditan kod PHP yang disyorkan dan alat praktikal Aug 08, 2023 pm 02:15 PM

Gambaran keseluruhan teknik pengauditan kod PHP yang disyorkan dan alat praktikal: Dengan perkembangan pesat Internet, isu keselamatan laman web telah menjadi semakin menonjol. Sebagai bahasa yang digunakan secara meluas dalam pembangunan Internet, audit keselamatan kod PHP telah menjadi pautan yang sangat penting. Artikel ini akan memperkenalkan beberapa teknik asas untuk pengauditan kod PHP dan mengesyorkan beberapa alat praktikal. 1. Teknologi audit kod mengimbas fungsi sensitif Dalam audit kod PHP, perkara pertama yang perlu diberi perhatian ialah penggunaan fungsi sensitif. Sebagai contoh, fungsi eval() boleh melaksanakan sebarang kod yang dihantar, jadi

Bagaimana untuk melakukan pengauditan kod asas dengan PHP Bagaimana untuk melakukan pengauditan kod asas dengan PHP Jun 22, 2023 pm 02:06 PM

Dengan peningkatan kesedaran keselamatan rangkaian dan peningkatan berterusan kaedah serangan penggodam, isu keselamatan laman web telah menjadi isu yang tidak dapat dielakkan bagi perusahaan dan individu. Dalam era ini apabila masalahnya amat teruk, PHP ialah bahasa pembangunan web yang popular, dan semakin banyak syarikat atau individu membangunkan laman web mereka melalui PHP. Untuk memastikan keselamatan laman web PHP, pengauditan kod adalah pautan yang sangat diperlukan. Apakah itu pengauditan kod? Pengauditan kod ialah proses menganalisis kod tapak web untuk mencari kelemahan keselamatan. Ini adalah sistematik dan mendalam

Cara menggunakan Python untuk pengauditan kod perisian Cara menggunakan Python untuk pengauditan kod perisian Jun 29, 2023 am 10:13 AM

Cara menggunakan Python untuk pengauditan kod perisian Dengan perkembangan pesat aplikasi perisian, kualiti kod dan isu keselamatan juga telah mendapat perhatian yang semakin meningkat. Pengauditan kod ialah proses menilai dan menyemak kualiti kod anda dan menemui potensi kelemahan dan isu keselamatan. Sebagai bahasa pengaturcaraan yang fleksibel dan kaya dengan ciri, Python digunakan secara meluas dalam amalan pengauditan kod. Artikel ini akan memperkenalkan secara ringkas cara menggunakan Python untuk pengauditan kod perisian. 1. Memahami konsep asas pengauditan kod Sebelum menjalankan pengauditan kod, kita perlu memahami maksud pengauditan kod.

Cara mengendalikan pengauditan kod dan pembetulan pepijat dalam pembangunan PHP Cara mengendalikan pengauditan kod dan pembetulan pepijat dalam pembangunan PHP Oct 10, 2023 am 09:41 AM

Cara mengendalikan pengauditan kod dan pembaikan kelemahan dalam pembangunan PHP Dengan perkembangan pesat Internet, PHP, sebagai bahasa pengaturcaraan yang digunakan secara meluas, menduduki kedudukan penting dalam pembangunan laman web dan aplikasi. Walau bagaimanapun, disebabkan sifat sumber terbukanya, kod PHP juga mudah dieksploitasi oleh penggodam, menyebabkan kelemahan keselamatan. Bagi pembangun PHP, pengauditan kod dan pembaikan kelemahan adalah isu yang mesti diberi perhatian. Artikel ini akan memperincikan cara mengendalikan pengauditan kod dan pembetulan kerentanan dalam pembangunan PHP, dengan contoh kod khusus. 1. Audit kod Audit kod

Bagaimana untuk menjalankan perlindungan keselamatan dalam pembangunan fungsi back-end PHP? Bagaimana untuk menjalankan perlindungan keselamatan dalam pembangunan fungsi back-end PHP? Aug 06, 2023 pm 09:30 PM

Bagaimana untuk menjalankan perlindungan keselamatan dalam pembangunan fungsi back-end PHP? Dengan pempopularan Internet dan perkembangan pesat teknologi berkaitan, PHP, sebagai bahasa pembangunan back-end yang diterima pakai secara meluas, mempunyai lebih ramai pengguna. Walau bagaimanapun, isu keselamatan yang terhasil tidak boleh diabaikan. Untuk melindungi data pengguna dan mencegah serangan berniat jahat, pembangun perlu memberi perhatian kepada keselamatan pembangunan fungsi back-end PHP. Artikel ini akan memperkenalkan beberapa langkah perlindungan keselamatan biasa dalam pembangunan fungsi back-end PHP dan memberikan contoh kod yang sepadan. Pengesahan input dan penapisan data apabila menerima dan memproses pengguna

Analisis teknologi audit kod keselamatan PHP Analisis teknologi audit kod keselamatan PHP Jun 30, 2023 pm 10:25 PM

PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas yang digunakan secara meluas dalam pembangunan web dan pembinaan laman web dinamik. Walau bagaimanapun, dengan perkembangan pesat Internet dan peningkatan dalam ancaman keselamatan rangkaian, isu keselamatan secara beransur-ansur menjadi semakin penting kepada pembangun. Dalam pembangunan PHP, teknologi pengauditan kod keselamatan memainkan peranan penting. Artikel ini akan meneroka dengan mendalam analisis teknologi pengauditan kod keselamatan dalam PHP untuk membantu pembangun melindungi aplikasi mereka dengan lebih baik. Pertama, kita perlu memahami apa itu pengauditan kod keselamatan. Pengauditan kod keselamatan merujuk kepada semakan penuh kod

Pengauditan kod dalam PHP Pengauditan kod dalam PHP May 24, 2023 am 08:04 AM

Dengan perkembangan teknologi rangkaian yang berterusan, pelbagai aplikasi secara beransur-ansur menjadi bahagian yang sangat diperlukan dalam kehidupan. Sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, PHP juga memainkan peranan penting dalam banyak aplikasi. Walau bagaimanapun, keselamatan kod PHP sering diabaikan dan diabaikan. Bagi penggodam dan penyerang, aplikasi PHP menjadi sasaran serangan, dan cara mengawal dan mencegah serangan memerlukan pengauditan kod PHP. Apakah itu pengauditan kod PHP? Pengauditan kod PHP merujuk kepada menyemak kod PHP,

See all articles