70% мушкилоти амниятӣ дар Chromium аз хатогиҳои хотира ба вуҷуд меоянд

Таҳиягарони лоиҳаи Chromium таҳлил кард 912 осебпазирии дорои хатари баланд ва муҳимро дар версияҳои устувори Chrome аз соли 2015 муайян карданд ва ба хулосае омаданд, ки 70% онҳо аз ноамнии хотира (хатоҳо ҳангоми кор бо нишонаҳо дар рамзи C/C++) ба вуҷуд омадаанд. Нисфи ин мушкилот (36.1%) дар натиҷаи дастрасӣ ба буфер пас аз озод кардани хотираи бо он алоқаманд (пайдо аз истифода) ба вуҷуд меояд.

70% мушкилоти амниятӣ дар Chromium аз хатогиҳои хотира ба вуҷуд меоянд

Ҳангоми тарҳрезии Chromium он дар аввал буд гузошта шудааст, ки имкон дорад, ки хатогиҳо дар код пайдо шаванд, аз ин рӯ ба истифодаи изолятсияи қуттии рег барои маҳдуд кардани оқибатҳои осебпазирӣ диққати калон дода шуд. Айни замон имкони истифодаи ин технология ба ҳадди имкони худ расидааст ва тақсимоти минбаъда ба равандҳо аз нуқтаи назари истеъмоли захираҳо ғайриимкон аст.

Барои нигоҳ доштани амнияти пойгоҳи код, Google инчунин "ҳукмронии ду", ки мувофиқи он ҳама рамзи иловашуда бояд на бештар аз ду аз се шартро қонеъ созад: кор бо маълумоти воридшудаи беэътибор, бо истифода аз забони барномасозии ноамн (C/C++) ва кор бо имтиёзҳои баланд. Ин қоида маънои онро дорад, ки код барои коркарди додаҳои беруна бояд ба ҳадди ақал имтиёзҳо (ҷудо) кам карда шавад ё бо забони барномасозии бехатар навишта шавад.

Барои боз ҳам баланд бардоштани амнияти пойгоҳи код, лоиҳа барои пешгирии пайдо шудани хатогиҳои хотира дар пойгоҳи код оғоз шудааст. Се равиши асосӣ вуҷуд дорад: эҷоди китобхонаҳои C++ бо функсияҳои амалиёти бехатари хотира ва васеъ кардани доираи коллектори партовҳо, бо истифода аз механизмҳои муҳофизати сахтафзор Mte (Extension Tagging Memory) ва ҷузъҳои навиштан бо забонҳое, ки кори бехатарро бо хотира таъмин мекунанд (Java, Kotlin, JavaScript, Rust, Swift).

Интизор меравад, ки кор дар ду самт равона карда шавад:

  • Тағйироти назаррас дар раванди таҳияи C++, ки таъсири манфиро ба иҷроиш истисно намекунад (тафтишҳои иловагӣ ва ҷамъоварии партовҳо). Ба ҷои нишондиҳандаҳои хом, истифода бурдани намуд пешниҳод карда мешавад MiraclePtr, ки ба шумо имкон медиҳад, ки хатогиҳои истисморшавандаи пас аз озодро то садамаҳо, ки ба амният таҳдид намекунанд, бидуни таъсири манфии назаррас ба кор, истеъмоли хотира ва устуворӣ кам кунед.
  • Истифодаи забонҳое, ки барои анҷом додани санҷишҳои бехатарии хотира дар вақти компиляция тарҳрезӣ шудаанд (таъсири манфиро ба иҷрои ин санҷишҳо ҳангоми иҷрои код бартараф мекунад, аммо боиси хароҷоти иловагӣ барои ташкили ҳамкории код бо забони нав бо код мегардад. C++).

Истифодаи китобхонаҳои аз хотираи бехатар осонтарин роҳи осон, вале камсамар аст. Навиштани код дар Rust ҳамчун роҳи самараноктарин, вале хеле гаронбаҳо арзёбӣ мешавад.

70% мушкилоти амниятӣ дар Chromium аз хатогиҳои хотира ба вуҷуд меоянд

Манбаъ: opennet.ru

Илова Эзоҳ