70% masalah kaamanan di Chromium disababkeun ku bug memori

Pamekar kromium dianalisis 912 kerentanan bahaya sareng kritis anu diidentipikasi dina sékrési stabil Chrome ti saprak 2015, sareng nyimpulkeun yén 70% di antarana disababkeun ku panangan mémori anu teu aman (kasalahan nalika damel sareng petunjuk dina kode C / C ++). Satengah tina masalah ieu (36.1%) disababkeun ku panggero ka panyangga sanggeus mémori pakait sareng eta geus dibébaskeun (pamakéan-sanggeus-gratis).

70% masalah kaamanan di Chromium disababkeun ku bug memori

Nalika ngarancang Chromium, éta asalna diteundeun handapyén bug teu maréntah kaluar dina kode, jadi bet badag dijieun dina pamakéan isolasi sandbox pikeun ngawatesan konsékuansi tina manifestasi vulnerabilities. Ayeuna, kamungkinan ngagunakeun téknologi ieu parantos dugi ka wates kamampuanana, sareng ngabagi langkung seueur kana prosés henteu pantes tina sudut pandang konsumsi sumberdaya.

Pikeun ngajaga kaamanan basis kode, Google ogé ngalaksanakeun "aturan dua", numutkeun mana wae kode anu ditambahkeun kedah nyumponan henteu langkung ti dua tina tilu kaayaan: damel sareng input anu teu diverifikasi, nganggo basa pamrograman anu teu aman (C / C ++), sareng ngajalankeun kalayan hak husus anu luhur. Ieu nuturkeun tina aturan ieu yén kode pikeun nanganan data éksternal kudu boh dilucuti handap kana hak husus minimum (terasing) atawa ditulis dina basa programming aman.

Pikeun leuwih nguatkeun kaamanan codebase nu, hiji proyék geus dibuka pikeun nyegah lumangsungna kasalahan memori dina codebase nu. Aya tilu pendekatan utama: nyiptakeun perpustakaan C ++ kalayan fungsi pikeun damel anu aman sareng mémori sareng ngalegaan ruang lingkup tukang sampah, nganggo mékanisme panyalindungan hardware. MTE (Memory Tagging Extension) sareng nyerat komponén dina basa anu nyayogikeun mémori anu aman (Java, Kotlin, JavaScript, Rust, Swift).

Karya diperkirakeun difokuskeun kana dua daérah:

  • Parobahan signifikan dina prosés ngembangkeun C ++, teu tanpa dampak kinerja négatip (tambahan cék wates jeung kempelan sampah). Gantina pointers atah, eta diusulkeun ngagunakeun tipe dina kode KaajaibanPtr, nu ngidinan Anjeun pikeun ngurangan exploitable pamakéan-sanggeus-gratis kasalahan kelas kana kacilakaan non-kaamanan-ngancam, tanpa dampak négatip noticeable on kinerja, konsumsi memori, jeung stabilitas.
  • Pamakéan basa dirancang pikeun ngalakukeun cék memori-aman dina waktos kompilasi (bakal ngaleungitkeun dampak negatif kana kinerja alamiah dina cék misalna dina runtime, tapi bakal ngakibatkeun waragad tambahan pikeun ngatur interaksi kode dina basa anyar jeung kode dina. C++).

Ngagunakeun perpustakaan-memori-aman nyaeta cara pangbasajanna, tapi ogé kirang efisien. Nulis ulang kode dina Rust dipeunteun salaku cara paling éfisién, tapi ogé pohara mahal.

70% masalah kaamanan di Chromium disababkeun ku bug memori

sumber: opennet.ru

Tambahkeun komentar