sudo root уязвимост, засягаща Linux Mint ΠΈ Elementary OS

Π’ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Sudo, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ уязвимост (CVE-2019 18634-), ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² систСмата Π΄ΠΎ root ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π». ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС появява само слСд пусканСто Π½Π° sudo 1.7.1, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° опцията β€žpwfeedbackβ€œ във Ρ„Π°ΠΉΠ»Π° /etc/sudoers, която Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π½ΠΎ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Π² някои дистрибуции ΠΊΠ°Ρ‚ΠΎ Linux Mint ΠΈ Elementary OS. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ sudo 1.8.31, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° ΠΏΡ€Π΅Π΄ΠΈ няколко часа. Уязвимостта остава нСотстранСна Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΈΡ‚Π΅ Π·Π° разпространСниС.

ΠžΠΏΡ†ΠΈΡΡ‚Π° β€œpwfeedback” позволява ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π½Π°ΠΊΠ° β€œ*” слСд всСки въвСдСн Π·Π½Π°ΠΊ ΠΏΡ€ΠΈ въвСТданС Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π°. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Π“Ρ€Π΅ΡˆΠΊΠΈ ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° функцията getln(), Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° във Ρ„Π°ΠΉΠ»Π° tgetpass.c, Ρ‚Π²ΡŠΡ€Π΄Π΅ голям Π½ΠΈΠ· Π·Π° ΠΏΠ°Ρ€ΠΎΠ»Π°, ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Π½ ΠΏΡ€Π΅Π· стандартния Π²Ρ…ΠΎΠ΄Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ (stdin) ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ условия ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ сС ΠΏΠΎΠ±Π΅Ρ€Π΅ Π² разпрСдСлСния Π±ΡƒΡ„Π΅Ρ€ ΠΈ Π΄Π° ΠΏΡ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈ Π΄Π°Π½Π½ΠΈ Π² стСка. ΠŸΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅Ρ‚ΠΎ възниква ΠΏΡ€ΠΈ стартиранС Π½Π° sudo ΠΊΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎ root.

Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΅, Ρ‡Π΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° спСциалния символ ^U (изчистванС Π½Π° Ρ€Π΅Π΄) ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° въвСТданС ΠΈ Π°ΠΊΠΎ опСрацията Π·Π° запис Π΅ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Π°, ΠΊΠΎΠ΄ΡŠΡ‚, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° изчистванСто Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ символи β€ž*β€œ, Π½ΡƒΠ»ΠΈΡ€Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° наличния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π°, Π½ΠΎ Π½Π΅ Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»Π΅Ρ†Π° към ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° стойност Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° позиция Π² Π±ΡƒΡ„Π΅Ρ€Π°. Π”Ρ€ΡƒΠ³ Ρ„Π°ΠΊΡ‚ΠΎΡ€, допринасящ Π·Π° Сксплоатацията, Π΅ липсата Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° β€žpwfeedbackβ€œ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ пристигат Π½Π΅ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Π° ΠΏΡ€Π΅Π· входния ΠΏΠΎΡ‚ΠΎΠΊ (Ρ‚ΠΎΠ·ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ позволява Π΄Π° сС ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ условия Π·Π° възникванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ запис, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ систСми с СднопосочСн Π½Π΅Π½Π°Π·ΠΎΠ²Π°Π½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ възниква Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ ΠΎΠΏΠΈΡ‚ Π·Π° запис Π΄ΠΎ края Π½Π° ΠΊΠ°Π½Π°Π» Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅).

Въй ΠΊΠ°Ρ‚ΠΎ атакуващият ΠΈΠΌΠ° пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ прСзаписванСто Π½Π° Π΄Π°Π½Π½ΠΈ Π² стСка, Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС създадС Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΡƒ позволява Π΄Π° Сскалира ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡ‚Π΅ си Π΄ΠΎ root. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΎΡ‚ всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», нСзависимо ΠΎΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° sudo ΠΈΠ»ΠΈ спСцифичнитС Π·Π° потрСбитСля настройки Π² sudoers. Π—Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, трябва Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ няма настройка β€žpwfeedbackβ€œ Π² /etc/sudoers ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π΄Π° я Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ (β€žΠŸΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ !pwfeedbackβ€œ). Π—Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π°:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
ΠŸΠ°Ρ€ΠΎΠ»Π°: Π“Ρ€Π΅ΡˆΠΊΠ° Π² сСгмСнтиранСто

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€