70% ng mga problema sa seguridad sa Chromium ay sanhi ng mga error sa memorya

Mga developer ng proyekto ng Chromium sinuri 912 na may mataas na panganib at kritikal na mga kahinaan na natukoy sa mga stable na release ng Chrome mula noong 2015, at napagpasyahan na 70% sa mga ito ay sanhi ng kawalan ng seguridad sa memorya (mga error kapag nagtatrabaho sa mga pointer sa C/C++ code). Kalahati ng mga problemang ito (36.1%) ay sanhi ng mga pag-access sa buffer pagkatapos palayain ang memorya na nauugnay dito (gamit-pagkatapos-libre).

70% ng mga problema sa seguridad sa Chromium ay sanhi ng mga error sa memorya

Noong nagdidisenyo ng Chromium, ito ang una inilatag, na posibleng lumitaw ang mga error sa code, kaya binigyan ng malaking diin ang paggamit ng sandbox isolation upang limitahan ang mga kahihinatnan ng mga kahinaan. Sa kasalukuyan, ang mga posibilidad ng paggamit ng teknolohiyang ito ay umabot sa limitasyon ng kanilang mga kakayahan at ang karagdagang pagkapira-piraso sa mga proseso ay hindi praktikal mula sa punto ng view ng pagkonsumo ng mapagkukunan.

Upang mapanatili ang seguridad ng codebase, ipinapatupad din ng Google ang "panuntunan ng dalawaβ€œ, ayon sa kung saan dapat matugunan ng anumang idinagdag na code ang hindi hihigit sa dalawa sa tatlong kundisyon: pagtatrabaho sa hindi wastong data ng pag-input, paggamit ng hindi secure na programming language (C/C++) at pagpapatakbo nang may mataas na mga pribilehiyo. Ang panuntunang ito ay nagpapahiwatig na ang code para sa pagpoproseso ng panlabas na data ay dapat na bawasan sa kaunting mga pribilehiyo (nakahiwalay) o nakasulat sa isang secure na programming language.

Upang higit na mapahusay ang seguridad ng code base, isang proyekto ang inilunsad upang maiwasan ang mga error sa memorya na lumitaw sa code base. Mayroong tatlong pangunahing diskarte: paglikha ng mga aklatan ng C++ na may mga function para sa ligtas na operasyon ng memorya at pagpapalawak ng saklaw ng kolektor ng basura, gamit ang mga mekanismo ng proteksyon ng hardware MTE (Memory Tagging Extension) at pagsusulat ng mga bahagi sa mga wika na nagsisiguro ng ligtas na trabaho gamit ang memorya (Java, Kotlin, JavaScript, Rust, Swift).

Inaasahan na ang trabaho ay nakatuon sa dalawang lugar:

  • Malaking pagbabago sa proseso ng pag-develop ng C++, na hindi nagbubukod ng negatibong epekto sa pagganap (mga karagdagang pagsusuri sa hangganan at pangongolekta ng basura). Sa halip na mga hilaw na pointer, iminungkahi na gamitin ang uri MiraclePtr, na nagbibigay-daan sa iyong bawasan ang mga mapagsamantalang error pagkatapos ng paggamit sa mga pag-crash na hindi nagdudulot ng banta sa seguridad, nang walang kapansin-pansing negatibong epekto sa pagganap, pagkonsumo ng memorya at katatagan.
  • Ang paggamit ng mga wika na idinisenyo upang magsagawa ng mga pagsusuri sa kaligtasan ng memorya sa oras ng pag-compile (aalisin ang negatibong epekto sa pagganap na likas sa mga naturang pagsusuri sa panahon ng pagpapatupad ng code, ngunit hahantong sa mga karagdagang gastos para sa pag-aayos ng pakikipag-ugnayan ng code sa isang bagong wika na may code sa C++).

Ang paggamit ng mga library na ligtas sa memorya ay ang pinakasimpleng, ngunit hindi gaanong mahusay na paraan. Ang muling pagsulat ng code sa Rust ay na-rate bilang ang pinaka-epektibo, ngunit napakamahal din na paraan.

70% ng mga problema sa seguridad sa Chromium ay sanhi ng mga error sa memorya

Pinagmulan: opennet.ru

Magdagdag ng komento