බොහෝ Linux බෙදාහැරීම් මත root ප්‍රවේශයට ඉඩ සලසන PolKit හි විවේචනාත්මක අවදානම

Qualys විසින් උසස් ප්‍රවේශ අයිතීන් අවශ්‍ය වන ක්‍රියා සිදු කිරීමට වරප්‍රසාද ලත් නොවන පරිශීලකයින්ට ඉඩ දීම සඳහා බෙදාහැරීම්වල භාවිතා කරන Polkit (කලින් PolicyKit) පද්ධති සංරචකයේ (CVE-2021-4034) අවදානමක් හඳුනාගෙන ඇත. අවධානම නිසා වරප්‍රසාද ලත් දේශීය පරිශීලකයෙකුට තම වරප්‍රසාද මූල පරිශීලකයා වෙත ඉහළ නැංවීමට සහ පද්ධතිය මත පූර්ණ පාලනය ලබා ගැනීමට ඉඩ සලසයි. මෙම ගැටලුව PwnKit කේත නාමයෙන් නම් කර ඇති අතර බොහෝ ලිනක්ස් බෙදාහැරීම්වල පෙරනිමි වින්‍යාසය තුළ ක්‍රියාත්මක වන වැඩ සූරාකෑමක් නිෂ්පාදනය කිරීම සඳහා කැපී පෙනේ.

ගැටළුව ඇත්තේ PolKit සමඟ ඇතුළත් කර ඇති pkexec උපයෝගීතාවයේ වන අතර එය SUID මූල ධජය සමඟ එන අතර නිශ්චිත PolKit රීතිවලට අනුව වෙනත් පරිශීලකයෙකුගේ වරප්‍රසාද සමඟ විධාන ක්‍රියාත්මක කිරීමට සැලසුම් කර ඇත. pkexec වෙත යවන ලද විධාන රේඛා තර්ක වැරදි ලෙස හැසිරවීම හේතුවෙන්, වරප්‍රසාද ලත් පරිශීලකයෙකුට ස්ථාපිත ප්‍රවේශ නීති නොතකා, සත්‍යාපනය මඟහැර ඔහුගේ කේතය root ලෙස ක්‍රියාත්මක කර ගත හැක. ප්‍රහාරයක් සඳහා, PolKit හි කුමන සැකසුම් සහ සීමාවන් සකසා ඇත්ද යන්න ගැටළුවක් නොවේ, pkexec උපයෝගීතාව සමඟ ක්‍රියාත්මක කළ හැකි ගොනුව සඳහා SUID මූල ගුණාංගය සකසා තිබීම ප්‍රමාණවත් වේ.

ක්‍රියාවලියක් ආරම්භ කිරීමේදී සම්මත කරන ලද විධාන රේඛා තර්ක ගණනය (argc) හි නිවැරදි බව Pkexec විසින් පරීක්ෂා නොකරයි. pkexec හි සංවර්ධකයින් උපකල්පනය කළේ argv අරාවේ පළමු ප්‍රවේශයේ සෑම විටම ක්‍රියාවලියේ නම (pkexec) අඩංගු වන අතර දෙවන ප්‍රවේශය NULL හෝ pkexec හරහා ධාවනය වන විධානයේ නම වේ. තර්ක කවුන්ටරය අරාවේ සත්‍ය අන්තර්ගතයට එරෙහිව පරීක්‍ෂා කර නොමැති අතර සෑම විටම 1 ට වඩා වැඩි යැයි උපකල්පනය කරන ලද බැවින්, Linux execve ශ්‍රිතය මඟින් ඉඩ දෙන ක්‍රියාවලියට හිස් argv අරාවක් ලබා දුන්නේ නම්, pkexec NULL පළමු තර්කය ලෙස සැලකේ ( ක්‍රියාවලි නම), සහ බෆර මතකයෙන් පිටත ඊළඟ එක, අරාවේ ඊළඟ අන්තර්ගතය ලෙස. |——+———+—+—+———|———+———+——+——— | args[0] | argv[1] | … | argv[argc] | envp[0] | envp[1] | … | envp[envc] | |—-|—-+—-|—-+——+——|——|—-|—-+—-|—-+——+——|——| VVVVVV "වැඩසටහන" "-විකල්පය" NULL "අගය" "PATH=name" NULL

ගැටළුව වන්නේ මතකයේ ඇති argv අරාව අනුගමනය කිරීම පරිසර විචල්‍යයන් අඩංගු envp අරාවයි. මේ අනුව, හිස් argv අරාවක් සමඟින්, pkexec විසින් පරිසර විචල්‍යයන් සහිත අරාවේ පළමු මූලද්‍රව්‍යයෙන් ඉහළ වරප්‍රසාද සහිතව ක්‍රියාත්මක වන විධානය පිළිබඳ දත්ත උපුටා ගනී (argv[1] envp[0] ට සමාන විය), එහි අන්තර්ගතය විය හැකිය. ප්රහාරකයා විසින් පාලනය කරනු ලැබේ.

argv[1] අගය ලැබුණු පසු, pkexec PATH හි ඇති ගොනු මාර්ග සැලකිල්ලට ගනිමින් ක්‍රියාත්මක කළ හැකි ගොනුව වෙත සම්පූර්ණ මාර්ගය තීරණය කිරීමට උත්සාහ කරයි, සහ argv වෙත ආපසු යන සම්පූර්ණ මාර්ගය සමඟ පොයින්ටරය තන්තුවට ලියයි[1]. argv[1] envp[0] ට සමාන බැවින් පළමු පරිසර විචල්‍යයේ අගය නැවත ලිවීමට. පළමු පරිසර විචල්‍යයේ නම හැසිරවීමෙන්, ප්‍රහාරකයෙකුට pkexec හි වෙනත් පරිසර විචල්‍යයක් ආදේශ කළ හැකිය, නිදසුනක් ලෙස, suid වැඩසටහන් වල ඉඩ නොදෙන පරිසර විචල්‍ය "LD_PRELOAD" ආදේශ කර, එහි හවුල් පුස්තකාලය පූරණය කිරීමට ක්‍රියාවලියට කටයුතු සලසන්න. ක්රියාවලිය.

ක්‍රියාකාරී සූරාකෑම GCONV_PATH විචල්‍ය ආදේශනය භාවිතා කරයි, එය එහි කේතයේ iconv_open() භාවිතා කරන g_printerr() ශ්‍රිතය ඇමතීමේ දී ගතිකව පූරණය වන සංකේත ට්‍රාන්ස්කෝඩින් පුස්තකාලයට යන මාර්ගය තීරණය කිරීමට භාවිතා කරයි. GCONV_PATH හි මාර්ගය නැවත නිර්වචනය කිරීමෙන්, ප්‍රහාරකයාට සාමාන්‍ය iconv පුස්තකාලය නොව ඔහුගේම පුස්තකාලය පූරණය කළ හැකිය, pkexec තවමත් root ලෙස ක්‍රියාත්මක වන විට සහ දියත් කිරීමේ අවසර පරීක්ෂාවට පෙර දෝෂ පණිවිඩය අතරතුර ක්‍රියාත්මක වන හසුරුවන්න. .

මතකය දූෂණය වීම නිසා ගැටළුව ඇති වුවද, භාවිතා කරන දෘඪාංග ගෘහ නිර්මාණ ශිල්පය කුමක් වුවත් එය විශ්වාසදායක ලෙස සහ නැවත නැවතත් භාවිතා කළ හැකි බව සටහන් වේ. සකස් කළ සූරාකෑම Ubuntu, Debian, Fedora සහ CentOS මත සාර්ථකව අත්හදා බලා ඇත, නමුත් අනෙකුත් බෙදාහැරීම් සඳහාද භාවිතා කළ හැක. මුල් සූරාකෑම තවමත් ප්‍රසිද්ධියේ නොමැත, එය සුළුපටු බවත් වෙනත් පර්යේෂකයන්ට පහසුවෙන් ප්‍රතිනිර්මාණය කළ හැකි බවත් පෙන්නුම් කරයි, එබැවින් බහු-පරිශීලක පද්ධති මත හැකි ඉක්මනින් hotfix යාවත්කාලීනය ස්ථාපනය කිරීම වැදගත් වේ. Polkit BSD පද්ධති සහ Solaris සඳහාද ඇත, නමුත් සූරාකෑම සඳහා ගවේෂණය කර නොමැත. දන්නා දෙය නම්, OpenBSD කර්නලය execve() ඇමතීමේ දී null argc අගයක් යැවීමට ඉඩ නොදෙන බැවින්, OpenBSD හි ප්‍රහාරය සිදු කළ නොහැකි බවයි.

pkexec විධානය එකතු කිරීමේ සිට 2009 මැයි මාසයේ සිට ගැටළුව පවතී. PolKit හි ඇති අනාරක්ෂිත බව සඳහා වන විසඳුම තවමත් පැච් එකක් ලෙස පවතී (නිවැරදි කිරීමේ නිකුතුව පිහිටුවා නැත), නමුත් බෙදා හැරීමේ සංවර්ධකයින්ට ගැටලුව පිළිබඳව කල්තියා දැනුම් දී ඇති බැවින්, බොහෝ බෙදාහැරීම් පිළිබඳ තොරතුරු අනාවරණය කරන අවස්ථාවේදීම යාවත්කාලීන කිරීමක් ප්‍රකාශයට පත් කරන ලදී. අවදානම. RHEL 6/7/8, Debian, Ubuntu, openSUSE, SUSE, Fedora, ALT Linux, ROSA, Gentoo, Void Linux, Arch Linux සහ Manjaro හි ගැටළුව විසඳා ඇත. අවදානම අවහිර කිරීමට තාවකාලික පියවරක් ලෙස, ඔබට /usr/bin/pkexec වැඩසටහනෙන් SUID මූල ධජය ඉවත් කළ හැක ("chmod 0755 /usr/bin/pkexec").



මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න