macOS SIP
Основна інформація
Захист цілісності системи (SIP) в macOS - це механізм, призначений для запобігання навіть найбільш привілейованим користувачам робити несанкціоновані зміни в ключових системних папках. Ця функція відіграє важливу роль у збереженні цілісності системи, обмежуючи дії, такі як додавання, зміна або видалення файлів у захищених областях. Основні папки, які захищені SIP, включають:
/System
/bin
/sbin
/usr
Правила, які визначають поведінку SIP, визначені в конфігураційному файлі, розташованому за адресою /System/Library/Sandbox/rootless.conf
. У цьому файлі шляхи, які починаються з астериска (*), вважаються винятками від в інших суворих обмежень SIP.
Розгляньте наступний приклад:
Цей уривок підтверджує, що, хоча SIP загалом захищає каталог /usr
, існують конкретні підкаталоги (/usr/libexec/cups
, /usr/local
та /usr/share/man
), де зміни допускаються, як це вказано зірочкою (*) перед їхніми шляхами.
Щоб перевірити, чи захищений SIP каталог або файл, ви можете використати команду ls -lOd
, щоб перевірити наявність прапорців restricted
або sunlnk
. Наприклад:
У цьому випадку прапорець sunlnk
вказує на те, що сам каталог /usr/libexec/cups
не може бути видалений, хоча файли всередині нього можуть бути створені, змінені або видалені.
З іншого боку:
Тут restricted
прапорець вказує на те, що каталог /usr/libexec
захищений SIP. У SIP-захищеному каталозі файли не можуть бути створені, змінені або видалені.
Більше того, якщо файл містить атрибут розширеного com.apple.rootless
, цей файл також буде захищений SIP.
SIP також обмежує інші дії root, такі як:
Завантаження ненадійних розширень ядра
Отримання task-портів для процесів, підписаних Apple
Зміна змінних NVRAM
Дозвіл на ядерний налагодження
Опції зберігаються у змінній nvram як бітовий прапорець (csr-active-config
на Intel та lp-sip0
зчитується з Device Tree для ARM). Ви можете знайти прапорці у вихідному коді XNU у csr.sh
:
Статус SIP
Ви можете перевірити, чи увімкнений SIP на вашій системі за допомогою наступної команди:
Якщо вам потрібно вимкнути SIP, вам потрібно перезапустити комп'ютер у режимі відновлення (натиснувши Command+R під час запуску), а потім виконати наступну команду:
Якщо ви хочете залишити SIP увімкненим, але видалити захист від налагодження, ви можете це зробити за допомогою:
Інші обмеження
Забороняє завантаження непідписаних розширень ядра (kexts), забезпечуючи взаємодію лише перевірених розширень з ядром системи.
Запобігає налагодженню процесів системи macOS, захищаючи основні компоненти системи від несанкціонованого доступу та модифікації.
Забороняє використання інструментів типу dtrace для інспектування процесів системи, додатково захищаючи цілісність операційної системи.
Дізнайтеся більше про інформацію SIP у цьому виступі.
Обхід SIP
Обхід SIP дозволяє зловмиснику:
Отримати доступ до даних користувача: Читати чутливі дані користувача, такі як пошта, повідомлення та історія Safari з усіх облікових записів користувачів.
Обхід TCC: Пряме втручання в базу даних TCC (Transparency, Consent, and Control), щоб надати несанкціонований доступ до вебкамери, мікрофону та інших ресурсів.
Створення постійності: Розміщення шкідливого ПЗ в захищених від SIP місцях, зробляючи його стійким до видалення, навіть за допомогою привілеїв root. Це також включає потенційну можливість втручання у інструмент видалення шкідливого ПЗ (MRT).
Завантаження розширень ядра: Хоча існують додаткові заходи безпеки, обхід SIP спрощує процес завантаження непідписаних розширень ядра.
Пакети інсталяторів
Пакети інсталяторів, підписані сертифікатом Apple, можуть обійти його захист. Це означає, що навіть пакети, підписані стандартними розробниками, будуть заблоковані, якщо вони намагатимуться змінити захищені від SIP каталоги.
Відсутній файл SIP
Одним з потенційних каналів для обходу є те, що якщо файл вказаний у rootless.conf
, але наразі не існує, його можна створити. Шкідливе ПЗ може використовувати це для створення постійності в системі. Наприклад, зловмисна програма може створити файл .plist в /System/Library/LaunchDaemons
, якщо він вказаний у rootless.conf
, але відсутній.
com.apple.rootless.install.heritable
Право com.apple.rootless.install.heritable
дозволяє обійти SIP
Shrootless
Дослідники з цього допису в блозі виявили уразливість в механізмі Захисту Цілісності Системи (SIP) macOS, яку назвали уразливістю 'Shrootless'. Ця уразливість стосується демона system_installd
, який має право com.apple.rootless.install.heritable
, що дозволяє будь-якому з його дочірніх процесів обійти обмеження файлової системи SIP.
Демон system_installd
буде встановлювати пакети, які підписані Apple.
Дослідники виявили, що під час встановлення пакета, підписаного Apple (.pkg файл), system_installd
виконує будь-які після-встановлення скрипти, включені в пакет. Ці скрипти виконуються за замовчуванням оболонкою zsh
, яка автоматично виконує команди з файлу /etc/zshenv
, якщо він існує, навіть у неінтерактивному режимі. Цю поведінку можна було б використовувати зловмисниками: створивши шкідливий файл /etc/zshenv
і чекаючи, коли system_installd
викличе zsh
, вони могли б виконати довільні операції на пристрої.
Більше того, було виявлено, що /etc/zshenv
можна використовувати як загальний метод атаки, не лише для обходу SIP. У кожного профілю користувача є файл ~/.zshenv
, який працює так само, як /etc/zshenv
, але не потребує прав root. Цей файл можна використовувати як механізм постійності, який викликається кожного разу при запуску zsh
, або як механізм підвищення привілеїв. Якщо адміністратор підвищує привілеї до root за допомогою sudo -s
або sudo <команда>
, файл ~/.zshenv
буде викликаний, ефективно підвищуючи до root.
У CVE-2022-22583 було виявлено, що той самий процес system_installd
все ще можна було зловживати, оскільки він поміщав після-встановлення скрипт всередину випадково названої папки, захищеної SIP всередині /tmp
. Справа в тому, що /tmp
сам по собі не захищений від SIP, тому було можливо підключити віртуальний образ до нього, після чого інсталятор поміщав би туди після-встановлення скрипт, відмонтував віртуальний образ, перестворив всі папки і додав скрипт після встановлення з виконавчим кодом.
Була виявлена уразливість, де fsck_cs
було зведено в оману, що призвело до пошкодження важливого файлу через його здатність слідувати символічним посиланням. Зловмисники спеціально створили посилання з /dev/diskX
на файл /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
. Виконання fsck_cs
на /dev/diskX
призвело до пошкодження Info.plist
. Цей файл має важливе значення для SIP операційної системи (Захист Цілісності Системи), яка контролює завантаження розширень ядра. Після пошкодження здатність SIP керувати виключеннями ядра порушується.
Команди для використання цієї уразливості:
Експлуатація цієї вразливості має серйозні наслідки. Файл Info.plist
, який зазвичай відповідає за управління дозволами для ядерних розширень, стає неефективним. Це означає неможливість чорного списку певних розширень, таких як AppleHWAccess.kext
. Внаслідок цього, з порушенням механізму контролю SIP, це розширення може бути завантажено, надаючи несанкціонований доступ на читання та запис в ОЗП системи.
Було можливо змонтувати нову файлову систему над SIP захищеними папками для обхід захисту.
Система налаштована на завантаження з вбудованого образу диска інсталятора в Install macOS Sierra.app
для оновлення ОС, використовуючи утиліту bless
. Використана команда виглядає наступним чином:
Безпеку цього процесу можна піддавати ризику, якщо зловмисник змінює образ оновлення (InstallESD.dmg
) перед завантаженням. Стратегія полягає в заміні динамічного завантажувача (dyld) на зловмисну версію (libBaseIA.dylib
). Ця заміна призводить до виконання коду зловмисника при запуску встановлювача.
Код зловмисника отримує контроль під час процесу оновлення, використовуючи довіру системи до встановлювача. Атака продовжується шляхом зміни образу InstallESD.dmg
за допомогою методу swizzling, зокрема спрямовуючи на метод extractBootBits
. Це дозволяє впровадження зловмисного коду до моменту використання образу диска.
Більше того, всередині InstallESD.dmg
є BaseSystem.dmg
, який служить кореневою файловою системою коду оновлення. Впровадження динамічної бібліотеки в це дозволяє зловмисному коду працювати в процесі, здатному змінювати файли на рівні ОС, значно збільшуючи потенціал компрометації системи.
У цьому виступі з DEF CON 31 показано, як systemmigrationd
(який може обійти SIP) виконує bash та perl скрипт, які можуть бути зловживані за допомогою змінних середовища BASH_ENV
та PERL5OPT
.
com.apple.rootless.install
Право com.apple.rootless.install
дозволяє обійти SIP
Право com.apple.rootless.install
відоме як обхід Захисту Цілісності Системи (SIP) на macOS. Це було особливо згадано у зв'язку з CVE-2022-26712.
У цьому конкретному випадку системна служба XPC, розташована за шляхом /System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc
, має це право. Це дозволяє пов'язаному процесу обійти обмеження SIP. Крім того, ця служба особливо має метод, який дозволяє переміщати файли без застосування будь-яких заходів безпеки.
Запечатані системні знімки
Запечатані системні знімки - це функція, яку Apple ввела в macOS Big Sur (macOS 11) як частину механізму Захисту Цілісності Системи (SIP) для надання додаткового рівня безпеки та стабільності системи. Це, по суті, є лише для читання версії тома системи.
Ось більш детальний огляд:
Незмінна система: Запечатані системні знімки роблять том системи macOS "незмінним", що означає, що його не можна змінювати. Це запобігає будь-яким несанкціонованим або випадковим змінам системи, які можуть скомпрометувати безпеку або стабільність системи.
Оновлення програмного забезпечення системи: Коли ви встановлюєте оновлення або оновлення macOS, macOS створює новий системний знімок. Тоді том завантаження macOS використовує APFS (Apple File System) для переходу до цього нового знімка. Весь процес застосування оновлень стає безпечнішим та надійнішим, оскільки система завжди може повернутися до попереднього знімка, якщо щось піде не так під час оновлення.
Розділення даних: У поєднанні з концепцією розділення томів Даних та Системи, введеної в macOS Catalina, функція Запечатаних Системних Знімків переконується, що всі ваші дані та налаштування зберігаються на окремому "Дані" томі. Це розділення робить ваші дані незалежними від системи, що спрощує процес оновлення системи та підвищує безпеку системи.
Пам'ятайте, що ці знімки автоматично керуються macOS і не займають додаткового місця на вашому диску, завдяки можливостям спільного використання простору APFS. Також важливо зауважити, що ці знімки відрізняються від знімків Time Machine, які є доступними для користувача резервними копіями всієї системи.
Перевірка знімків
Команда diskutil apfs list
показує деталі обсягів APFS та їх розташування:
У попередньому виводі можна побачити, що доступні для користувача місця монтування знаходяться під /System/Volumes/Data
.
Більше того, знімок тома системи macOS монтується в /
і він запечатаний (криптографічно підписаний ОС). Таким чином, якщо обійти SIP і змінити його, ОС більше не завантажиться.
Також можна перевірити, що печатка увімкнена, запустивши:
Крім того, диск із знімком також монтується у режимі тільки для читання:
Last updated