Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π²Π΅ΡΡΠΈΡ 2.35 Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° GNU C Library (glibc), ΠΊΠΎΡΡΠΎ ΠΈΠ·ΡΡΠ»ΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ ISO C11 ΠΈ POSIX.1-2017. ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ ΠΎΡ 66 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ.
Π‘ΡΠ΅Π΄ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π² Glibc 2.35, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° βC.UTF-8β, ΠΊΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ Unicode ΠΊΠΎΠ΄ΠΎΠ²Π΅, Π½ΠΎ Π·Π° ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π° ΠΌΡΡΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° Π΄ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ASCII Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ fnmatch, regexec ΠΈ regcomp. ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π·Π°Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 400 ΠΠ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ 346 ΠΠ ΡΠ° Π΄Π°Π½Π½ΠΈ LC_CTYPE Π·Π° Unicode ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ (Π½Π΅ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π² Glibc).
- ΠΠ°Π½Π½ΠΈΡΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π·Π° ΡΡΠ°Π½ΡΠ»ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π±ΡΡ Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Unicode 14.0.0.
- Π
- Π
- Π
- ΠΠ° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ exp10 Π² Π·Π°Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΠ» Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅.
- Π Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ°ΠΊΡΠΎΡ _PRINTF_NAN_LEN_MAX, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π² ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° ISO C2X.
- Π ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ printf Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π·Π° ΡΠΎΡΠΌΠ°Ρ β%bβ ΠΈ β%Bβ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π° Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅.
- Π ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ DSO, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅ (DFS), Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ° ΠΈΠ·Π±ΠΎΡ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° DSO Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ glibc.rtld.dynamic_sort, Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ β1β Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ β__memcmpeqβ Π² ABI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° βmemcmpβ, Π² ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΡΡΠ°Π½ΠΎΡΠΎ ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΡΡΠ° Π½Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΠΎΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Π²ΠΈΠΊ rseq (restartable sequences), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 4.18. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΡ Π²ΠΈΠΊ rseq ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΡΡΠΏΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΡΠ²Π° ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΡΠ²ΡΡΠ΄ΡΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π² Π³ΡΡΠΏΠ°ΡΠ°. ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·ΠΎ Π°ΡΠΎΠΌΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ, Π°ΠΊΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΡΠ½Π°Ρ ΠΎΡ Π΄ΡΡΠ³ ΠΏΠΎΡΠΎΠΊ, ΡΠ΅ ΠΎΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ° Π½ΠΎΠ² ΠΎΠΏΠΈΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° /usr/bin/ld.so.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈΡ Π½Π°Π±ΠΎΡ Π² ΡΠ΅ΠΆΠΈΠΌ PIE (position independent executable). ΠΠ° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βdisable-default-pieΒ».
- ΠΠ° Linux Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° glibc.malloc.hugetlb, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° malloc Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Π²ΠΈΠΊ madvise Ρ ΡΠ»Π°Π³Π° MADV_HUGEPAGE Π·Π° mmap ΠΈ sbrk ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΏΠ°ΠΌΠ΅Ρ ΡΡΠ΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ»Π°Π³Π° MAP_HUGETLB Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° mmap. Π ΠΏΡΡΠ²ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π°ΠΊΠΎ Transparent Huge Pages ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΠ΅ΠΆΠΈΠΌ madvise, Π° Π²ΡΠ² Π²ΡΠΎΡΠΈΡ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ (Huge Pages).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° _dl_find_object, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅ΠΊΠ° Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ° (unwind).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° OpenRISC (or1k-linux-gnu) Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ (soft-float). ΠΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ° ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ binutils 2.35, GCC 11 ΠΈ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.4.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ Π·Π° ΡΠ±ΠΎΡΠΊΠ° Β«βwith-rtld-early-cflagsΒ», Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠΊΠ°ΠΆΠ°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠ°Π»Π½ΠΈΡ ΠΊΠΎΠ΄ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° epoll_pwait2, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° ΠΎΡ epoll_wait Ρ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠΌ-Π°ΡΡ Ρ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π½Π° ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎΡΡ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° posix_spawn_file_actions_addtcsetpgrp_np, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° ΡΡΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π·Π° Π½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ.
- ΠΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Ρ Glibc ΠΈ GCC 12+, Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° Π·Π°ΡΠΈΡΠ° Β«_FORTIFY_SOURCE=3Β», ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΊΡΠΈΠ²Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½ΠΈΡ Π½Π° Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² Π·Π°Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΠ» string.h. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° Β«_FORTIFY_SOURCE=2Β» ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° Intel MPX (Memory Protection Extensions), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ°Π½ΠΈΡΠΈ Π½Π° ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° (ΠΏΠΎΠΊΠ°Π·Π°Π½Π°ΡΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π΅ ΡΠ΅ Π΅ Π½Π°Π»ΠΎΠΆΠΈΠ»Π° ΠΈ Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° ΠΎΡ GCC ΠΈ LLVM).
- ΠΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡΡ prelink ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° LD_TRACE_PRELINKING ΠΈ LD_USE_LOAD_BIAS ΡΠ° ΠΎΠ±ΡΠ²Π΅Π½ΠΈ Π·Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°ΡΠΈ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅.
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ:
- CVE-2022-23218, CVE-2022-23219 β ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ svcunix_create ΠΈ clnt_create, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΎ ΠΎΡ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΠΈΠΌΠ΅ Π½Π° ΡΠ°ΠΉΠ» Π±Π΅Π· ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Π±Π΅Π· Π·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Β«unixΒ», ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΡΠ°ΡΡΠ½ΠΈΠΊ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ»Π³ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- CVE-2021-3998 β ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° realpath(), ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π²ΡΡΡΠ°Π½Π΅ Π½Π° Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° Π½Π΅ΠΏΠΎΡΠΈΡΡΠ΅Π½ΠΈ ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΡΠ΅ΠΊΠ°. ΠΠ° SUID-root ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° fusermount, ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
- CVE-2021-3999 β Π΅Π΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° getcwd(). ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ°, ΠΏΡΠΈΡΡΡΡΠ²Π°ΡΠ° ΠΎΡ 1995 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ° Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅, Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° chdir() Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Β«/Β» Π² ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
