Iji kpochapụ Glibc nsogbu 2038, a na-atụ aro ịkwụsị iji utmp

Thorsten Kukuk, onye ndu otu mmepe teknụzụ ga-eme n'ọdịnihu na SUSE (Teamnlọ Ọrụ Teknụzụ Ọdịnihu, na-etolite openSUSE MicroOS na SLE Micro), bụ onye duruburu SUSE LINUX Enterprise Server oru ngo maka afọ 10, tụrụ aro iwepu / var/run/utmp faịlụ. na nkesa iji dozie nsogbu 2038 nke ọma na Glibc. Ngwa niile na-eji utmp, wtmp na lastlog ka agbanwere ka ọ nweta ndepụta nke ndị ọrụ na-eji systemd-logind.

Na Jenụwarị 19, 2038, ọnụọgụ oge epochal nke ụdị 32-bit time_t akọwapụtara ga-ejupụta. Glibc, n'agbanyeghị iwebata ụdị 64-bit time_t, na-aga n'ihu na-eji ụdị 32-bit time_t n'ọnọdụ ụfọdụ na nyiwe 64-bit iji jikwaa ndakọrịta na ngwa oghere onye ọrụ 32-bit. Otu ụdị ikpe ahụ bụ faịlụ / var/run/utmp, nke na-echekwa data gbasara ndị ọrụ abanyela na sistemụ ugbu a. A na-akọwapụta mpaghara oge dị na utmp site na iji uru 32-bit time_t.

Naanị dochie mpaghara oge na utmp site na 32-bit gaa na ụdị 64-bit agaghị arụ ọrụ, n'ihi na nke a ga-eduga na mgbanwe na Glibc ABI (ụdị ahụ ga-agbanwe na ọrụ dị ka nbanye (), getutid () na utmpname. ()) na imebi ndakọrịta na ngwa ndị na-eji utmp, gụnyere w, onye, ​​oge, nbanye, sudo, useradd, systemd, sysvinit, tcsh, xterm ngosi njikwa, emacs, openssh, qemu, samba, rsyslog, wdg. N'ihi ụbara ọnyà na mgbagwoju anya, ndị mmepe Glibc jụrụ echiche nke dochie time_t ụdị utmp. Maka otu ihe kpatara ya, a tụfuru nhọrọ nke iji ohere efu dị na nhazi utmp ịgbakwunye oge 64-bit ọzọ.

Na mgbakwunye, ịgbanwe ụdị ụdị bit dị omimi na utmp anaghị edozi nsogbu ndị ọzọ dị adị, nke m ga-achọkwa iwepụ. Dịka ọmụmaatụ, ide na utmp chọrọ ikike pụrụ iche, nke chọrọ usoro a ga-enye ohere ndị ọzọ. Nsogbu ọzọ bụ na utmp architecture na-enye ndị ọrụ mpaghara ohere ime mwakpo DoS, na-eduga na nkwụsị nke ọrụ utmp site na iji mkpọchi faịlụ, nke na-eme ka ọ ghara ikwe omume ijide n'aka na ọdịnaya nke utmp na-egosipụta ezigbo ọnọdụ na usoro. A tụrụ aro ka iji usoro ndabere ọzọ iji jikwaa ịnweta utmp, mana maka ọrụ ndị dị otú ahụ enweelarị usoro nbanye na sistemụ na ịmalite usoro ọzọ pụrụ iche abụghị ihe amamihe dị na ya (ngwa ga-ebufe data n'aka ndị njikwa abụọ n'otu oge).

N'otu oge ahụ, ọbụlagodi mgbe a na-edozi nsogbu ahụ na ọgụ DoS, ọdịnaya nke utmp na-anọgide na-abụ naanị ozi na anaghị ekwe nkwa ngosipụta nke eziokwu. Dịka ọmụmaatụ, ndị emulators dị iche iche na ndị na-ebu ọnụ ọnụ na-egosipụta ọnọdụ ha n'ụzọ dị iche - ịmalite njedebe GNOME ise ga-eme ka otu onye ọrụ na-egosipụta na utmp, na ịmepụta konsole ise ma ọ bụ xterminals na KDE ga-ebute isii. Omume nke ihuenyo na tmux dị iche iche: na nke mbụ, a na-agụ oge ọ bụla dị ka onye ọrụ dị iche, na nke abụọ, ọ bụ naanị otu onye ọrụ na-egosipụta maka nnọkọ niile.

N'ihi ya, dị ka ụzọ kacha mfe, a na-atụ aro ịnyefe ngwa niile ka ọ jiri ọrụ ọzọ dị na sistemụ logind na, mgbe enweghị mmemme ugbu a na-enweta utmp, kwụsị ndekọ ka utmp. Iji dochie wtmp, a na-atụ aro ka ịkwadebe oghere ngwanrọ maka ide na ịgụ ozi gbasara ndị ọrụ na-eji systemd-journald. The codebase maka ntọhapụ ọzọ nke systemd 254 etinyelarị ọrụ dị mkpa iji nye data nnọchi utmp site na libsystemd site na iji sd-login.h API ma ọ bụ site na DBUS.

isi: opennet.ru

Tinye a comment