2.35๊ฐ์ ๊ฐ์ ๊ฐ๋ฐ ๋์ ISO C11 ๋ฐ POSIX.1-2017 ํ์ค์ ์๊ตฌ ์ฌํญ์ ์์ ํ ์ค์ํ๋ GNU C ๋ผ์ด๋ธ๋ฌ๋ฆฌ(glibc) 66 ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถ์๋์์ต๋๋ค. ์ ๋ฆด๋ฆฌ์ค์๋ XNUMX๋ช ์ ๊ฐ๋ฐ์๊ฐ ์์ ํ ์ฌํญ์ด ํฌํจ๋์ด ์์ต๋๋ค.
Glibc 2.35์ ๊ตฌํ๋ ์ผ๋ถ ๊ฐ์ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ ์ ๋์ฝ๋ ์ฝ๋์ ๋ํ ์กฐํฉ ๊ท์น์ ํฌํจํ๋ "C.UTF-8" ๋ก์ผ์ผ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ง๋ง ๊ณต๊ฐ์ ์ ์ฝํ๊ธฐ ์ํด fnmatch, regexec ๋ฐ regcomp ํจ์์์ ASCII ๋ฒ์์ ์ฌ์ฉ์ผ๋ก ์ ํ๋์์ต๋๋ค. ๋ก์ผ์ผ์ ์ฝ 400KB์ด๋ฉฐ ๊ทธ ์ค 346KB๋ ์ ๋์ฝ๋์ฉ LC_CTYPE ๋ฐ์ดํฐ์ด๋ฉฐ ๋ณ๋ ์ค์น๊ฐ ํ์ํฉ๋๋ค(Glibc์ ๋ด์ฅ๋์ด ์์ง ์์).
- ์ธ์ฝ๋ฉ ๋ฐ์ดํฐ, ๋ฌธ์ ์ ํ ์ ๋ณด ๋ฐ ์์ญ ํ๊ฐ ์ ๋์ฝ๋ 14.0.0 ์ฌ์์ ์ง์ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- ์์ ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ข์ ์ ํ(fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN, fMfmafNx, fMxfmafN ๋ฐ fMxfmafNx)์ผ๋ก ๋ฐ์ฌ๋ฆผํ๋ ํจ์ ๋ฐ ๋งคํฌ๋ก๊ฐ ๊ตฌํ๋ฉ๋๋ค. ๊ธฐ๋ฅ์ TS 18661-1:2014, TS 18661-3:2015 ์ฌ์์ ์ค๋ช ๋์ด ์์ผ๋ฉฐ ํฅํ ISO C2X C ํ์ค ์ด์์ ์ถ๊ฐ๋ฉ๋๋ค.
- ์์ ๊ทธ๋ฆฌ๊ณ IEEE 754-2019 ์ฌ์์ ์ค๋ช ๋์ด ์๊ณ ํฅํ ISO C2X C ํ์ค ์ด์์ ์ถ๊ฐ๋ float, long double, _FloatN ๋ฐ _FloatNx ์ ํ์ ์ฌ์ฉํ์ฌ ๋ถ๋ ์์์ ์ซ์์ ์ต์ ๋ฐ ์ต๋๊ฐ์ ์ฐพ๊ธฐ ์ํ ํจ์ ๋ฐ ๋งคํฌ๋ก๋ฅผ ๊ตฌํํ์ต๋๋ค: fmaximum, fmaximum_num , fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
- ์์ ๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์์ ๋ํ ์์ ์ถ๊ฐ: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f ๋ฐ M_SQRT1_2f.
- ํค๋ ํ์ผ์ ํจ์ exp10์ ๊ฒฝ์ฐ ํน์ ์ ํ์ ์ฐ๊ฒฐ๋์ง ์์ ํด๋น ๋งคํฌ๋ก๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์์ ISO C2X ํ์ค ์ด์์์ ์ ์๋ _PRINTF_NAN_LEN_MAX ๋งคํฌ๋ก๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ด์ง ํํ์ผ๋ก ์ ์๋ฅผ ์ธ์ํ๊ธฐ ์ํด printf ํจ์ ๊ณ์ด์ "%b" ๋ฐ "%B" ํ์ ์ง์ ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋์ ์ฐ๊ฒฐ ์์คํ ์ ๊น์ด ์ฐ์ ๊ฒ์(DFS)์ ์ฌ์ฉํ์ฌ ๋ฃจํ ์ข ์์ฑ์ ์ฒ๋ฆฌํ ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๋ก์ด DSO ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํฉ๋๋ค. DSO ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๊ธฐ ์ํด glibc.rtld.dynamic_sort ๋งค๊ฐ๋ณ์๊ฐ ์ ์๋๋ฉฐ, ์ด ๋งค๊ฐ๋ณ์๋ฅผ "1"๋ก ์ค์ ํ์ฌ ์ด์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
- ABI๋ ์ด ํจ์์์ ๋ฐํ๋ ๊ฐ์ด ์์ ์๋ฃ ์ํ๋ฅผ ํ์ธํ๋ ๋ฐ๋ง ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ 'memcmp' ์ฌ์ฉ์ ์ต์ ํํ๊ธฐ ์ํด ์ปดํ์ผ๋ฌ์์ ์ฌ์ฉํ๋ ์๋ก์ด ํจ์ '__memcmpeq'์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
- Linux ์ปค๋ 4.18๋ถํฐ ์ ๊ณต๋๋ rseq(๋ค์ ์์ ๊ฐ๋ฅ ์ํ์ค) ์์คํ ํธ์ถ์ ์ฌ์ฉํ์ฌ ์ค๋ ๋๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. rseq ์์คํ ํธ์ถ์ ์ฌ์ฉํ๋ฉด ์ค๋จ๋์ง ์๋ ๋ช ๋ น์ด ๊ทธ๋ฃน์ ์ฐ์ ์คํ์ ๊ตฌ์ฑํ๊ณ ๊ทธ๋ฃน์ ๋ง์ง๋ง ๋ช ๋ น์ด๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ ๋ค๋ฅธ ์ค๋ ๋์ ์ํด ์ค๋จ๋ ๊ฒฝ์ฐ ์ ๋ฆฌ๋๊ณ ๋ค์ ์๋๋๋ ์์ ์ ๋งค์ฐ ๋น ๋ฅธ ์์ ์คํ ์๋จ์ ์ ๊ณตํฉ๋๋ค.
- ์ฌ๋ณผ๋ฆญ ๋งํฌ /usr/bin/ld.so๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์๋ฒ ๋๋ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์คํ ํ์ผ๊ณผ PIE(์์น ๋ ๋ฆฝ์ ์คํ ํ์ผ) ๋ชจ๋์ ํ ์คํธ ์ธํธ์ ๋ํ ๊ธฐ๋ณธ ์ด์ ๋ธ๋ฆฌ๊ฐ ์ ๊ณต๋ฉ๋๋ค. ์ด ๋์์ ๋นํ์ฑํํ๊ธฐ ์ํด "--disable-default-pie" ์ต์ ์ด ์ ๊ณต๋ฉ๋๋ค.
- Linux์ ๊ฒฝ์ฐ, mmap ๋ฐ sbrk์ ๋ํ MADV_HUGEPAGE ํ๋๊ทธ์ ํจ๊ป madvise ์์คํ ํธ์ถ์ ์ฌ์ฉํ๊ฑฐ๋ mmap์ MAP_HUGETLB ํ๋๊ทธ๋ฅผ ์ง์ ํ์ฌ ๋์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ ์ง์ ์ฌ์ฉํ๋๋ก malloc ๊ตฌํ์ ์ ํํ ์ ์๋๋ก glibc.malloc.hugetlb ์ค์ ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ ํ. ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ Transparent Huge Pages๋ฅผ madvise ๋ชจ๋์์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์์ผ๋ฉฐ, ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์์คํ ์ ์์ฝ๋ Huge Pages๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
- ํธ์ถ ์คํ ํด์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ _dl_find_object ํจ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์ํํธ ํ๋กํธ ๋ชจ๋์์ OpenRISC ์ํคํ ์ฒ(๋๋1k-linux-gnu)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ํฌํธ์๋ 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+๋ก ์ปดํ์ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ string.h ํค๋ ํ์ผ์ ์ ์๋ ๋ฌธ์์ด ํจ์๋ฅผ ์คํํ ๋ ๊ฐ๋ฅํ ๋ฒํผ ์ค๋ฒํ๋ก๋ฅผ ๊ฐ์งํ๋ "_FORTIFY_SOURCE=3" ๋ณดํธ ๋ชจ๋๊ฐ ๊ตฌํ๋ฉ๋๋ค. "_FORTIFY_SOURCE=2" ๋ชจ๋์์ ์ฐจ์ด์ ์ ์ถ๊ฐ ๊ฒ์ฌ๋ก ์ธํด ์ ์ฌ์ ์ผ๋ก ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ์ ๋ํ ํฌ์ธํฐ๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋๋ Intel MPX(Memory Protection Extensions)์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค(์ด ๊ธฐ์ ์ ๋๋ฆฌ ๋ณด๊ธ๋์ง ์์์ผ๋ฉฐ ์ด๋ฏธ GCC ๋ฐ LLVM์์ ์ ๊ฑฐ๋์์ต๋๋ค).
- ์ฌ์ ๋งํฌ ๋ฉ์ปค๋์ฆ๊ณผ ๊ด๋ จ ํ๊ฒฝ ๋ณ์ LD_TRACE_PRELINKING ๋ฐ LD_USE_LOAD_BIAS๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์
๋๋ค.
์์ ๋ ์ทจ์ฝ์ :
- CVE-2022-23218, CVE-2022-23219 โ ๋ณต์ฌ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ํ์ธํ์ง ์๊ณ filename ๋งค๊ฐ๋ณ์์ ๋ด์ฉ์ ์คํ์ ๋ณต์ฌํ์ฌ ๋ฐ์ํ๋ svcunix_create ๋ฐ clnt_create ํจ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ ๋๋ค. ์คํ ๋ณดํธ ์์ด "unix" ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ๋งค์ฐ ๊ธด ํ์ผ ์ด๋ฆ์ ์ฒ๋ฆฌํ ๋ ์ทจ์ฝ์ ์ผ๋ก ์ธํด ๊ณต๊ฒฉ์ ์ฝ๋๊ฐ ์คํ๋ ์ ์์ต๋๋ค.
- CVE-2021-3998์ ํน์ ์กฐ๊ฑด์์ ์คํ์ ์ ๋ฆฌ๋์ง ์์ ์์ฌ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์๋ชป๋ ๊ฐ์ ๋ฐํ์ผ๋ก ์ธํด ๋ฐ์ํ๋ realpath() ํจ์์ ์ทจ์ฝ์ ์ ๋๋ค. SUID-root Fusermount ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์์ ๋ฏผ๊ฐํ ์ ๋ณด(์: ํฌ์ธํฐ์ ๋ํ ์ ๋ณด ํ๋)๋ฅผ ์ป์ ์ ์์ต๋๋ค.
- CVE-2021-3999 - getcwd() ํจ์์ ๋จ์ผ ๋ฐ์ดํธ ๋ฒํผ ์ค๋ฒํ๋ก. ์ด ๋ฌธ์ ๋ 1995๋ ๋ถํฐ ์กด์ฌํ๋ ๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค. ์ค๋ฒํ๋ก๋ฅผ ๋ฐ์์ํค๋ ค๋ฉด ๋ณ๋์ ๋ง์ดํธ ์ง์ ๋ค์์คํ์ด์ค์ ์๋ "/" ๋๋ ํฐ๋ฆฌ์์ chdir()์ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru