ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Checkpoint ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π·Π°ΡΠΈΡΡ Safe-Linking, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΠ»ΠΎΠΆΠ½ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠΎΠ², ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΡΡΠΈΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π±ΡΡΠ΅ΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π° malloc. Safe-Linking ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½ΠΎ ΠΏΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ
Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ
ΡΠ°ΡΡ
ΠΎΠ΄Π°Ρ
ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΡΠ΅ΡΠΊΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΡΡΠΈ (heap) Π² ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°ΡΡΠΈ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Safe-Linking ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π»Ρ Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ΠΈ Google TCMalloc, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΡΠΈΡΡ Π² Chromium (Π²
Chromium Ρ 2012 Π³ΠΎΠ΄Ρ ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π° Π½Π°ΡΠ΅Π»Π΅Π½Π½Π°Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° Π·Π°ΡΠΈΡΡ MaskPtr, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Checkpoint Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ).
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΡΠΈ ΡΠΆΠ΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π² Π°Π²Π³ΡΡΡΠΎΠ²ΡΠΊΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Glibc 3.32 ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Safe-Linking Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π uClibc-NG ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Safe-Linking Π²ΠΎΡΠ»Π° Π² ΡΠΎΡΡΠ°Π² Π²ΡΠΏΡΡΠΊΠ° 1.0.33 ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π gperftools (ΡΡΠ°ΡΡΠΉ tcmalloc) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ½ΡΡΡ, Π½ΠΎ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π±ΡΠ΄ΡΡΠΈΡ
Π²ΡΠΏΡΡΠΊΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΡΠΈΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ TCMalloc (Π½ΠΎΠ²ΡΠΉ tcmalloc) ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΏΡΠΈΠ½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΠΎΡΠ»Π°Π²ΡΠΈΡΡ Π½Π° ΡΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ
ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌΠΈ Checkpoint ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Safe-Linking Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ°ΡΡ
ΠΎΠ΄Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΊΡΡΠ΅ΠΉ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΡΠ½ΠΈΠΆΠ°Π΅ΡΡΡ Π»ΠΈΡΡ Π½Π° 0.02%, Π° ΠΏΡΠΈ Π½Π°ΠΈΡ
ΡΠ΄ΡΠ΅ΠΌ ΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ² Π½Π° 1.5% (Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌ Π² Chromium ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ «ΠΌΠ΅Π½ΡΡΠ΅ 2%»). ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Safe-Linking ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ 2-3 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΡ
ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ free() ΠΈ 3-4 ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ malloc(). ΠΠ°ΠΏΡΡΠΊ ΡΡΠ°Π΄ΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
Safe-Linking ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΊΡΡΠΈ (heap), Π½ΠΎ ΠΈ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π² Π»ΡΠ±ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ ΡΡΠ΄ΠΎΠΌ Ρ ΡΠ°ΠΌΠΈΠΌΠΈ Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ. ΠΠ΅ΡΠΎΠ΄ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π»ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π»ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Glibc ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅). ΠΠ΅ΡΠΎΠ΄ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ:
+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))
+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)
— nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
…
Π‘ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ² ASLR (mmap_base) Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Fast-Bins ΠΈ TCache. ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡΠΊΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «(L >> PAGE_SHIFT) XOR (P)», Π³Π΄Π΅ P — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° L — ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π³Π΄Π΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ ΡΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ASLR (Address Space Layout Randomization) ΡΠ°ΡΡΡ Π±ΠΈΡΠΎΠ² L Ρ Π±Π°Π·ΠΎΠ²ΡΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΊΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ P (ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ΄Π²ΠΈΠ³Π° Π½Π° 12 Π±ΠΈΡ Π΄Π»Ρ 4096-Π±Π°ΠΉΡΠΎΠ²ΡΡ
ΡΡΡΠ°Π½ΠΈΡ). ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΈΡΠΊ Π·Π°Ρ
Π²Π°ΡΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π΄Π»Ρ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ°ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π·Π½Π°Π½ΠΈΡ ΡΠΈΡΠ»Π° Π±ΠΈΡ Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π° 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ 15 ΠΈΠ· 16 ΠΏΠΎΠΏΡΡΠΎΠΊ Π°ΡΠ°ΠΊ, Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΡ
Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.
ΠΠ΅ΡΠΎΠ΄ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π°ΡΠ°ΠΊ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ»Π°Π΄ΡΠΈΡ
Π±Π°ΠΉΡΠΎΠ²), ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ) ΠΈ ΡΠΌΠ΅Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎ Π½Π΅Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Safe-Linking Π² malloc ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ CVE-2020-6007 Π² ΡΠΌΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ΅ Philips Hue Bridge, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru