Proyek LLVM ngembangake penanganan aman buffer ing C ++

Pangembang proyek LLVM wis ngusulake sawetara owah-owahan kanggo nguatake keamanan proyek C ++ sing kritis misi lan nyedhiyakake sarana kanggo ngilangi kasalahan sing disebabake overruns buffer. Pakaryan kasebut fokus ing rong wilayah: nyedhiyakake model pangembangan sing ngidini sampeyan bisa nggarap buffer kanthi aman, lan ngupayakake keamanan perpustakaan fungsi standar libc ++.

Model pemrograman aman sing diusulake kanggo C ++ yaiku nggunakake kelas sing diwenehake dening perpustakaan standar nalika nggarap buffer tinimbang manipulasi penunjuk kosong. Contone, disaranake nggunakake kelas std :: array, std :: vector, lan std :: span, sing bakal ditambahake karo mriksa wektu mbukak kanggo memori sing diparengake metu saka wates.

Kanggo nglawan praktik pemrograman sing mbebayani ing clang, disaranake ngetokake bebaya kompiler kanggo kabeh operasi aritmetika pointer, padha karo bebaya linter clang-tidy nalika nggunakake bendera "cppcoreguidelines-pro-bounds-pointer-aritmetika", dhukungan sing bakal katon ing release LLVM 16. Kanggo ngaktifake bebaya kuwi, flag kapisah bakal ditambahake kanggo clang, kang ora aktif minangka standar.

Direncanakake kanggo ngleksanakake mode proteksi hardened opsional ing libc ++, sing, yen diaktifake, bakal nyekel sawetara kahanan sing nyebabake prilaku sing ora ditemtokake nalika mbukak. Contone, ing kelas std :: span lan std :: vektor, akses sing metu saka wates bakal dipantau, lan program kasebut bakal nabrak. Pangembang percaya yen nambahake owah-owahan kasebut bakal tetep libc ++ tundhuk karo standar C ++, amarga pilihan kanggo nangani kasus prilaku sing ora ditemtokake dumunung ing pangembang perpustakaan, sing bisa uga, ing antarane, nerjemahake prilaku sing ora ditemtokake minangka kacilakan sing mbutuhake program kanggo metu.

Priksa runtime ing libc ++ direncanakake dipérang dadi kategori sing bisa dilebokake kanthi individu. Sawetara pamriksa sing disaranake sing ora nyebabake operasi sing luwih rumit utawa owah-owahan ABI wis ditindakake ing mode aman libc++.

Kajaba iku, direncanakake nyiyapake toolkit kanggo mbenerake kode kasebut, ngidini sampeyan ngganti variabel kanthi penunjuk kosong ing wadhah lan aplikasi panangan alternatif ing kahanan sing wadhah ora bisa langsung ngganti pointer (contone, "yen (array_pointer)" mbangun bisa diowahi kanggo "yen (span.data ()"). Pangaturan bisa Applied ora mung kanggo variabel lokal, nanging uga kanggo ngetik paramèter karo penunjuk.

Source: opennet.ru

Add a comment