Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ‡ΡƒΠΆΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹

Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ wall, поставляСмой Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ util-linux ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2024-28085), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ с escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° wall Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ использованиС escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Π½ΠΎ Π½Π΅ выполняСт эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, Ρ‡Ρ‚ΠΎ позволяСт Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

НапримСр, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ‘wall $(printf «\033[33mHI»)’ ΠΌΠΎΠΆΠ½ΠΎ вывСсти надпись «HI» ΠΆΡ‘Π»Ρ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС Π½Π° экранС, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π· ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ ΠΎ Π²Π²ΠΎΠ΄Π΅ пароля ΠΎΡ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ sudo Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ ΠΏΠΎΠ΄Π²ΠΎΡ…Π° ΠΈ Π²Π²Π΅Π΄Ρ‘Ρ‚ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ засвСтится Π² истории Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΏΠΎ сути ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вмСсто ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π²Π΅Π΄Ρ‘Ρ‚ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС). «\033[3A» // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ курсор Π²Π²Π΅Ρ€Ρ… Π½Π° 3 строк «\033[K» // удаляСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ «[sudo] password for a_user:» // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ запрос sudo «\033[?25l» // выставляСм Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ для скрытия Π²Π²ΠΎΠ΄Π° «\033[38;2;48;10;36m»

Π’ΠΎ врСмя Π²Ρ‹Π²ΠΎΠ΄Π° прСдупрСТдСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ввСдённая ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… дистрибутивах запускаСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ /usr/lib/command-not-found, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствуСт ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈ Π²Ρ‹Π΄Π°Ρ‚ΡŒ подсказку ΠΎ возмоТности Π΅Π³ΠΎ установки. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° command-not-found Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° пСрСдаётся Π² Π½Π΅Π³ΠΎ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄Π΅Π½ ΠΏΡ€ΠΈ просмотрС процСссов Π² систСмС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ запуска нСустановлСнной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ «xsnow» Π² спискС процСссов Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Π½ «/usr/lib/command-not-found — xsnow»). БоотвСтствСнно, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ запускаСмых процСссов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, анализируя появлСниС «/proc/$pid/cmdline» для ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° PID) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ ΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Ρ‘Π» ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ sudo ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ‚Ρ€ΡŽΠΊ, ΡΡƒΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² отслСТивании Π² спискС процСссов Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ запуска ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ sudo, оТидания Π΅Ρ‘ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈ осущСствлСния Π°Ρ‚Π°ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· «wall» сразу послС этого. Π§Π΅Ρ€Π΅Π· манипуляции c escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сообщСниС послС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния sudo Π½Π° Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° пароля. Π–Π΅Ρ€Ρ‚Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ошиблась ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΈ ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, засвСтив ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° «command-not-found».

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ трСбуСтся установка Ρ€Π΅ΠΆΠΈΠΌΠ° «mesg» Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «y», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ выставлСно Π² Ubuntu, Debian ΠΈ CentOS/RHEL. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ провСдСния Π°Ρ‚Π°ΠΊΠΈ продСмонстрирована Π² Ubuntu 22.04 Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ использовании gnome-terminal. Π’ Debian Π°Ρ‚Π°ΠΊΠ° Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² дистрибутивС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ «command-not-found», Π° Π² CentOS/RHEL Π°Ρ‚Π°ΠΊΠ° Π½Π΅ сработаСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° wall установлСна Π±Π΅Π· Ρ„Π»Π°Π³Π° setgid ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступа ΠΊ Ρ‡ΡƒΠΆΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°ΠΌ. ΠŸΡ€ΠΈ использовании windows-terminal Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π° для измСнСния содСрТимого Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π°.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ проявляСтся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ util-linux с 2013 Π³ΠΎΠ΄Π°, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π² выпуск 2.24 Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания сообщСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС wall, Π½ΠΎ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ чистку escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ уязвимости Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π²ΠΎ Π²Ρ‡Π΅Ρ€Π°ΡˆΠ½ΠΈΠΉ выпуск util-linux 2.40. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ исправлСния уязвимости Π² выпускС util-linux 2.39 Π±Ρ‹Π»Π° выявлСна Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° похоТая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ подстановку ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡŽ с локалями.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ