Chromium'дагы коопсуздук көйгөйлөрүнүн 70% эстутум мүчүлүштүктөрү менен шартталган

Chromium долбоорун иштеп чыгуучулар талдоо 912-жылдан бери Chrome'дун туруктуу релиздеринде 2015 жогорку кооптуу жана критикалык алсыздыктар аныкталган жана алардын 70% эстутумдун кооптуулугунан (C/C++ кодундагы көрсөткүчтөр менен иштөөдөгү каталар) келип чыккан деген жыйынтыкка келишкен. Бул көйгөйлөрдүн жарымы (36.1%) аны менен байланышкан эстутумду бошоткондон кийин буферге кирүүдөн келип чыгат (пайдалануу-акысыз).

Chromium'дагы коопсуздук көйгөйлөрүнүн 70% эстутум мүчүлүштүктөрү менен шартталган

Chromium иштеп жатканда, ал башында эле коюлган, коддо каталар пайда болушу мүмкүн экендигине байланыштуу, алсыздыктын кесепеттерин чектөө үчүн кумдук обочолонууну колдонууга чоң басым жасалган. Азыркы учурда, бул технологияны колдонуу мүмкүнчүлүктөрү алардын мүмкүнчүлүктөрүнүн чегине жетти жана андан ары процесстерге бөлүнүү ресурстарды керектөө көз карашынан алганда иш жүзүндөгү эмес.

Код базасынын коопсуздугун сактоо үчүн Google дагы "эки эреже", ага ылайык ар кандай кошулган код үч шарттын экөөнөн ашпоого тийиш: текшерилбеген киргизүү маалыматтары менен иштөө, кооптуу программалоо тилин (C/C++) колдонуу жана жогорулатылган артыкчылыктар менен иштөө. Бул эреже тышкы маалыматтарды иштетүү үчүн кодду же минималдуу артыкчылыктарга чейин кыскартуу (обочолонгон) же коопсуз программалоо тилинде жазуу керек экенин билдирет.

Код базасынын коопсуздугун андан ары жогорулатуу үчүн код базасында эстутум каталарынын пайда болушуна жол бербөө боюнча долбоор ишке киргизилди. Үч негизги ыкма бар: эстутумдун коопсуз иштеши үчүн функциялары бар C++ китепканаларын түзүү жана аппараттык коргоо механизмдерин колдонуу менен таштанды жыйноочу чөйрөнү кеңейтүү АТП (Memory Tagging Extension) жана эс менен коопсуз иштөөнү камсыз кылган тилдерде жазуу компоненттери (Java, Kotlin, JavaScript, Rust, Swift).

Иш эки багытка багытталат деп күтүлүүдө:

  • C++ иштеп чыгуу процессине олуттуу өзгөртүүлөр киргизилди, бул көрсөткүчкө терс таасирин тийгизбейт (кошумча чектерди текшерүү жана таштандыларды чогултуу). Чийки көрсөткүчтөрдүн ордуна түрүн колдонуу сунушталат MiraclePtr, бул коопсуздукка коркунуч туудурбаган каталарды колдонуудан кийинки каталарды кыскартууга мүмкүндүк берет, иштөөгө, эстутум керектөөсүнө жана туруктуулугуна олуттуу терс таасирин тийгизбестен.
  • Компиляция убагында эс тутумдун коопсуздугун текшерүү үчүн иштелип чыккан тилдерди колдонуу (кодду аткаруу учурунда мындай текшерүүлөргө мүнөздүү болгон терс таасирин жок кылат, бирок код менен жаңы тилде коддун өз ара аракеттенүүсүн уюштуруу үчүн кошумча чыгымдарга алып келет) C++).

Эстутум үчүн коопсуз китепканаларды колдонуу эң жөнөкөй, бирок эффективдүү эмес жол. Rust кодун кайра жазуу эң эффективдүү, бирок ошондой эле абдан кымбат жол катары бааланат.

Chromium'дагы коопсуздук көйгөйлөрүнүн 70% эстутум мүчүлүштүктөрү менен шартталган

Source: opennet.ru

Комментарий кошуу