cari
RumahOperasi dan penyelenggaraanKeselamatanApakah maksud aliran bawah penampan dalam program C/C++?

1, aliran bawah penimbal

Artikel ini akan menerangkan satu lagi situasi limpahan penimbal, aliran bawah penimbal. Limpahan penampan telah dianalisis dalam topik sebelumnya (lihat Isu 7). Sebab yang sama digunakan untuk aliran bawah penimbal, jadi faktor yang membawa kepada limpahan penimbal tidak akan diulang dalam artikel ini. Secara ringkasnya, aliran bawah penimbal merujuk kepada situasi di mana penimbal peringkat seterusnya ditimpa apabila data pengisian melimpah. Artikel ini menerangkan bahaya aliran bawah penimbal, tanda dalam kod sumbernya dan cara menyelesaikan masalah.

2. Bahaya aliran bawah penampan

Dalam program C/C++, aliran bawah penampan ialah jenis kerentanan yang serius yang boleh menyebabkan program ranap atau Akibat seperti melaksanakan kod berniat jahat. Dari Januari hingga Oktober 2018, sebanyak 494 maklumat kerentanan CVE telah terlibat. Beberapa kelemahan adalah seperti berikut:

CVE 漏洞概述
CVE-2018-1000001 Libc Realpath 缓冲区下溢漏洞,漏洞的产生是由于 GNU C 库没有正确处理 getcwd() 系统调用返回的相对路径,其他库也很可能受此影响。在受影响的系统中,通过 SUID binary 可以获得 root 权限。
CVE-2018-1000637   zutils 是一款压缩文件处理实用程序包。该程序支持压缩/解压缩、压缩文件比较和压缩文件完整性校验等功能。zcat 是其中的一个解压缩实用程序。zutils 1.8-pre2 之前版本中的 zcat 存在缓冲区溢出漏洞。攻击者可借助特制的压缩文件利用该漏洞造成拒绝服务或执行任意代码。
CVE-2018-5388 strongSwan 5.6.3 之前版本在实现上存在缓冲区下溢漏洞,攻击者利用此漏洞可耗尽资源,导致拒绝服务。

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: CWE121_Stack_Based_Buffer_Overflow__CWE193_char_alloca_cpy_01.c.

3.1 Kod Kecacatan

C/C++ 程序中的缓冲区下溢指的是什么

Dalam kod contoh di atas, penunjuk data diberikan nilai dalam baris 36. Melalui penetapan Ia boleh dilihat daripada operasi bahawa penunjuk data menghala ke dataBadBuffer Apabila menggunakan strcpy() untuk salinan memori dalam baris 41, panjang penimbal sumber adalah lebih besar daripada panjang penimbal destinasi, mengakibatkan. limpahan. Bahagian limpahan melebihi sempadan bawah dataBadBuffer Menyebabkan masalah aliran bawah penampan.

Gunakan 360 ​​Code Guard untuk mengesan kod sampel di atas Anda boleh mengesan kecacatan "buffer underflow" dan tahap paparan adalah tinggi. Seperti yang ditunjukkan dalam Rajah 1:

C/C++ 程序中的缓冲区下溢指的是什么

Rajah 1: Contoh pengesanan aliran bawah penampan

3.2 Kod pembaikan

C/C++ 程序中的缓冲区下溢指的是什么

Dalam kod pembaikan di atas, kaedah pembaikan yang diberikan oleh Samate ialah: tetapkan penunjuk data dalam baris 37, dan arahkan data ke dataGoodBuffer Pada masa ini Panjang daripada data adalah konsisten dengan source Apabila baris 42 menggunakan strcpy() untuk melakukan operasi penyalinan, penimbal sumber dan penimbal destinasi mempunyai panjang yang sama, sekali gus mengelakkan masalah aliran bawah penimbal. Masalah ini juga boleh dielakkan dengan kaedah lain seperti semakan sempadan.

Gunakan 360 ​​Code Guard untuk mengesan kod yang telah dibaiki, dan anda dapat melihat bahawa kecacatan "penimbal bawah aliran" tidak lagi wujud. Seperti yang ditunjukkan dalam Rajah 2:

C/C++ 程序中的缓冲区下溢指的是什么

Rajah 2: Hasil pengesanan selepas pembaikan

4. Bagaimana untuk mengelakkan aliran bawah penimbal

Untuk mengelakkan aliran bawah penimbal, anda perlu memberi perhatian kepada perkara berikut:

(1) Cuba elakkan menggunakan fungsi operasi memori yang tidak selamat.

(2) Untuk fungsi pengendalian memori yang mempunyai petunjuk jelas tentang nilai pulangan, nilai pulangan fungsi harus dinilai dengan berkesan untuk menentukan sama ada operasi itu berjaya.

(3) Semakan sempadan mesti dilakukan apabila mengisi data ke dalam penimbal.

Atas ialah kandungan terperinci Apakah maksud aliran bawah penampan dalam program C/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

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)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa