I whakaarohia kia mutu te whakamahi i te utmp ki te whakakore i te raru Y2038 a Glibc

Ko Thorsten Kukuk, te kaihautu o te roopu whanaketanga hangarau a meake nei i SUSE (Te Kapa Hangarau a meake nei, e whakawhanake ana i te OpenSUSE MicroOS me te SLE Micro), nana i arahi te kaupapa SUSE LINUX Enterprise Server mo nga tau 10, i whakaaro kia whakakorea te konae /var/run/utmp. i roto i nga tohatoha hei whakatika i te raru 2038 i Glibc. Ko nga tono katoa e whakamahi ana i te utmp, wtmp me te lastlog e whakaarohia ana kia tahuri ki te whiwhi rarangi kaiwhakamahi ma te whakamahi i te systemd-logind.

Hei te Hanuere 19, 2038, ka puhake nga porotiti wa epochal kua tohua e te momo 32-bit time_t. Ko Glibc, ahakoa te whakauru i te momo 64-bit time_t, kei te whakamahi tonu i te momo 32-bit time_t i etahi wa i runga i nga papaaho 64-bit kia mau tonu ai te hototahi ki nga tono mokowā kaiwhakamahi moka-32. Ko tetahi o aua keehi ko te konae /var/run/utmp, e pupuri ana i nga raraunga mo nga kaiwhakamahi kua uru ki roto i te punaha. Ko te mara wa i roto i te utmp kua tohua ma te whakamahi i te uara 32-bit time_t.

Ko te whakakapi noa i te waahi wa i roto i te utmp mai i te 32-bit ki te momo 64-bit e kore e mahi, na te mea ka puta he huringa i te Glibc ABI (ka huri te momo i roto i nga mahi penei i te takiuru (), getutid () me te utmpname ()) me te pakaru i te hototahi ki nga tono e whakamahi ana i te utmp, tae atu ki te w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm display managers, emacs, openssh, qemu, samba, rsyslog, etc. Na te nui o nga mahanga me te uaua, ko te whakaaro ki te whakakapi i te momo time_t i roto i te utmp i paopaohia e nga kaihanga Glibc. Mo taua take ano, ko te kowhiringa ki te whakamahi i te mokowā noa e waatea ana i roto i te hanganga utmp ki te taapiri i tetahi atu mara wa moka-64 i whakarerea.

I tua atu, ko te whakarereke i te momo moka hohonu i roto i te utmp kaore e whakaoti i etahi atu raru o mua, e hiahia ana ahau ki te whakakore. Hei tauira, ko te tuhi ki te utmp me whai mana motuhake, e hiahia ana kia whakawhiwhia nga tukanga ki etahi atu mana. Ko tetahi atu raruraru ko te hoahoanga utmp ka taea e nga kaiwhakamahi o te rohe te kawe i nga whakaeke DoS, e arai ana ki te pakaru o te ratonga utmp na roto i te raweke i nga raka konae, kaore e taea te mohio kei te whakaatu nga ihirangi o te utmp i te ahua o te punaha. I whakaarohia kia whakamahia he mahinga papamuri hei whakahaere i te urunga ki te utmp, engari mo aua mahi kua oti kee he tukanga whakauru-systemd me te whakarewa i tetahi atu mahi motuhake kaore e pai (me whakawhiti raraunga ki nga kaikawe e rua i te wa kotahi).

I te wa ano, ahakoa ka whakatauhia te raru me nga whakaeke a DoS, ko nga korero o te utmp ka noho korero noa, kaore e kii i te whakaata o te pono. Hei tauira, he rerekee te whakaata o nga emulator me nga tini maha o nga kapeka - te whakarewatanga e rima nga pito GNOME ka puta he kaiwhakamahi kotahi ki roto i te utmp, me te whakarewanga e rima nga konohete, xterm ranei i roto i te KDE ka hua e ono. He rite tonu te rereke o te whanonga o te mata me te tmux: i te keehi tuatahi, ka kiia ia wahanga he kaiwhakamahi motuhake, i te tuarua, kotahi anake te kaiwhakamahi ka kitea mo nga waahi katoa.

Ko te mutunga mai, ko te otinga tino ngawari, e whakaarohia ana kia whakawhitia nga tono katoa ki te whakamahi i te ratonga punaha-logind rereke kua puta, a, i muri i te kore o nga kaupapa o naianei e uru ana ki te utmp, mutu te tuhi ki te utmp. Hei whakakapi i te wtmp, e whakaarohia ana kia whakareri nga hononga rorohiko mo te tuhi me te panui korero mo nga kaiwhakamahi e whakamahi ana i te systemd-journald. Ko te turanga waehere mo te tukunga o muri mai o te systemd 254 kua whakauruhia nga mahi e tika ana hei whakarato i nga raraunga whakakapinga utmp ma te libsystemd ma te whakamahi i te sd-login.h API ma te DBUS ranei.

Source: opennet.ru

Tāpiri i te kōrero