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

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

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

  • ํ–ฅํ›„ ISO ํ‘œ์ค€ ์ดˆ์•ˆ์— ์ •์˜๋œ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด _ISOC2X_SOURCE ๋งคํฌ๋กœ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. C2X. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ _GNU_SOURCE ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ "-std=gnu2x" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gcc์—์„œ ๋นŒ๋“œํ•  ๋•Œ๋„ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋ฅผ ๋” ์ž‘์€ ์œ ํ˜•์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋Š” ํ—ค๋” ํŒŒ์ผ "math.h"์— ์ •์˜๋œ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ TS 18661-1:2014 ๋ฐ TS ์‚ฌ์–‘์—์„œ ์š”๊ตฌํ•˜๋Š” ๋Œ€๋กœ ํ•ด๋‹น ์ผ๋ฐ˜ ์œ ํ˜• ๋งคํฌ๋กœ๊ฐ€ "tgmath.h" ํŒŒ์ผ์— ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. 18661-3: 2015;
  • ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” pthread_clockjoin_np() ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(์™„๋ฃŒ ์ „์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค). ๊ฐ™์ง€ ์•Š์€ pthread_timedjoin_np(), pthread_clockjoin_np()์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ํƒ€์ด๋จธ ์œ ํ˜•์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - CLOCK_MONOTONIC(์‹œ์Šคํ…œ์ด ์ ˆ์ „ ๋ชจ๋“œ์—์„œ ์†Œ๋น„ํ•œ ์‹œ๊ฐ„ ๊ณ ๋ ค) ๋˜๋Š” CLOCK_REALTIME;
  • ์ด์ œ DNS ํ™•์ธ์ž๋Š” /etc/resolv.conf์˜ trust-ad ์˜ต์…˜๊ณผ _res.options์˜ RES_TRUSTAD ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •๋œ ๊ฒฝ์šฐ DNSSEC ํ”Œ๋ž˜๊ทธ๊ฐ€ DNS ์š”์ฒญ์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค. AD (์ธ์ฆ๋œ ๋ฐ์ดํ„ฐ). ์ด ๋ชจ๋“œ์—์„œ๋Š” ์„œ๋ฒ„๊ฐ€ ์„ค์ •ํ•œ AD ํ”Œ๋ž˜๊ทธ๋ฅผ res_search()์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์•ˆ๋œ ์˜ต์…˜์ด ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ glibc๋Š” ์š”์ฒญ์— AD ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์‘๋‹ต์—์„œ ์ž๋™์œผ๋กœ ์ด๋ฅผ ์ง€์›Œ DNSSEC ๊ฒ€์‚ฌ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • Glibc์šฉ ์ž‘์—… ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฐ”์ธ๋”ฉ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋” ์ด์ƒ Linux ์ปค๋„ ํ—ค๋” ํŒŒ์ผ์„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 64๋น„ํŠธ RISC-V ์•„ํ‚คํ…์ฒ˜๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.
  • ์ œ๊ฑฐ๋จ ์ทจ์•ฝ์  CVE-2019-19126, ์ด๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    setuid ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ASLR ๋ฐ LD_PREFER_MAP_32BIT_EXEC ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์กฐ์ž‘์„ ํ†ตํ•ด ๋กœ๋“œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฃผ์†Œ ๋ ˆ์ด์•„์›ƒ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ์†์ƒ์‹œํ‚ค๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • totalorder(), totalordermag() ๋ฐ ๊ธฐํƒ€ ๋ถ€๋™ ์†Œ์ˆ˜์  ์œ ํ˜•์— ๋Œ€ํ•œ ์œ ์‚ฌํ•œ ํ•จ์ˆ˜๋Š” ์ด์ œ ์ƒํƒœ์˜ ๊ฐ’ ๋ณ€ํ™˜์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ธํ„ฐ๋ฅผ ์ธ์ˆ˜๋กœ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. NaN, ๋ฏธ๋ž˜ C18661X ํ‘œ์ค€์„ ์œ„ํ•ด ์ œ์•ˆ๋œ TS 1-2์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
    ๋ถ€๋™ ์†Œ์ˆ˜์  ์ธ์ˆ˜๋ฅผ ์ง์ ‘ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ์กด ์‹คํ–‰ ํŒŒ์ผ์€ ์ˆ˜์ • ์—†์ด ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๋˜ stime ํ•จ์ˆ˜๋Š” ๋” ์ด์ƒ glibc ์—ฐ๊ฒฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ด๋‹น ์ •์˜๊ฐ€ time.h์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋ ค๋ฉด clock_settime ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์•ž์œผ๋กœ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ftime ํ•จ์ˆ˜์™€ sys/timeb.h ํ—ค๋” ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค(ftime ๋Œ€์‹  gettimeofday ๋˜๋Š” clock_gettime์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ).
  • gettimeofday ํ•จ์ˆ˜๋Š” ๋” ์ด์ƒ ์‹œ์Šคํ…œ ์ „์ฒด ์‹œ๊ฐ„๋Œ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด ๊ธฐ๋Šฅ์€ 4.2-BSD ์‹œ๋Œ€์— ๊ด€๋ จ์ด ์žˆ์—ˆ๊ณ  ์ˆ˜๋…„ ๋™์•ˆ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ์ด์ œ 'tzp' ์ธ์ˆ˜์— ๋„ ํฌ์ธํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๋ฉฐ, localtime() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ฐ„๋Œ€ ์ •๋ณด๋ฅผ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. XNUMX์ด ์•„๋‹Œ ์ธ์ˆ˜ 'tzp'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gettimeofday๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์‹œ๊ฐ„๋Œ€ ๊ตฌ์กฐ์—์„œ ๋นˆ ํ•„๋“œ tz_ Minuteswest ๋ฐ tz_dsttime์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. gettimeofday ํ•จ์ˆ˜ ์ž์ฒด๋Š” POSIX์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ(gettimeofday ๋Œ€์‹  clock_gettime์ด ๊ถŒ์žฅ๋จ) glibc์—์„œ ์ œ๊ฑฐํ•  ๊ณ„ํš์€ ์—†์Šต๋‹ˆ๋‹ค.
  • settimeofday๋Š” ๋” ์ด์ƒ ์‹œ๊ฐ„ ๋ฐ ์‹œ๊ฐ„ ์ˆ˜์ • ์˜คํ”„์…‹ ์„ค์ •์„ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋™์‹œ ์ „๋‹ฌ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. settimeofday๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ด์ œ ์ธ์ˆ˜(์‹œ๊ฐ„ ๋˜๋Š” ์˜คํ”„์…‹) ์ค‘ ํ•˜๋‚˜๋ฅผ null๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด EINVAL ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. gettimeofday์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ settimeofday ํ•จ์ˆ˜๋Š” POSIX์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ clock_settime ํ•จ์ˆ˜ ๋˜๋Š” adjtime ํ•จ์ˆ˜ ๊ณ„์—ด๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • SPARC ISA v7 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(v8 ์ง€์›์€ ํ˜„์žฌ ์œ ์ง€๋˜์ง€๋งŒ SuperSPARC ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•„๋‹Œ LEON ํ”„๋กœ์„ธ์„œ์™€ ๊ฐ™์ด CAS ๋ช…๋ น์„ ์ง€์›ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•ด์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค).
  • "์—์„œ ํŽ˜์–ด๋ง์— ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฒŒ์œผ๋ฅธ", ์—ฌ๊ธฐ์„œ ๋ง์ปค๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€ ํ•จ์ˆ˜์˜ ๊ธฐํ˜ธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ œ dlopen ํ•จ์ˆ˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ์‹คํŒจ ์‹œ NULL์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค).
  • MIPS ํ•˜๋“œ ํ”Œ๋กœํŠธ ABI์˜ ๊ฒฝ์šฐ ๋นŒ๋“œ๊ฐ€ "-enable-kernel=4.8" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด Linux ์ปค๋„ 4.8.0+์˜ ์‚ฌ์šฉ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œํ•œํ•˜์ง€ ์•Š๋Š” ํ•œ ์ด์ œ ์‹คํ–‰ ๊ฐ€๋Šฅ ์Šคํƒ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(์ปค๋„ ์ตœ๋Œ€ 4.8์—์„œ๋Š” ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•จ). ์ผ๋ถ€ MIPS ๊ตฌ์„ฑ์—์„œ๋Š” ๊ด€์ฐฐ๋จ)
  • ์‹œ๊ฐ„ ์กฐ์ž‘๊ณผ ๊ด€๋ จ๋œ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๊ด€๋ จ ๋ฐ”์ธ๋”ฉ์ด time64 ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค(32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ glibc๋Š” ๋จผ์ € 64๋น„ํŠธ ์‹œ๊ฐ„ ์œ ํ˜•์„ ์กฐ์ž‘ํ•˜๋Š” ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‹œ๋„ํ•˜๊ณ , ์—†๋Š” ๊ฒฝ์šฐ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค). ์ด์ „ 32๋น„ํŠธ ํ˜ธ์ถœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค).

์ถœ์ฒ˜ : opennet.ru

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