ื›ื“ื™ ืœืคื˜ื•ืจ ืืช Glibc ืžื‘ืขื™ื™ืช 2038, ืžื•ืฆืข ืœื”ืคืกื™ืง ืœื”ืฉืชืžืฉ ื‘-utmp

Thorsten Kukuk, ืžื ื”ื™ื’ ืฆื•ื•ืช ืคื™ืชื•ื— ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืขืชื™ื“ื™ืช ื‘-SUSE (ืฆื•ื•ืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืขืชื™ื“ื™ืช, ืžืคืชื— ืืช openSUSE MicroOS ื•-SLE Micro), ืฉื”ื•ื‘ื™ืœ ื‘ืขื‘ืจ ืืช ืคืจื•ื™ืงื˜ SUSE LINUX Enterprise Server ื‘ืžืฉืš 10 ืฉื ื™ื, ื”ืฆื™ืข ืœื”ื™ืคื˜ืจ ืžืงื•ื‘ืฅ /var/run/utmp ื‘ื”ืคืฆื•ืช ื›ื“ื™ ืœื˜ืคืœ ื‘ืื•ืคืŸ ืžืœื ื‘ื‘ืขื™ื™ืช 2038 ื‘-Glibc. ื›ืœ ื”ื™ื™ืฉื•ืžื™ื ื”ืžืฉืชืžืฉื™ื ื‘-utmp, wtmp ื•-lastlog ืžื•ืฆืขื™ื ืœื”ืžืจื” ืœืงื‘ืœืช ืจืฉื™ืžืช ืžืฉืชืžืฉื™ื ื”ืžืฉืชืžืฉื™ื ื‘-systemd-login.

ื‘-19 ื‘ื™ื ื•ืืจ 2038, ืžื•ื ื™ ื”ื–ืžืŸ ื”ืกืคืฆื™ืคื™ื™ื ืฉืฆื•ื™ื ื• ืขืœ ื™ื“ื™ ืกื•ื’ 32 ืกื™ื‘ื™ื•ืช time_t ื™ืขืœื• ืขืœ ื’ื“ื•ืชื™ื”ื. Glibc, ืœืžืจื•ืช ืฉื”ืฆื™ื’ื” ืกื•ื’ time_t ืฉืœ 64 ืกื™ื‘ื™ื•ืช, ืžืžืฉื™ื›ื” ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ time_t ืฉืœ 32 ืกื™ื‘ื™ื•ืช ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื ื‘ืคืœื˜ืคื•ืจืžื•ืช ืฉืœ 64 ืกื™ื‘ื™ื•ืช ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ืชืื™ืžื•ืช ืขื ื™ื™ืฉื•ืžื™ ืฉื˜ื— ืžืฉืชืžืฉ ืฉืœ 32 ืกื™ื‘ื™ื•ืช. ืžืงืจื” ืื—ื“ ื›ื–ื” ื”ื•ื ืงื•ื‘ืฅ /var/run/utmp, ื”ืžืื—ืกืŸ ื ืชื•ื ื™ื ืขืœ ืžืฉืชืžืฉื™ื ื”ืžื—ื•ื‘ืจื™ื ื›ืขืช ืœืžืขืจื›ืช. ืฉื“ื” ื”ื–ืžืŸ ื‘-utmp ืžืฆื•ื™ืŸ ื‘ืืžืฆืขื•ืช ืขืจืš time_t ืฉืœ 32 ืกื™ื‘ื™ื•ืช.

ืคืฉื•ื˜ ื”ื—ืœืคืช ืฉื“ื” ื”ื–ืžืŸ ื‘-utmp ืžืกื•ื’ 32-bit ืœ-64-bit ืœื ืชืขื‘ื•ื“, ืžื›ื™ื•ื•ืŸ ืฉื–ื” ื™ื•ื‘ื™ืœ ืœืฉื™ื ื•ื™ ื‘-Glibc ABI (ื”ืกื•ื’ ื™ืฉืชื ื” ื‘ืคื•ื ืงืฆื™ื•ืช ื›ืžื• login(), getutid() ื•-utmpname ()) ื•ืฉื‘ื™ืจืช ืชืื™ืžื•ืช ืขื ื™ื™ืฉื•ืžื™ื ื”ืžืฉืชืžืฉื™ื ื‘-utmp, ื›ื•ืœืœ w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm ืžื ื”ืœื™ ืชืฆื•ื’ื”, emacs, openssh, qemu, samba, rsyslog ื•ื›ื•'. ื‘ืฉืœ ืฉืคืข ื”ืžืœื›ื•ื“ื•ืช ื”ืืคืฉืจื™ื•ืช ื•ื”ืžื•ืจื›ื‘ื•ืช, ื”ืจืขื™ื•ืŸ ืฉืœ ื”ื—ืœืคืช ืกื•ื’ time_t ื‘-utmp ื ื“ื—ื” ืขืœ ื™ื“ื™ ืžืคืชื—ื™ Glibc. ืžืื•ืชื” ืกื™ื‘ื”, ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ืฉื˜ื— ื”ืคื ื•ื™ ื”ื–ืžื™ืŸ ื‘ืžื‘ื ื” utmp ืœื”ื•ืกืคืช ืฉื“ื” ื–ืžืŸ ื ื•ืกืฃ ืฉืœ 64 ืกื™ื‘ื™ื•ืช ื ืžื—ืงื”.

ื‘ื ื•ืกืฃ, ืฉื™ื ื•ื™ ื”-type bit depth ื‘-utmp ืœื ืคื•ืชืจ ื‘ืขื™ื•ืช ืงื™ื™ืžื•ืช ืื—ืจื•ืช, ืฉื’ื ืžื”ืŸ ื”ื™ื™ืชื™ ืจื•ืฆื” ืœื”ื™ืคื˜ืจ. ืœื“ื•ื’ืžื”, ื›ืชื™ื‘ื” ืœ-utmp ื“ื•ืจืฉืช ื–ื›ื•ื™ื•ืช ืžื™ื•ื—ื“ื•ืช, ืžื” ืฉืžื—ื™ื™ื‘ ืœื”ืขื ื™ืง ืœืชื”ืœื™ื›ื™ื ื”ืจืฉืื•ืช ื ื•ืกืคื•ืช. ื‘ืขื™ื” ื ื•ืกืคืช ื”ื™ื ืฉืืจื›ื™ื˜ืงื˜ื•ืจืช utmp ืžืืคืฉืจืช ืœืžืฉืชืžืฉื™ื ืžืงื•ืžื™ื™ื ืœื‘ืฆืข ื”ืชืงืคื•ืช DoS, ืžื” ืฉืžื•ื‘ื™ืœ ืœืฉื™ื‘ื•ืฉ ืฉื™ืจื•ืช utmp ื‘ืืžืฆืขื•ืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื ืขื™ืœื•ืช ืงื‘ืฆื™ื, ืžื” ืฉืœื ืžืืคืฉืจ ืœื”ื™ื•ืช ื‘ื˜ื•ื— ืฉื”ืชื›ื ื™ื ืฉืœ utmp ืžืฉืงืคื™ื ืืช ื”ืžืฆื‘ ื”ืืžื™ืชื™ ื‘ืžืขืจื›ืช. ื”ื•ืฆืข ืœื”ืฉืชืžืฉ ื‘ืชื”ืœื™ืš ืจืงืข ื ื•ืกืฃ ื›ื“ื™ ืœื˜ืคืœ ื‘ื’ื™ืฉื” ืœ-utmp, ืืš ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ื›ืืœื” ื›ื‘ืจ ืงื™ื™ื ืชื”ืœื™ืš ืฉืœ systemd-login ื•ื”ืฉืงืช ืชื”ืœื™ืš ืžื™ื•ื—ื“ ืื—ืจ ืื™ื ื• ืจืฆื•ื™ (ื™ื™ืฉื•ืžื™ื ื™ืฆื˜ืจื›ื• ืœื”ืขื‘ื™ืจ ื ืชื•ื ื™ื ืœืฉื ื™ ืžื˜ืคืœื™ื ื‘ื• ื–ืžื ื™ืช).

ื™ื—ื“ ืขื ื–ืืช, ื’ื ื›ืืฉืจ ืคื•ืชืจื™ื ืืช ื”ื‘ืขื™ื” ืขื ื”ืชืงืคื•ืช DoS, ื”ืชื•ื›ืŸ ืฉืœ utmp ื ืฉืืจ ืžื™ื“ืขื™ ื‘ืœื‘ื“ ื•ืื™ื ื• ืžื‘ื˜ื™ื— ื”ืฉืชืงืคื•ืช ืฉืœ ื”ืžืฆื™ืื•ืช. ืœื“ื•ื’ืžื”, ืืžื•ืœื˜ื•ืจื™ื ื•ืžืจื‘ื‘ื™ ืžืกื•ืฃ ืฉื•ื ื™ื ืžืฉืงืคื™ื ืืช ืžืฆื‘ื ื‘ืฆื•ืจื” ืฉื•ื ื” - ื”ืคืขืœืช ื—ืžื™ืฉื” ืžืกื•ืคื™ GNOME ืชื’ืจื•ื ืœื›ืš ืฉืžืฉืชืžืฉ ืื—ื“ ื™ืฉืชืงืฃ ื‘-utmp, ื•ื”ืฉืงืช ื—ืžื™ืฉื” ืžืกื•ืคื™ konsole ืื• xterm ื‘-KDE ืชื’ืจื•ื ืœืฉื™ืฉื”. ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืžืกืš ื•-tmux ืฉื•ื ื” ื‘ืื•ืคืŸ ื“ื•ืžื”: ื‘ืžืงืจื” ื”ืจืืฉื•ืŸ, ื›ืœ ืกืฉืŸ ื ืกืคืจ ื›ืžืฉืชืžืฉ ื ืคืจื“, ื•ื‘ืฉื ื™, ืจืง ืžืฉืชืžืฉ ืื—ื“ ืžืฉืชืงืฃ ืขื‘ื•ืจ ื›ืœ ื”ืคื’ื™ืฉื•ืช.

ื›ืชื•ืฆืื” ืžื›ืš, ื›ืคืชืจื•ืŸ ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ, ืžื•ืฆืข ืœื”ืขื‘ื™ืจ ืืช ื›ืœ ื”ื™ื™ืฉื•ืžื™ื ืœืฉื™ืžื•ืฉ ื‘ืฉื™ืจื•ืช systemd-login ื”ืืœื˜ืจื ื˜ื™ื‘ื™ ืฉื›ื‘ืจ ืงื™ื™ื, ื•ืœืื—ืจ ืฉืื™ืŸ ืชื•ื›ื ื™ื•ืช ื ื•ื›ื—ื™ื•ืช ื”ื ื™ื’ืฉื•ืช ืœ-utmp, ืœื”ืคืกื™ืง ืืช ื”ื”ืงืœื˜ื” ืœ-utmp. ื›ื“ื™ ืœื”ื—ืœื™ืฃ ืืช wtmp, ืžื•ืฆืข ืœื”ื›ื™ืŸ ืžืžืฉืงื™ ืชื•ื›ื ื” ืœื›ืชื™ื‘ื” ื•ืงืจื™ืื” ืฉืœ ืžื™ื“ืข ืขืœ ืžืฉืชืžืฉื™ื ื”ืžืฉืชืžืฉื™ื ื‘-systemd-journald. ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœ ื”ืžื”ื“ื•ืจื” ื”ื‘ืื” ืฉืœ systemd 254 ื›ื‘ืจ ื›ื•ืœืœ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื“ืจื•ืฉื” ื›ื“ื™ ืœืกืคืง ื ืชื•ื ื™ ื”ื—ืœืคืช utmp ื‘ืืžืฆืขื•ืช libsystemd ื‘ืืžืฆืขื•ืช sd-login.h API ืื• ื‘ืืžืฆืขื•ืช DBUS.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”