Виконання довільного коду

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Інформаційна безпека
Критерії оцінки інформаційної безпеки

Цілісність · Доступність · Конфіденційність · Спостережність· Невідмовність

Нормативні документи

COBIT · ITIL · ISO/IEC 17799:2005 · ISO/IEC 27001:2013 ·

Забезпечення

Політика · СУІБ · КСЗІ · СЗІ

Захист інформації

Технічний захист інформації · Інженерний захист інформації · Криптографічний захист інформації · Організаційний захист інформації

У комп'ютерній безпеці виконання довільного коду (ACE) — це здатність зловмисника запускати будь-які команди або код на вибір зловмисника на цільовій машині або в цільовому процесі.[1] Вразливість виконання довільного коду — це недолік безпеки у програмному забезпеченні або апаратному забезпеченні, що дозволяє виконувати довільний код. Програма, призначена для використання такої вразливості, називається експлойт для виконання довільного коду (експлойт). Можливість ініціювати виконання довільного коду через мережу (особливо через глобальну мережу, таку як Інтернет) часто називають віддаленим виконанням коду (RCE або RCX).


Виконання довільного коду означає, що якщо хтось надішле спеціально розроблений набір даних до комп'ютера, він зможе змусити його виконувати будь-які дії. Хоча ця конкретна вразливість може не призводити до реальних проблем у реальному світі, дослідники обговорюють, чи вказує вона на природну схильність комп'ютерів мати вразливості, які дозволяють несанкціоноване виконання коду.[2]

Типи вразливостей

[ред. | ред. код]

Існує кілька класів вразливостей, які можуть призвести до здатності зловмисника виконувати довільні команди або код. Наприклад:

Методи

[ред. | ред. код]

Виконання довільного коду зазвичай досягається через контроль над лічильником команд (таким як стрибок або гілка) в процесі, що виконується. Вказівник інструкцій вказує на наступну інструкцію, яка буде виконана. Контроль над значенням вказівника інструкцій надає контроль над тим, яка інструкція буде виконана далі. Для виконання довільного коду багато експлойтів ін'єктують код у процес (наприклад, шляхом надсилання введення, яке зберігається у вхідному буфері в оперативній пам'яті) і використовують вразливість для зміни вказівника інструкцій так, щоб він вказував на ін'єктований код. Після цього ін'єктований код автоматично виконується. Цей тип атаки використовує той факт, що більшість комп'ютерів (які використовують архітектуру фон Неймана) не розрізняють код і дані,[7][8] тому шкідливий код може бути замаскований під безпечні вхідні дані. Багато новіших процесорів мають механізми, які ускладнюють це, наприклад, біт заборони виконання.[9][10]

Поєднання з підвищенням привілеїв

[ред. | ред. код]

Сам по собі експлойт для виконання довільного коду надає зловмиснику ті ж самі привілеї, що й у цільового процесу, який є вразливим.[11] Наприклад, при використанні вразливості в веббраузері, зловмисник може діяти від імені користувача, виконуючи дії, такі як зміна файлів на комп'ютері або доступ до банківської інформації, але не зможе виконувати системні дії (якщо тільки користувач не має таких прав).

Щоб обійти це обмеження, коли зловмисник отримує можливість виконувати довільний код на цільовій системі, часто намагаються використати експлойт для Підвищення привілеїв з метою отримання додаткового контролю. Це може включати доступ до самого ядра або облікового запису, такого як Адміністратор, SYSTEM або root. Незалежно від того, чи вдалося отримати підвищені привілеї, експлойти можуть завдати серйозної шкоди або перетворити комп'ютер на зомбі — однак підвищення привілеїв допомагає приховати атаку від легітимного адміністратора системи.

Приклади

[ред. | ред. код]

Хобісти ретрогеймінгу змогли знайти вразливості в класичних відеоіграх, що дозволяють їм виконувати довільний код, зазвичай використовуючи точну послідовність натискань кнопок у інструментально-асистованому суперплеї для виклику переповнення буфера, що дозволяє їм записувати в захищену пам'ять. На заході Awesome Games Done Quick 2014 група ентузіастів спідрану змогла закодувати та запустити версії ігор Pong і Snake в копії Super Mario World[12], використовуючи вихід за межі функціонального покажчика, що вказує на буфер, контрольований користувачем, для виконання довільного коду.

12 червня 2018 року боснійський дослідник безпеки Жан-Ів Авенар з Mozilla виявив вразливість для виконання довільного коду (ACE) в Windows 10.[13]

1 травня 2018 року дослідник безпеки виявив вразливість ACE у 7-Zip архіваторі файлів.[14]

PHP став об'єктом численних вразливостей ACE.[15][16][17]

9 грудня 2021 року була виявлена вразливість RCE під назвою "Log4Shell" у популярному фреймворку логування Log4j, що вплинула на багато сервісів, включаючи iCloud, Minecraft: Java Edition та Steam, і була охарактеризована як "найбільша та найкритичніша вразливість останнього десятиліття".[18][19]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Team, KernelCare (25 січня 2021). Remote code execution attack: what it is, how to protect your systems. blog.kernelcare.com (англ.). Процитовано 22 вересня 2021.
  2. Johnson, Pontus (2021). Intrinsic Propensity for Vulnerability in Computers? Arbitrary Code Execution in the Universal Turing Machine. arXiv:2105.02124.
  3. Deserialization of untrusted data. owasp.org.
  4. Understanding type confusion vulnerabilities: CVE-2015-0336. microsoft.com. 18 червня 2015.
  5. Exploiting CVE-2018-19134: remote code execution through type confusion in Ghostscript. lgtm.com. 5 лютого 2019.
  6. LDD arbitrary code execution.
  7. Gilreath, William F.; Laplante, Phillip A. (31 березня 2003). Computer Architecture: A Minimalist Perspective (англ.). Springer Science & Business Media. ISBN 9781402074165.
  8. Reilly, Edwin D. (2003). Milestones in Computer Science and Information Technology (англ.). Greenwood Publishing Group. с. 245. ISBN 9781573565219.
  9. Tech Insight: Execute Disable Bit (XD-Bit) (PDF). Toshiba Polska. 2005. Архів оригіналу (PDF) за 31 жовтня 2018. Процитовано 31 жовтня 2018.
  10. AMD has you covered (PDF). AMD. 2012. Архів оригіналу (PDF) за 5 березня 2019.
  11. Remote Code Execution - an overview. ScienceDirect Topics. Процитовано 5 грудня 2021.
  12. Orland, Kyle (14 January 2014). How an emulator-fueled robot reprogrammed Super Mario World on the fly. Ars Technica. Процитовано 27 July 2016.
  13. Microsoft Windows CVE-2018-8213 Arbitrary Code Execution Vulnerability. Symantec (англ.). Архів оригіналу за 31 жовтня 2018. Процитовано 31 жовтня 2018.
  14. Вразливість у 7-Zip може дозволити виконання довільного коду. Управління інформаційних технологій штату Нью-Йорк (укр.). Архів оригіналу за 15 серпня 2021. Процитовано 31 жовтня 2018.
  15. NVD - CVE-2017-12934. nvd.nist.gov. Процитовано 31 жовтня 2018.
  16. Виконання операцій файлів, що викликає незворотне десеріалізацію через потік "phar://" (PDF). Secarma Labs. 2018.
  17. NVD - CVE-2017-12933. nvd.nist.gov. Процитовано 31 жовтня 2018.
  18. Zero-day у всепроникному інструменті Log4j становить серйозну загрозу для Інтернету. Ars Technica. 9 грудня 2021 року. Процитовано 11 грудня 2021.
  19. Нещодавно виявлена вразливість у програмному забезпеченні 'найкритичніша вразливість останнього десятиліття'. The Guardian. 11 грудня 2021. Процитовано 11 грудня 2021.