Підвищення привілеїв
Підвищення привілеїв — це дія, спрямована на отримання доступу до захищених від користувача або програми частини комп'ютерних ресурсів. Такий процес, зазвичай, виконується за допомогою використання (експлуатації, звідси ж термін «exploit») помилок або недокументованих можливостей операційної системи або додатків. Нерідко можливості підвищення привілеїв з'являються за невірної конфігурації ПЗ або обладнання. Причиною виконання порушником підвищення привілеїв є можливість здійснити певні дії (виконати довільний код, тощо) з правами не передбаченими розробниками системи.[1]
Проблематика
Розмежування доступу до ресурсів є одним із основних принципів побудови політики інформаційної безпеки сучасних комп'ютерних систем. Ця концепція дозволяє надавати права до певних множин системних ресурсів диференційовано — одні групи користувачів отримують доступ до деяких ресурсів, інші — ні. Таким чином досягається можливість підвищити рівень захищеності додатків та даних від несанкціонованого доступу з боку порушника або шкідливого ПЗ та можливість роботи багатьох користувачів у рамках однієї системи (одного комп'ютера), розмежовуючи доступ до приватних файлів користувачів. В свою чергу, порушник може обійти такий захист за допомогою зміни рівня своїх прав, тобто привілеїв у системі — саме цей процес називається підвищенням привілеїв. До привілеїв належать, зазвичай, права доступу до частин файлової системи, сегментів RAM, системних файлів та викликів системних функцій. Підвищення привілеїв дозволяє порушнику (користувачу чи програмі) отримати повноваження доступу вищі за його штатні повноваження. Таким чином досягається доступ до видалення та модифікації файлів, виконання довільного коду, встановлення несанкціонованого ПЗ.[2]
Класифікація за цілями
Цілями атаки на підвищення привілеїв можуть бути будь-які комп'ютерні системи із розмежуванням доступу, реалізованим тим чи іншим шляхом. Однак основні цілі таких атак можна виділити у наступний список:
- Операційні системи — задача підвищення привілеїв в операційній системі є однією з основних серед тих, що вирішуються порушником при здійсненні атаки на кінцевий хост.[3]
- Вебзастосунки — окремі вразливості та загальна відносна відкритість архітектури роблять веб-застосунки бажаною ціллю порушників, здебільшого завдяки можливості здійснення несанкціонованого доступу до даних інших користувачів.
- Мережевий вузол — атаки такого характеру виконуються, здебільшого, в рамках APT-кампаній, з метою отримання доступу до певного добре захищеного елемента мережі. Пряма атака на такий хост може бути доволі складною операцією, в той час як порушник може підвищити свої можливості для дій в мережі шляхом захоплення доступу до одного із менш захищених її елементів. Інакше кажучи, неавторизований порушник отримує збільшені привілеї в мережі, еквівалентні рівню доступу ураженого хоста.[4]
Класифікація за напрямками
В залежності від напрямку отримання привілеїв, розрізняють два типи таких змін — вертикальне та горизонтальне.
Вертикальне підвищення привілеїв
Сутність цього типу підвищення привілеїв полягає в отриманні більшого рівня доступу користувачем або програмою з нижчим рівнем, тобто розширенні множини дозволених ресурсів. Інакше кажучи, у випадку вертикального підвищення привілеїв користувач має вищий рівень доступу, ніж очікуваний.
Більшість багатокористувацьких операційних систем мають ієрархію рівнів доступу схожу на наведену нижче (від найменш до найбільш привілейованих):
- Неавторизовані користувачі
- Авторизовані користувачі
- Адміністратори
- root-користувач (суперкористувач)
- Ядро ОС
Ієрархія рівнів додатків є аналогічною, в залежності від прав користувача, що ініціював процес. Таким чином, порушник має розширити свої можливості у системі шляхом отримання більшого рівня доступу — здебільшого при спробах несанкціанованого доступу з боку стороннього порушника або шкідливого ПЗ можна констатувати перехід (або спроби переходу) з рівня неавторизованих або авторизованих користувачів на рівні вищі за адміністраторські. Таку тенденцію можна пояснити потенційно ефективнівнішими можливостями цих груп користувачів у порівнянні зі звичайними. Окремо слід зазначити, що дана модель є спрощеною у порівнянні з реальною, оскільки зазвичай лінійне розподілення рівнів доступу зустрічається у мандатних системах розмежування доступу, у той час як на практиці більшість ОС реалізують дискреційні та адміністративні системи розмежування. У цих випадках також здебільшого доречно говорити про розподілення груп користувачів за рівнем доступу, але їхня ієрархія, зазвичай є набагато складнішою. Тим не менш, підвищення привілеїв в такому випадку залишається актуальним, оскільки отримання множини доступів більш привілейованого користувача в таких системах все одно надає більший простір для дій порушника. Також слід зазаначити теоретичну можливість отримання окремих привілеїв із загальної матриці доступу за умови використання дискреційноїх системи розмежування доступу.
Jailbreak
Більшість UNIX-подібних операційних систем використовують технологію jail (англ. «в'язниця») — метод віртуалізації, що дозволяє обмежувати виконуваний процес у рамках віртуальної копії необхідного інтерфейсу ОС. Зокрема, така технологія використовується в операційній системі iOS, звідки й походить термін jailbreaking, що означає злам системи віртуалізації таким чином, щоб розширити повноваження обмеженої програми за встановлені рамки, зокрема шляхом надання розширеного доступу до файлової системи.[5]
Горизонтальне підвищення привілеїв
Ситуація горизонтального підвищення привілеїв виникає при зміні прав доступу без зміни загального рівня доступу. Інакше кажучи, у такому випадку користувач системи може отримувати доступ до захищених даних інших користувачів. Характерною відмінністю від вертикального підвищення в загальному випадку є збереження існуючого рівня доступу до інших додатків системи, її елементів.
Горизонтальне підвищення привілеїв у класичному середовищі операційних систем без проявів вертикального підвищення здебільшого неможливе, причиною тому є тісна пов'язаність доступу до конфіденційних даних користувачів із підвищеними правами адміністратора. Тому доцільно буде казати про актуальність горизонтальних підвищень у веб-застосунках.
Класичним випадком реалізації горизонтального підвищення привілеїв є несанкціонований доступ одного користувача веб-ресурсу до приватних даних іншого. Таку ситуацію найчастіше можна розглядати на прикладах соціальних мереж та сервісів онлайн-банкінгу, які здебільшого є пріоритетними цілями для зловмисників з причин фінансової вигоди. Шляхом експлуатації тих чи інших вразливостей системи порушник може отримувати доступ до конфіденційних ресурсів інших користувачів аж до повного заволодіння акаунтом.
Окремим різновидом горизонтального підвищення привілеїв можна розглядати соціальну інженерію, що дозволяє отримати несанкціонований доступ до іншого користувацького акаунту. З формальної точки зору, права конкретного користувача в системі розширюються на раніше недозволені області без зміни прав доступу до більш високорівневих сервісів.
Деякі методи підвищення привілеїв
Здебільшого підвищення привілеїв у комп'ютерній системі виконується шляхом експлуатації певної вразливості ПЗ чи його конфігурації, але також існують приклади виконання такого роду атак через пряме подолання системи захисту (Bruteforce, тощо).
Основним способом підвищення привілеїв за допомогою вразливостей ПЗ є виконання певного несанкціонованого коду в рамках дозволеного процесу з певними високими дозволами. В даному переліку наведені лише деякі попуярні методи отримання підвищених привілеїв різного типу, але на практиці зустрічається набагато більша кількість подібних атак.[6][3]
Форматоване введення
Більшість програм приймають певні потоки даних на введення для подальшої обробки, при чому робиться припущення про неможливість введення некоректно відформатованих даних. В такому разі перевірка потоку введення не виконується і дані надходять до внутрішніх програмних алгоритмів «як є». У випадку введення некоректних вхідних даних поведінка програми буде непередбачуваною, а це означає, що за певних умов порушник може виконати довільний код з правами програми, що була зкомпрометована. На практиці така атака відбувається шляхом порушення форматування вхідних даних та ін'єкції шкідливого коду, який і буде виконаним з підвищеними привілеями.
Підміна виконуваного файлу
Деякі виконувані файли, що викликаються системою або іншими привілейованими програмами знаходяться у директоріях не захищених від редагування. Таким чином порушник може підмінити виконуваний файл або динамічну бібліотеку на свій екземпляр, що містить шкідливий код тим самим гарантувавши його запуск із привілеями батьківського процесу.
Помилки доступу до памя'ті, переповнення стеку
Деякі програмні дефекти спричинені помилкою розробника або компілятора можуть призводити до потенційних помилок доступу до пам'яті, в ході яких програма може звертатися до заборонених їй ділянок пам'яті або звертатися за командами до сегментів, що містять дані. Таким чином, правильно ініціалізуючи «небезпечні» сегменти порушник має змогу зпровокувати виконання шкідливого коду з привілеями дефектного процесу.
Bruteforce та інші види отримання паролю
Прямий перебір паролів облікового запису користувача дозволяє за певний час отримати несанкціонований доступ до нього здійснивши горизонтальне підвищення привілеїв. Аналогічних результатів можна досягти іншими методами нелегального отримання аутентифікаційних даних — викрадення паролів, використання келогерів, перехоплення файлів cookie, тощо.
Атаки міжсайтового скриптингу (XSS)
Несанкціоноване впровадження коду на сторінку веб-застосунку дозволяє підвищити привілеї його виконання та домогтися його виконання на атакованому веб-сервері.
Помилки внутрішньої конфігурації системи
До атак з використанням цього типу дефектів здебільшого вразливі ОС сімейства Windows внаслідок своєї складної архітектури. Некоректний виклик тієї чи іншої функції системного API може призвести до побічних наслідків, як, наприклад, зміна захищених ключів реєстру чи конфігураційних файлів, в результаті чого привілеї того чи іншого процесу або компоненту можна критично змінити. Також до вразливостей цього роду можна віднести помилки системного API, що дозволяють отримувати доступ до захищених зон пам'яті та виконання таким чином стороннього коду із найвищими привілеями. Більшість відомих дефектів такого типу легко виявляються у застарілих системах, де відсутні відповідні виправлення систем безпеки.
Захист
Способи захисту системи від несанкціонованих підвищень привілеїв полягають в усуненні вразливостей, що спричинюють появу можливостей проведення атак такого характеру. З користувацької сторони це являє собою встановлення останніх оновленнь систем захисту ОС та ПЗ. До конкретних технологій відповідного профілю належать наступні заходи:
- Віртуалізація — запуск програм в обмеженому середовищі;
- Принцип мінімальних привілеїв;
- Використання компіляторів із захистом від переповнення буферу;
- Використання технологій безпечного коду;
- Використання внутрішнього парольного захисту;
- Технологія ASLR;
- Використання CSRF токенів;
- Використання фільтрів даних введення у формах веб-сторінок.
Примітки
- What is privilege escalation attack? - Definition from WhatIs.com. SearchSecurity (амер.). Процитовано 20 квітня 2018.
- My 5 Top Ways to Escalate Privileges. Trustwave. Процитовано 20 квітня 2018.
- Unmasking Kernel Exploits. Lastline (амер.). 7 липня 2015. Процитовано 20 квітня 2018.
- Privilege Escalation. Azeria-Labs (амер.). Процитовано 20 квітня 2018.
- Geek 101: What Is Jailbreaking?. PCWorld (англ.). Процитовано 20 квітня 2018.
- Operation RussianDoll: Adobe & Windows Zero-Day Exploits Likely Leveraged by Russia’s APT28 in Highly-Targeted Attack « Operation RussianDoll: Adobe & Windows Zero-Day Exploits Likely Leveraged by Russia’s APT28 in Highly-Targeted Attack. FireEye. Процитовано 20 квітня 2018.