Y2038 ๋ฌธ์ œ์˜ Glibc๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด utmp ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•  ๊ฒƒ์„ ์ œ์•ˆํ•จ

10๋…„ ๋™์•ˆ SUSE LINUX Enterprise Server ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋Œ์—ˆ๋˜ SUSE(Future Technology Team, openSUSE MicroOS ๋ฐ SLE Micro ๊ฐœ๋ฐœ)์˜ Future Technology Team ๋ฆฌ๋”์ธ Thorsten Kukuk์€ ๋‹ค์Œ์—์„œ /var/run/utmp ํŒŒ์ผ์„ ์ œ๊ฑฐํ•  ๊ฒƒ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. Glibc์˜ Y2038 ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐํฌํŒ. utmp, wtmp ๋ฐ lastlog๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ systemd-logind๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค.

19๋…„ 2038์›” 32์ผ์— 64๋น„ํŠธ time_t ์œ ํ˜•์œผ๋กœ ์ง€์ •๋œ epoch ์‹œ๊ฐ„ ์นด์šดํ„ฐ๊ฐ€ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฉ๋‹ˆ๋‹ค. Glibc์—์„œ๋Š” 32๋น„ํŠธ time_t ์œ ํ˜•์˜ ๋„์ž…์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  64๋น„ํŠธ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด 32๋น„ํŠธ ํ”Œ๋žซํผ์—์„œ ์ผ๋ถ€ ๊ฒฝ์šฐ์— 32๋น„ํŠธ time_t ์œ ํ˜•์ด ์—ฌ์ „ํžˆ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋Š” ํ˜„์žฌ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” /var/run/utmp ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. utmp์˜ ์‹œ๊ฐ„ ํ•„๋“œ๋Š” XNUMX๋น„ํŠธ time_t ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ utmp์˜ ํ•„๋“œ๋ฅผ 32๋น„ํŠธ ์œ ํ˜•์—์„œ 64๋น„ํŠธ ์œ ํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ Glibc ABI๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์œ ํ˜•์€ login(), getutid() ๋ฐ utmpname()๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜์—์„œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค) ) ๋ฐ w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm ๋””์Šคํ”Œ๋ ˆ์ด ๊ด€๋ฆฌ์ž, emacs, openssh, qemu, samba, rsyslog ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ utmp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•จ์ •๊ณผ ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— utmp์—์„œ time_t ์œ ํ˜•์˜ ๋น„ํŠธ ๊ธธ์ด๋ฅผ ๋Œ€์ฒดํ•˜๋ ค๋Š” ์•„์ด๋””์–ด๋Š” Glibc ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ด์œ ๋กœ ์ถ”๊ฐ€ 64๋น„ํŠธ ์‹œ๊ฐ„ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด utmp ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ utmp์—์„œ ์œ ํ˜•์˜ ๋น„ํŠธ ์‹ฌ๋„๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ๊ธฐ์กด์˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด utmp์— ์“ฐ๋ ค๋ฉด ํŠน์ˆ˜ ๊ถŒํ•œ์ด โ€‹โ€‹ํ•„์š”ํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์„ธ์Šค์— ์ถ”๊ฐ€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” utmp ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ ์ž ๊ธˆ ์กฐ์ž‘์„ ํ†ตํ•ด utmp ์„œ๋น„์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๋Š” DoS ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ utmp์˜ ๋‚ด์šฉ์ด ์‹œ์Šคํ…œ์˜ ์‹ค์ œ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. utmp์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋˜์—ˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ž‘์—…์—๋Š” ์ด๋ฏธ systemd-logind ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ํŠน์ˆ˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋™์‹œ์— ๋‘ ํ•ธ๋“ค๋Ÿฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•จ). .

๋™์‹œ์—, DoS ๊ณต๊ฒฉ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋”๋ผ๋„ utmp์˜ ๋‚ด์šฉ์€ ์ •๋ณด์šฉ์œผ๋กœ๋งŒ ๋‚จ๊ณ  ํ˜„์‹ค ๋ฐ˜์˜์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ๋Š” ์ƒํƒœ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. XNUMX๊ฐœ์˜ GNOME ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•˜๋ฉด ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ utmp์— ๋ฐ˜์˜๋˜๋Š” ๋ฐ˜๋ฉด, KDE์—์„œ XNUMX๊ฐœ์˜ konsole ๋˜๋Š” xterm ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•˜๋ฉด XNUMX๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ screen๊ณผ tmux์˜ ๋™์ž‘๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ ์„ธ์…˜์ด ๋ณ„๋„์˜ ์‚ฌ์šฉ์ž๋กœ ๊ณ„์‚ฐ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๋งŒ ๋ชจ๋“  ์„ธ์…˜์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ๊ธฐ์กด์˜ ๋Œ€์ฒด systemd-logind ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ชจ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ „์†กํ•˜๊ณ  utmp์— ์•ก์„ธ์Šคํ•˜๋Š” ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์—†์œผ๋ฉด utmp์— ์“ฐ๊ธฐ๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. wtmp๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด systemd-journald๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์“ฐ๊ณ  ์ฝ๋Š” API๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ด ์ œ์•ˆ๋ฉ๋‹ˆ๋‹ค. systemd 254์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—๋Š” sd-login.h API๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ DBUS๋ฅผ ํ†ตํ•ด libsystemd๋ฅผ ํ†ตํ•ด ๋Œ€์ฒด utmp ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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