Π’ OpenBSD приняты измСнСния для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ памяти процСссов

Вэо Π΄Π΅ Π Π°Π°Π΄Ρ‚ (Theo de Raadt) Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ OpenBSD ΡΠ΅Ρ€ΠΈΡŽ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ памяти процСссов Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ систСмный Π²Ρ‹Π·ΠΎΠ² ΠΈ связанная с Π½ΠΈΠΌ одноимённая библиотСчная функция mimmutable, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа ΠΏΡ€ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ (memory mappings). ПослС фиксации, выставлСнныС для области памяти ΠΏΡ€Π°Π²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π° запись ΠΈ исполнСниС, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² дальнСйшСм ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ mmap(), mprotect() ΠΈ munmap(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ EPERM.

Для управлСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²Π° ΠΎΡ‚Ρ€Π°ΠΆΡ‘Π½Π½ΠΎΠΉ памяти для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° новая сСкция Mutable BSS (.openbsd.mutable, Mutable Block Starting Symbol), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ PF_MUTABLE ΠΈ UVM_ET_IMMUTABLE. Π’ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° опрСдСлСния сСкций «openbsd.mutable» ΠΈ размСщСния ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π² BSS, Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΡƒΡŽ ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π΅ страницы памяти. Π§Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mimmutable прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ всСх ΠΎΡ‚Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹Ρ… областСй ΠΊΠ°ΠΊ нСизмСняСмых (immutable), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ сСкций, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ «openbsd.mutable». Новая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΄ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² выпускС OpenBSD 7.3.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ