Natolotra ny hampitsahatra ny fampiasana utmp hanesorana ny olana Y2038 an'i Glibc

Thorsten Kukuk, mpitarika ny Future Technology Team ao amin'ny SUSE (Future Technology Team, dia mamolavola openSUSE MicroOS sy SLE Micro), izay nitarika ny tetikasa SUSE LINUX Enterprise Server teo aloha nandritra ny 10 taona, dia nanolo-kevitra ny hanaisotra ny rakitra / var / run / utmp. fizarana hamahana tanteraka ny olana Y2038 ao amin'ny Glibc. Ny rindranasa rehetra mampiasa utmp, wtmp, ary lastlog dia aroso hafindra mba hahazoana lisitry ny mpampiasa mampiasa systemd-logind.

Amin'ny 19 janoary 2038, hihoatra ny kaontin'ny fotoana voafaritra amin'ny karazana time_t 32-bit. Ao amin'ny Glibc, na dia eo aza ny fampidirana ny karazana time_t 64-bit, mba hitazonana ny fifanarahana amin'ny rindranasa mpampiasa-space 32-bit, ny karazana time_t 64-bit dia mbola ampiasaina amin'ny tranga sasany amin'ny sehatra 32-bit. Ny tranga iray toy izany dia ny rakitra /var/run/utmp, izay mitahiry angon-drakitra momba ireo mpampiasa miditra ao amin'ny rafitra amin'izao fotoana izao. Ny saha fotoana ao amin'ny utmp dia napetraka amin'ny fampiasana sanda 32-bit time_t.

Ny fanovana fotsiny ny saha ao amin'ny utmp rehefa mandeha ny fotoana avy amin'ny 32-bit ka hatramin'ny 64-bit dia tsy mandeha, satria izany dia hanova ny Glibc ABI (ny karazana dia hiova amin'ny fiasa toy ny login(), getutid() ary utmpname()) ary manapaka ny fifanarahana amin'ny fampiharana mampiasa utmp, ao anatin'izany ny w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm display managers, emacs, openssh, qemu, samba, rsyslog, sns. Noho ny habetsahan'ny fandrika sy ny asa mafy dia nolavin'ny mpamorona ny Glibc ny hevitra hanoloana ny halavan'ny fotoana_t karazana utmp. Noho io antony io ihany, ny safidy hampiasa ny habaka misy ao amin'ny rafitra utmp mba hanampiana saha 64-bit fanampiny dia najanona.

Ankoatr'izay, ny fanovana ny halalin'ny karazana ao amin'ny utmp dia tsy mamaha olana hafa efa misy, izay tiako esorina ihany koa. Ohatra, ny fanoratana amin'ny utmp dia mitaky fahazoan-dΓ lana manokana, izay mitaky tombontsoa fanampiny omena amin'ny dingana. Ny olana iray hafa dia ny rafitra utmp dia mamela ny mpampiasa eo an-toerana hanao fanafihana DoS izay manapaka ny serivisy utmp amin'ny alΓ lan'ny fanodikodinana ny hidin-drakitra, ka tsy azo antoka fa ny votoatin'ny utmp dia maneho ny tena fanjakana ao amin'ny rafitra. Natolotra ny hampiasa dingana fanampiny hifehezana ny fidirana amin'ny utmp, fa ho an'ny asa toy izany dia efa misy ny fizotry ny systemd-logind ary tsy azo atao ny manomboka dingana manokana hafa (tsy maintsy mamindra angon-drakitra amin'ny mpitantana roa miaraka ny fampiharana) .

Mandritra izany fotoana izany, na dia mamaha ny olana amin'ny fanafihana DoS aza, ny votoatin'ny utmp dia mijanona ho fampahalalana fotsiny, fa tsy miantoka ny taratry ny zava-misy. Ohatra, ny emulator terminal sy ny multiplexer samy hafa dia maneho ny toerany amin'ny fomba hafa - ny fampandehanana terminal dimy GNOME dia miteraka mpampiasa iray hita taratra ao amin'ny utmp, raha toa kosa ny fampandehanana terminal konsole na xterm dimy ao amin'ny KDE dia miteraka enina. Toy izany koa, ny fihetsiky ny efijery sy ny tmux dia tsy mitovy, amin'ny tranga voalohany dia isaina ho mpampiasa misaraka ny session tsirairay, ary amin'ny faharoa dia mpampiasa iray ihany no hita taratra amin'ny session rehetra.

Vokatr'izany, ho vahaolana tsotra indrindra, dia atolotra ny hamindra ny fampiharana rehetra hampiasa ny serivisy systemd-logind efa misy ary, rehefa tsy misy programa tena miditra amin'ny utmp, atsaharo ny fanoratana amin'ny utmp. Mba hanoloana ny wtmp dia aroso ny hanomanana API hanoratana sy famakiana vaovao momba ireo mpampiasa mampiasa systemd-journald. Ny codebase ho an'ny famoahana manaraka ny systemd 254 dia efa ahitana ireo fiasa ilaina mba hanomezana angona utmp fanoloana amin'ny alΓ lan'ny libsystemd amin'ny fampiasana ny sd-login.h API na amin'ny DBUS.

Source: opennet.ru

Add a comment