Theo de Raadt Π΄ΠΎΠ±Π°Π²ΠΈ ΡΠ΅ΡΠΈΡ ΠΎΡ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ ΠΊΡΠΌ ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° OpenBSD, Π·Π° Π΄Π° Π·Π°ΡΠΈΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½ΠΎΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΠΈ ΡΠ²ΡΡΠ·Π°Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡ ΡΡΡΠΎΡΠΎ ΠΈΠΌΠ΅, mimmutable, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ°Π²Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈ ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° (ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°). Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅, ΠΏΡΠ°Π²Π°ΡΠ°, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΠΎΠ±Π»Π°ΡΡ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π±ΡΠ°Π½Π° Π·Π° ΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΡΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ mmap(), mprotect() ΠΈ munmap(), ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠ° EPERM ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
ΠΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° ΠΎΡΡΠ°Π·Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π·Π° ΠΎΠ±Π΅ΠΊΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° BSS ΡΠ΅ΠΊΡΠΈΡ (.openbsd.mutable, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ² Π½Π°ΡΠ°Π»Π΅Π½ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π° Π±Π»ΠΎΠΊ) ΠΈ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅ PF_MUTABLE ΠΈ UVM_ET_IMMUTABLE. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΊΡΠΌ Π»ΠΈΠ½ΠΊΠ΅ΡΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈ "openbsd.mutable" ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ ΠΈΠΌ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΠΎΠ±Π»Π°ΡΡ Π² BSS, ΠΏΠΎΠ΄ΡΠ°Π²Π½Π΅Π½Π° ΠΊΡΠΌ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ. Π§ΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° mimmutable Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠ°ΡΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΈ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈΡΠ΅, ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Ρ "openbsd.mutable". ΠΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ OpenBSD 7.3.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru