2038 சிக்கலில் இருந்து Glibc ஐ அகற்ற, utmp ஐப் பயன்படுத்துவதை நிறுத்த முன்மொழியப்பட்டது

SUSE இல் எதிர்கால தொழில்நுட்ப மேம்பாட்டுக் குழுவின் தலைவரான தோர்ஸ்டன் குக்குக் (எதிர்கால தொழில்நுட்பக் குழு, openSUSE MicroOS மற்றும் SLE மைக்ரோவை உருவாக்குகிறது), SUSE LINUX நிறுவன சேவையகத் திட்டத்தை 10 ஆண்டுகளாக முன்னெடுத்துச் சென்றவர், /var/run/utmp கோப்பை அகற்ற பரிந்துரைத்தார். Glibc இல் 2038 சிக்கலை முழுமையாக தீர்க்க விநியோகங்களில். utmp, wtmp மற்றும் lastlog ஐப் பயன்படுத்தும் அனைத்து பயன்பாடுகளும் systemd-logind ஐப் பயன்படுத்தும் பயனர்களின் பட்டியலைப் பெறுவதற்கு மாற்றப்படும்.

ஜனவரி 19, 2038 அன்று, 32-பிட் டைம்_டி வகையால் குறிப்பிடப்பட்ட எபோகல் டைம் கவுண்டர்கள் நிரம்பி வழியும். Glibc, 64-பிட் டைம்_டி வகையை அறிமுகப்படுத்தினாலும், 32-பிட் பயனர் விண்வெளி பயன்பாடுகளுடன் இணக்கத்தன்மையை பராமரிக்க 64-பிட் இயங்குதளங்களில் சில சந்தர்ப்பங்களில் 32-பிட் டைம்_டி வகையைப் பயன்படுத்துகிறது. அத்தகைய ஒரு வழக்கு /var/run/utmp கோப்பு, இது தற்போது கணினியில் உள்நுழைந்துள்ள பயனர்களைப் பற்றிய தரவைச் சேமிக்கிறது. utmp இல் உள்ள நேரப் புலம் 32-பிட் time_t மதிப்பைப் பயன்படுத்தி குறிப்பிடப்படுகிறது.

utmp இல் உள்ள நேர புலத்தை 32-பிட்டிலிருந்து 64-பிட் வகைக்கு மாற்றுவது வேலை செய்யாது, ஏனெனில் இது Glibc ABI இல் மாற்றத்திற்கு வழிவகுக்கும் (உள்நுழைவு(), getutid() மற்றும் utmpname போன்ற செயல்பாடுகளில் வகை மாறும். ()) மற்றும் w, who, uptime, login, su, sudo, useradd, systemd, sysvinit, tcsh, xterm display managers, emacs, openssh, qemu, samba, rsyslog போன்றவை உட்பட utmp ஐப் பயன்படுத்தும் பயன்பாடுகளுடன் இணக்கத்தன்மையை உடைத்தல். சாத்தியமான ஆபத்துகள் மற்றும் சிக்கலான தன்மை காரணமாக, utmp இல் time_t வகையை மாற்றும் யோசனை Glibc டெவலப்பர்களால் நிராகரிக்கப்பட்டது. அதே காரணத்திற்காக, கூடுதல் 64-பிட் நேர புலத்தைச் சேர்க்க, utmp கட்டமைப்பில் உள்ள இலவச இடத்தைப் பயன்படுத்துவதற்கான விருப்பம் நிராகரிக்கப்பட்டது.

கூடுதலாக, utmp இல் உள்ள வகை பிட் ஆழத்தை மாற்றுவது ஏற்கனவே உள்ள பிற சிக்கல்களைத் தீர்க்காது, அதை நான் அகற்ற விரும்புகிறேன். எடுத்துக்காட்டாக, utmp க்கு எழுதுவதற்கு சிறப்பு உரிமைகள் தேவை, இதற்கு செயல்முறைகளுக்கு கூடுதல் சலுகைகள் வழங்கப்பட வேண்டும். மற்றொரு சிக்கல் என்னவென்றால், utmp கட்டமைப்பு உள்ளூர் பயனர்களை DoS தாக்குதல்களை மேற்கொள்ள அனுமதிக்கிறது, இது கோப்பு பூட்டுகளை கையாளுவதன் மூலம் utmp சேவையை சீர்குலைக்க வழிவகுக்கிறது, இது utmp இன் உள்ளடக்கங்கள் கணினியில் உண்மையான நிலையை பிரதிபலிக்கின்றன என்பதை உறுதிப்படுத்த முடியாது. utmpக்கான அணுகலைக் கையாள கூடுதல் பின்னணி செயல்முறையைப் பயன்படுத்த முன்மொழியப்பட்டது, ஆனால் அத்தகைய பணிகளுக்கு ஏற்கனவே systemd-logind செயல்முறை உள்ளது மற்றும் மற்றொரு சிறப்பு செயல்முறையைத் தொடங்குவது விரும்பத்தகாதது (பயன்பாடுகள் ஒரே நேரத்தில் இரண்டு கையாளுபவர்களுக்கு தரவை மாற்ற வேண்டும்).

அதே நேரத்தில், DoS தாக்குதல்களில் சிக்கலைத் தீர்க்கும் போது கூட, utmp இன் உள்ளடக்கங்கள் தகவல்களாக மட்டுமே இருக்கும் மற்றும் யதார்த்தத்தின் பிரதிபலிப்புக்கு உத்தரவாதம் அளிக்காது. எடுத்துக்காட்டாக, வெவ்வேறு எமுலேட்டர்கள் மற்றும் டெர்மினல் மல்டிபிளெக்சர்கள் அவற்றின் நிலையை வித்தியாசமாகப் பிரதிபலிக்கின்றன - ஐந்து க்னோம் டெர்மினல்களை வெளியிடுவது ஒரு பயனரை utmp இல் பிரதிபலிக்கும், மேலும் ஐந்து konsole அல்லது xterm டெர்மினல்களை KDE இல் தொடங்கினால் ஆறு கிடைக்கும். ஸ்கிரீன் மற்றும் tmux இன் நடத்தையும் இதேபோல் வேறுபட்டது: முதல் வழக்கில், ஒவ்வொரு அமர்வும் தனித்தனி பயனராகக் கணக்கிடப்படும், இரண்டாவதாக, அனைத்து அமர்வுகளுக்கும் ஒரே ஒரு பயனர் மட்டுமே பிரதிபலிக்கிறார்.

இதன் விளைவாக, எளிமையான தீர்வாக, ஏற்கனவே இருக்கும் மாற்று systemd-logind சேவையைப் பயன்படுத்த அனைத்து பயன்பாடுகளையும் மாற்றுவதற்கு முன்மொழியப்பட்டது, மேலும் utmpஐ அணுகும் தற்போதைய நிரல்கள் இல்லாத பிறகு, utmp க்கு பதிவு செய்வதை நிறுத்தவும். wtmp ஐ மாற்றுவதற்கு, systemd-journald ஐப் பயன்படுத்தும் பயனர்களைப் பற்றிய தகவல்களை எழுதுவதற்கும் படிப்பதற்கும் மென்பொருள் இடைமுகங்களைத் தயாரிக்க முன்மொழியப்பட்டுள்ளது. sd-login.h API ஐப் பயன்படுத்தி அல்லது DBUS வழியாக libsystemd வழியாக utmp ரீப்ளேஸ்மென்ட் தரவை வழங்குவதற்கு தேவையான செயல்பாடுகளை systemd 254 இன் அடுத்த வெளியீட்டிற்கான கோட்பேஸ் ஏற்கனவே கொண்டுள்ளது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்