ПлановС Π·Π° ΡƒΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° сигурност W^X Π² OpenBSD

Π’Π΅ΠΎ Π”Π΅ Π Π°Π΄Ρ‚ сподСлСни ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° подсили ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° W^X (Write XOR Execute). Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π΅, Ρ‡Π΅ страницитС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° процСса Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π° запис ΠΈ изпълнСниС. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΊΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС изпълнСн само слСд ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠΈΡΡŠΡ‚ Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½, Π° Π·Π°ΠΏΠΈΡΡŠΡ‚ Π² страница с ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ възмоТСн само слСд ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ W^X ΠΏΠΎΠΌΠ°Π³Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° прилоТСнията Π² потрСбитСлското пространство ΠΎΡ‚ чСсто срСщани Π°Ρ‚Π°ΠΊΠΈ Π·Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° стСка, ΠΈ Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π² OpenBSD ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

ΠžΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ W^X бСшС ясно, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ дълъг ΠΏΡŠΡ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ имашС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ Π±Ρ€ΠΎΠΉ прилоТСния, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ JIT. JIT ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ W ΠΈ X ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ, ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅ Π½Π° β€žΡ†Π΅Π½Π°Ρ‚Π°β€œ Π½Π° систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ mprotect.
  • БъздаванС Π½Π° псСвдоними ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΠΎΠΉΠΊΠ° W ΠΈ X прСобразувания Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° ΠΏΠ°ΠΌΠ΅Ρ‚.
  • Най-β€žΠΌΡ€ΡŠΡΠ½Π°Ρ‚Π°β€œ опция изисква W|X ΠΌΠΎΠ΄Π΅Π» ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ записванС ΠΈ изпълнСниС.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° опция ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΈ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ с W|X JIT (Π³Π»Π°Π²Π½ΠΎ Chromium ΠΈ Iridum), бСшС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° опция Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма "wxallowed", която позволява ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° запис, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° изпълнСниС, Π² случай Ρ‡Π΅ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡΡ‚ ELF Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° β€žwxneededβ€œ, Π° самитС прилоТСния са Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π°Π»ΠΎΠ³ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΠΌ Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° списъка с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ систСмни извиквания ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ части ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π—Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ услоТняванС Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° уязвимости Π² Ρ‚Π°ΠΊΠΈΠ²Π° прилоТСния сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° допълнСниС към ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° MAP_STACK, ΠΊΠΎΠΉΡ‚ΠΎ провСрява Π΄Π°Π»ΠΈ систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ сС изпълнява ΠΎΡ‚ страница с ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° запис. Ако страницата ΠΌΠΎΠΆΠ΅ Π΄Π° сС записва, ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ сС прСкратява ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ нападатСлят няма Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° систСмнитС повиквания ΠΈ Ρ‰Π΅ бъдС ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΈΡ‚ΡƒΡ€ΠΊΠΈ Π² ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° JIT ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° ΡΠ²ΡŠΡ€ΡˆΠΈ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΌΡŠΠ½ΠΈΡ‡Π΅Ρ‚Π° Π½Π° систСмни повиквания Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΡŠΡ‚Ρ€Π΅ случайно ΡΠ²ΡŠΡ€Π·Π°Π½ libc.

ΠŸΡ€ΠΎΡ†Π΅ΡΠΈΡ‚Π΅ Π½Π° Chrome/Iridium Π²Π΅Ρ‡Π΅ са доста Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° pledge ΠΈ unveil, Π½ΠΎ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° систСмното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ write(2) ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠΌΠ° извСстно прСдимство, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ създава Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ трудности Π·Π° нападатСля. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ трудности, Π°ΠΊΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° JIT ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° собствСни систСмни повиквания ΠΎΡ‚ W|X ΠΏΠ°ΠΌΠ΅Ρ‚. Има ΠΎΠ±Π°Ρ‡Π΅ основаниС Π΄Π° сС надявамС, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° няма Π΄Π° Π΅ Ρ‚Π°ΠΊΠ°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ABI Π΅ промСнян няколко ΠΏΡŠΡ‚ΠΈ, Π½ΠΎ Π½ΠΈΠΊΠΎΠΉ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π΅ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°Π» Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈΡ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΈ снимки Π½Π° ΠΊΠ»ΠΎΠ½Π° OpenBSD-Current, всички заинтСрСсовани са ΠΏΠΎΠΊΠ°Π½Π΅Π½ΠΈ Π΄Π° тСстват.

Π‘Π²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΈΠ½ΠΈ Π·Π° появата Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Π² Chrome/Iridium заслуТават ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ ΠΎΡ‚ Π’Π΅ΠΎ JITless. ΠžΡ‚ Π½Π΅Π³ΠΎΠ²Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ Π·Π° някои ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, Π½ΠΎ вСроятно Π½Π΅ Π·Π° всички, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‰Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора. ΠŸΠΎΠ½Π°ΡΡ‚ΠΎΡΡ‰Π΅ΠΌ Chrome Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΠΉ-Π²Π΅Ρ‡Π΅, Π°ΠΊΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ β€žwxallowedβ€œ Π·Π° /usr/local, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с някои Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ (ghostery Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€). По Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½, Π’Π΅ΠΎ сС надява, Ρ‡Π΅ ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌ JITless Ρ‰Π΅ бъдС Π΄ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎ напълно работоспособно ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π±ΡŠΠ΄Π΅Ρ‰Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€