Thathas an dùil stad a chuir air cleachdadh utmp gus cuir às do dhuilgheadas Glibc Y2038

Mhol Thorsten Kukuk, stiùiriche buidheann leasachaidh teicneòlais san àm ri teachd aig SUSE (Sgioba Teicneòlais san àm ri teachd, openSUSE MicroOS agus SLE Micro), a bha air ceann pròiseact SUSE LINUX Enterprise Server airson 10 bliadhna, cuidhteas fhaighinn den fhaidhle /var/run/utmp. ann an sgaoilidhean gus dèiligeadh gu h-iomlan ris an duilgheadas 2038 ann an Glbc. Thathas a’ moladh a h-uile tagradh a tha a’ cleachdadh utmp, wtmp agus lastlog a thionndadh gu bhith a’ faighinn liosta de luchd-cleachdaidh a’ cleachdadh systemd-logind.

Air 19 Faoilleach 2038, bidh na cunntairean ùine epochal a chaidh a shònrachadh leis an t-seòrsa time_t 32-bit a’ cur thairis. Tha Glibc, a dh’ aindeoin a bhith a’ toirt a-steach seòrsa time_t 64-bit, a’ leantainn air adhart a’ cleachdadh seòrsa time_t 32-bit ann an cuid de chùisean air àrd-ùrlaran 64-bit gus co-chòrdalachd le tagraidhean àite luchd-cleachdaidh 32-bit a chumail suas. Is e aon chùis mar sin am faidhle /var/run/utmp, a bhios a’ stòradh dàta mu luchd-cleachdaidh a tha air logadh a-steach don t-siostam an-dràsta. Tha an raon ùine ann an utmp air a shònrachadh a’ cleachdadh luach 32-bit time_t.

Cha obraich dìreach an raon ùine ann an utmp bho sheòrsa 32-bit gu 64-bit, oir leanaidh seo gu atharrachadh anns an Glibc ABI (atharraichidh an seòrsa ann an gnìomhan mar logadh a-steach (), getutid () agus utmpname ()) agus a’ briseadh co-chòrdalachd le tagraidhean a bhios a’ cleachdadh utmp, a’ toirt a-steach w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, manaidsearan taisbeanaidh xterm, emacs, openssh, qemu, samba, rsyslog, msaa. Air sgàth na tha de dhuilgheadasan agus iom-fhillteachd ann, chaidh am beachd a bhith a’ cur an àite an seòrsa time_t ann an utmp a dhiùltadh le luchd-leasachaidh Glibc. Air an aon adhbhar, chaidh an roghainn a bhith a’ cleachdadh an àite an-asgaidh a bha ri fhaighinn san structar utmp gus raon ùine 64-bit a bharrachd a chuir ris.

A bharrachd air an sin, chan eil atharrachadh doimhneachd seòrsa bit ann an utmp a ’fuasgladh dhuilgheadasan eile a tha ann mar-thà, a bu mhath leam faighinn cuidhteas cuideachd. Mar eisimpleir, feumaidh sgrìobhadh gu utmp còraichean sònraichte, a dh’ fheumas sochairean a bharrachd a thoirt do phròiseasan. Is e duilgheadas eile a th’ ann gu bheil an ailtireachd utmp a’ leigeil le luchd-cleachdaidh ionadail ionnsaighean DoS a dhèanamh, a’ leantainn gu briseadh air an t-seirbheis utmp tro bhith a’ làimhseachadh glasan faidhle, a tha ga dhèanamh do-dhèanta a bhith cinnteach gu bheil susbaint utmp a’ nochdadh fìor staid an t-siostaim. Bhathar a’ moladh pròiseas cùl-fhiosrachaidh a bharrachd a chleachdadh gus ruigsinneachd air utmp a làimhseachadh, ach airson gnìomhan mar sin tha pròiseas logadh a-steach systemd ann mu thràth agus chan eilear a ’moladh pròiseas sònraichte eile a chuir air bhog (feumaidh tagraidhean dàta a ghluasad gu dà neach-làimhseachaidh aig an aon àm).

Aig an aon àm, eadhon nuair a tha thu a’ fuasgladh na trioblaid le ionnsaighean DoS, chan eil susbaint utmp fhathast ach fiosrachail agus chan eil iad a’ gealltainn sealladh air fìrinn. Mar eisimpleir, bidh diofar emuladairean agus ioma-fhillteadairean crìochnachaidh a’ nochdadh an staid ann an dòigh eadar-dhealaichte - le bhith a’ cur air bhog còig cinn-uidhe GNOME bidh aon neach-cleachdaidh air a nochdadh ann an utmp, agus ma chuireas tu còig cinn-uidhe konsole no xterm air bhog ann an KDE thig sia. Tha giùlan sgrion agus tmux a cheart cho eadar-dhealaichte: sa chiad chùis, tha gach seisean air a chunntadh mar neach-cleachdaidh air leth, agus san dàrna fear, chan eil ach aon neach-cleachdaidh air a nochdadh airson a h-uile seisean.

Mar thoradh air an sin, mar am fuasgladh as sìmplidh, thathas a’ moladh a h-uile tagradh a ghluasad gus an t-seirbheis logind systemd-logind eile a tha ann mar-thà a chleachdadh agus, às deidh nach eil prògraman gnàthach ann a ’faighinn cothrom air utmp, stad air clàradh gu utmp. Gus a dhol an àite wtmp, thathas a’ moladh eadar-aghaidh bathar-bog ullachadh airson fiosrachadh a sgrìobhadh agus a leughadh mu luchd-cleachdaidh a’ cleachdadh systemd-journald. Tha an codebase airson an ath fhoillseachadh de systemd 254 mu thràth a’ toirt a-steach an comas-gnìomh riatanach gus dàta ath-chuiridh utmp a thoirt seachad tro libsystemd a’ cleachdadh an sd-login.h API no tro DBUS.

Source: fosgailtenet.ru

Cuir beachd ann