La soo jeediyay in la joojiyo isticmaalka utmp si meesha looga saaro dhibaatada Glibc ee Y2038

Thorsten Kukuk, hogaamiyaha kooxda horumarinta tignoolajiyada mustaqbalka ee SUSE (Kooxda Farsamada Mustaqbalka, waxay horumarisaa openSUSE MicroOS iyo SLE Micro), oo hore u hogaaminayay mashruuca SUSE LINUX Enterprise Server 10 sano, ayaa soo jeediyay in laga takhaluso faylka / var/run/utmp qaybinta si si buuxda wax looga qabto dhibaatada 2038 ee Glibc. Dhammaan codsiyada isticmaalaya utmp, wtmp iyo lastlog waxaa la soo jeediyay in loo beddelo helitaanka liiska isticmaalayaasha isticmaalaya systemd-logind.

Janaayo 19, 2038, xisaabiyeyaasha wakhtiga epochal ee lagu qeexay nooca 32-bit time_t ayaa buux dhaafi doona. Glibc, in kasta oo uu soo bandhigay nooca 64-bit time_t, wuxuu sii wadaa inuu isticmaalo nooca 32-bit time_t xaaladaha qaarkood ee 64-bit platforms si loo ilaaliyo waafaqsanaanta codsiyada 32-bit user space. Mid ka mid ah kiis noocaas ah waa faylka / var/run/utmp, kaas oo kaydiya xogta isticmaalayaasha hadda galay nidaamka. Goobta wakhtiga ee utmp waxa lagu cayimay iyadoo la isticmaalayo 32-bit time_t.

Si fudud u beddelka goobta waqtiga ee utmp laga bilaabo 32-bit ilaa nooca 64-bit ma shaqeyn doono, sababtoo ah tani waxay horseedi doontaa isbeddel ku yimaada Glibc ABI (noocku wuxuu bedeli doonaa shaqooyinka sida login (), getutid () iyo utmpname ()) iyo jebinta ku habboonaanta codsiyada adeegsata utmp, oo ay ku jiraan w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm display maareeyayaasha, emacs, openssh, qemu, samba, rsyslog, iwm. Sababo la xiriira xad-gudubyada suurtagalka ah ee faraha badan iyo kakanaanta, fikradda beddelka waqtiga_t nooca utmp waxaa diiday horumarinta Glibc. Isla sababtaas awgeed, ikhtiyaarka isticmaalka booska bilaashka ah ee la heli karo ee qaab dhismeedka utmp si loogu daro waqti dheeri ah oo 64-bit ah ayaa la tuuray.

Intaa waxaa dheer, beddelka nooca qoto dheer ee utmp ma xalliyo dhibaatooyinka kale ee jira, taas oo aan sidoo kale jeclaan lahaa inaan ka takhaluso. Tusaale ahaan, u qorista utmp waxay u baahan tahay xuquuq gaar ah, taas oo u baahan habraacyo lagu siinayo mudnaan dheeraad ah. Dhibaato kale ayaa ah in naqshadeynta utmp ay u ogolaato isticmaalayaasha maxalliga ah inay fuliyaan weerarrada DoS, taasoo keentay in la carqaladeeyo adeegga utmp iyada oo loo marayo maareynta qufulka faylka, taas oo ka dhigaysa mid aan suurtagal ahayn in la hubiyo in waxyaabaha ku jira utmp ay ka tarjumayaan xaaladda dhabta ah ee nidaamka. Waxaa la soo jeediyay in la isticmaalo habka asalka ah ee dheeraadka ah si loo maareeyo gelitaanka utmp, laakiin hawlahan oo kale waxaa horay u jiray hab-socod-logind iyo bilaabista hannaan kale oo khaas ah maaha mid lagu talinayo (codsiyada waxay noqon doonaan inay xogta u gudbiyaan laba maamule isku mar).

Isla mar ahaantaana, xitaa marka lagu xalinayo dhibaatada weerarrada DoS, waxa ku jira utmp waxay ahaanayaan kaliya macluumaad mana dammaanad qaadayaan muujinta xaqiiqada. Tusaale ahaan, emulators kala duwan iyo terminal multiplexers ayaa si kala duwan uga tarjumaya gobolkooda - bilaabista shanta GNOME waxay keeni doontaa in hal isticmaale uu ka muuqdo utmp, iyo furitaanka shan konsole ama xterminals ee KDE waxay dhalin doontaa lix. Dabeecadda shaashadda iyo tmux si isku mid ah ayey u kala duwan yihiin: kiiska koowaad, fadhi kasta waxaa lagu tiriyaa isticmaale gooni ah, kan labaadna, hal isticmaale oo keliya ayaa ka muuqda dhammaan fadhiyada.

Natiijo ahaan, sida xalka ugu fudud, waxaa la soo jeediyay in la wareejiyo dhammaan codsiyada si loo isticmaalo adeegii hore ee systemd-logind beddelka ahaa iyo, ka dib markii aysan jirin barnaamijyo hadda galaya utmp, jooji duubista utmp. Si aad u bedesho wtmp, waxaa la soo jeediyay in la diyaariyo interfaces software si loo qoro oo loo akhriyo macluumaadka ku saabsan isticmaalayaasha isticmaalaya systemd-journald. Koodhka furaha siideynta soo socota ee systemd 254 waxay horeyba ugu jirtay shaqada lagama maarmaanka u ah in lagu bixiyo xogta beddelka utmp iyada oo la adeegsanayo libsystemd iyadoo la adeegsanayo sd-login.h API ama DBUS.

Source: opennet.ru

Add a comment