Glibc 2.30 ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค

XNUMX๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ์ถœํŒ ๋œ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (๊ธ€๋ฆฌBC) 2.30์ด๋Š” ISO C11 ๋ฐ POSIX.1-2008 ํ‘œ์ค€์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค์—๋Š” 48๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ •ํ•œ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Glibc 2.30์—์„œ ๊ตฌํ˜„๋œ ๊ฒƒ ์ค‘์—์„œ ๊ฐœ๋Ÿ‰ ๋‹น์‹ ์€ ์ฐธ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

  • ๋™์  ๋ง์ปค๋Š” ๊ณต์œ  ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ "--preload" ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(LD_PRELOAD ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ์œ ์‚ฌ).
  • ๊ธฐ์กด twalk ํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ง€์ •๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ์ถ”๊ฐ€ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” twalk_r ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Linux์šฉ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ธ getdents64, gettid ๋ฐ tgkill์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ฐœ์ฒด ํฌ๊ธฐ๊ฐ€ PTRDIFF_MAX ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ํ•จ์ˆ˜ malloc, calloc, realloc, reallocarray, valloc, pvalloc, memalign ๋ฐ posix_memalign์ด ์˜ค๋ฅ˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ข…๋ฃŒ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํฌ์ธํ„ฐ ์กฐ์ž‘์˜ ๊ฒฐ๊ณผ๋กœ ptrdiff_t ์œ ํ˜•์˜ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์ด ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค.
  • POSIX ํ•จ์ˆ˜ pthread_cond_clockwait, pthread_mutex_clocklock,
    pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock ๋ฐ sem_clockwait๋Š” "timed"์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํƒ€์ด๋จธ๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด clockid_t ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฝ”๋”ฉ ๋ฐ์ดํ„ฐ, ๋ฌธ์ž ์œ ํ˜• ์ •๋ณด ๋ฐ ์Œ์—ญ ํ…Œ์ด๋ธ”์ด ์œ ๋‹ˆ์ฝ”๋“œ 12.1.0 ์‚ฌ์–‘์„ ์ง€์›ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • librt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋” ์ด์ƒ ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— clock_gettime, clock_getres, clock_settime, clock_getcpuclockid ๋ฐ clock_nanosleep ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ๋Œ€์‹  ์ž๋™์œผ๋กœ libc์˜ ์ •์˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • "inet6" ์˜ต์…˜์ด /etc/resolv.conf์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. resolv.h์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ”Œ๋ž˜๊ทธ RES_USE_INET6, RES_INSECURE1 ๋ฐ RES_INSECURE2๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "--enable-bind-now" ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ์„ค์น˜๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์ด์ œ BIND_NOW ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
  • Linux ๊ด€๋ จ sys/sysctl.h ํ—ค๋” ํŒŒ์ผ ๋ฐ sysctl ๊ธฐ๋Šฅ์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋Œ€์‹  /proc pseudo-FS๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ Glibc๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด GCC 6.2 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Œ).
  • ์ทจ์•ฝ์ ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CVE-2019-7309 memcmp ํ•จ์ˆ˜ ๊ตฌํ˜„ ์‹œ ์‹œ๋Œ€์— ๋’ค์ณ์ง„ x32 ํ•˜์œ„ ์•„ํ‚คํ…์ฒ˜(x86 IA-32์™€ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์„ธ์š”). ๊ทธ ๊ฒฐ๊ณผ ํ•จ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ๊ฐ’ 0์„ ์ž˜๋ชป ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ทจ์•ฝ์ ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CVE-2019-9169, ์ด๋กœ ์ธํ•ด ํŠน์ • ์ •๊ทœ์‹์ด ์ฒ˜๋ฆฌ๋  ๋•Œ ๋ฒ„ํผ ๊ฒฝ๊ณ„ ์™ธ๋ถ€ ์˜์—ญ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€