Chromium-da təhlükəsizlik problemlərinin 70%-i yaddaş səhvlərindən qaynaqlanır

Chromium layihəsinin tərtibatçıları təhlil edilmişdir 912-ci ildən Chrome-un stabil buraxılışlarında 2015 yüksək riskli və kritik boşluq müəyyən edilib və belə qənaətə gəliblər ki, onların 70%-i yaddaşın etibarsızlığı ilə (C/C++ kodunda göstəricilərlə iş zamanı xətalar) səbəb olub. Bu problemlərin yarısı (36.1%) onunla əlaqəli yaddaşın boşaldılmasından sonra buferə girişlərdən qaynaqlanır (istifadədən sonra).

Chromium-da təhlükəsizlik problemlərinin 70%-i yaddaş səhvlərindən qaynaqlanır

Chromium-u dizayn edərkən əvvəlcə idi Uzanmaqkodda səhvlərin görünə biləcəyini nəzərə alaraq, zəifliklərin nəticələrini məhdudlaşdırmaq üçün sandbox izolyasiyasının istifadəsinə böyük diqqət yetirildi. Hal-hazırda bu texnologiyadan istifadə imkanları öz imkanlarının həddinə çatmışdır və resurs istehlakı baxımından proseslərə daha da parçalanması praktiki deyil.

Kod bazasının təhlükəsizliyini qorumaq üçün Google həmçinin "iki qayda“, buna görə hər hansı əlavə edilmiş kod üç şərtdən ən çoxu ikisinə cavab verməlidir: təsdiqlənməmiş giriş məlumatları ilə işləmək, etibarlı olmayan proqramlaşdırma dilindən (C/C++) istifadə etmək və yüksək imtiyazlarla işləmək. Bu qayda o deməkdir ki, xarici məlumatların emalı üçün kod ya minimal imtiyazlara endirilməlidir (təcrid olunmuş) və ya təhlükəsiz proqramlaşdırma dilində yazılmalıdır.

Kod bazasının təhlükəsizliyini daha da artırmaq üçün kod bazasında yaddaş xətalarının yaranmasının qarşısını almaq üçün layihəyə start verilib. Üç əsas yanaşma var: yaddaşın təhlükəsiz işləməsi üçün funksiyaları olan C++ kitabxanalarının yaradılması və hardware mühafizə mexanizmlərindən istifadə edərək zibil kollektorunun əhatə dairəsinin genişləndirilməsi. Mte (Memory Tagging Extension) və yaddaşla təhlükəsiz işləməyi təmin edən dillərdə yazı komponentləri (Java, Kotlin, JavaScript, Rust, Swift).

İşin iki istiqamətdə cəmlənəcəyi gözlənilir:

  • Performansın mənfi təsirini istisna etməyən C++ inkişaf prosesində əhəmiyyətli dəyişiklik (əlavə sərhədlərin yoxlanılması və zibilin toplanması). Xam göstəricilər əvəzinə tipdən istifadə etmək təklif olunur MiraclePtr, bu, performansa, yaddaş istehlakına və sabitliyə nəzərəçarpacaq mənfi təsir göstərmədən, istifadədən sonra istifadə edilə bilən səhvləri təhlükəsizlik təhlükəsi yaratmayan qəzalara qədər azaltmağa imkan verir.
  • Kompilyasiya zamanı yaddaş təhlükəsizliyi yoxlamalarını yerinə yetirmək üçün nəzərdə tutulmuş dillərdən istifadə (kod icrası zamanı bu cür yoxlamalara xas olan performansa mənfi təsirləri aradan qaldıracaq, lakin kodun yeni dildə kodla qarşılıqlı əlaqəsini təşkil etmək üçün əlavə xərclərə səbəb olacaqdır. C++).

Yaddaş üçün təhlükəsiz kitabxanalardan istifadə ən sadə, lakin eyni zamanda daha az səmərəli yoldur. Rust-da kodun yenidən yazılması ən effektiv, eyni zamanda çox bahalı yol kimi qiymətləndirilir.

Chromium-da təhlükəsizlik problemlərinin 70%-i yaddaş səhvlərindən qaynaqlanır

Mənbə: opennet.ru

Добавить комментарий