Основными функциями, которые должно выполнять ядро безопасности совместно с другими службами ОС, являются:
1. Идентификация, аутентификация и авторизация субъектов и объектов системы.
· подтверждения подлинности субъекта;
· законности его прав на данный объект или на определенные действия (авторизованный доступ имеет только тот субъект, чей идентификатор удовлетворяет результатам аутентификации);
· для обеспечения работы субъекта в системе.
* Идентификация — процесс распознавания элемента системы, обычно с помощью заранее определенного идентификатора или другой априорной информации; каждый субъект или объект должен быть однозначно идентифицируем.
* Аутентификация — проверка идентификации пользователя, процесса, устройства или другого компонента системы (обычно осуществляется перед разрешением доступа); а также проверка целостности данных при их хранении или передаче для предотвращения несанкционированной модификации.
* Авторизация — предоставление субъекту прав на доступ к объекту.
Фишки Приложения БЕЗОПАСНОСТЬ В MIUI На Xiaomi
Могут выполняться как в процессе работы (при обращении к наборам данных, устройствам, ресурсам), так и при входе в систему.
2. Контроль входа пользователя в систему и управление паролями.
Частный случай перечисленных выше: при входе в систему и вводе имени пользователя осуществляется идентификация, при вводе пароля — аутентификация и, если пользователь с данными именем и паролем зарегистрирован в системе, ему разрешается доступ к определенным объектам и ресурсам (авторизация). Однако при входе в систему существуют отличия при выполнении этих функций:
· в процессе работы – есть информация о пользователе и полномочия на доступ к ресурсам;
· при входе в систему – эти параметры необходимо вычислить. Организуется «достоверный маршрут».
«Достоверный маршрут» (trusted path) — путь передачи идентифицирующей информации от пользователя к ядру безопасности для подтверждения подлинности. Оно реализуется привилегированными процедурами ядра безопасности, чья работа обеспечивается механизмами ДВБ, а также некоторыми другими механизмами, выполняющими вспомогательные функции.
· вход пользователя в систему – одно из наиболее уязвимых мест.
· организация средств для подтверждения работы системы непосредственно с пользователем (без других программ между ними);
· проверка истинности вводимой информации.
Склеить
Склеить
3. Регистрация и протоколирование. Аудит.
Функции: обеспечивают получение и анализ информации о состоянии ресурсов системы с помощью специальных средств контроля, а также регистрацию действий, признанных администрацией потенциально опасными для безопасности системы. Способны обнаружить какое-либо событие и зафиксировать его (протоколы полных или частичных сеансов работы пользователей)
Пример средств: системные утилиты или прикладные программы, выводящие информацию непосредственно на системную консоль или другое определенное для этой цели устройство, а также системный журнал.
Как отключить уведомление безопасности Xiaomi после обновления MIUI 11.0.2 в шторке телефона
Особенности: большинство имеют в своем распоряжении средства управления системным журналом (audit trail), который является составной частью монитора ссылок и служит для контроля соблюдения политики безопасности. Он:
— способен оперативно фиксировать происходящие в системе события;
— может помочь выявить средства и априорную информацию, использованные злоумышленником для нарушения;
— может помочь определить, как далеко зашло нарушение, подсказать метод его расследования и способы исправления ситуации.
4. Противодействие «сборке мусора».
«Сборка мусора» (disk scavenging) – процесс прочтения/получения с помощью специальных программ данных или их остатков, оставшихся после окончания работы неполностью удалёнными из оперативной памяти, с диска, ленты или другого носителя.
Для защиты от «сборки мусора» используются специальные средства, которые могут входить в ядро безопасности ОС или устанавливаться дополнительно.
5. Контроль целостности субъектов.
Согласно модели Белла-Лападулла, каждый субъект одновременно является объектом. При этом под содержимым субъекта обычно понимают содержимое контекста процесса, куда входит содержимое общих и специальных регистров (контекст процесса постоянно изменяется). Кроме содержимого или значения субъект имеет ряд специфических атрибутов, приоритет, список привилегий, набор идентификаторов и др. характеристики. В этом смысле поддержание целостности субъекта, то есть предотвращение его несанкционированной модификации, можно рассматривать как частный случай этой задачи для объектов вообще.
В то же время субъект является активным компонентом системы. Для защиты целостности субъекта, в качестве представителя которого выступает процесс:
Рабочая среда или область исполнения процесса – область, которая является логически защищенной подсистемой, которой доступны все ресурсы системы, относящиеся к соответствующему процессу. Другими словами, область исполнения процесса является виртуальной машиной. В рамках этой области процесс может выполнять любые санкционированные действия без опасения нарушения целостности. Область исполнения процесса может быть разделена или включена в подобласти, составляющие иерархическую структуру. Процесс может менять эти области (process switching), смена всегда связана с переходом центрального процессора в привилегированный режим работы.
Контроль целостности обеспечивается процедурами ядра безопасности, контролируемыми механизмами поддержки ДВБ:
· виртуальной памяти (для создания области данного процесса);
режим исполнения процесса (определяет его возможности в рамках данной области и вне ее). склеить
Склеить
Механизмы поддержки областей исполнения процесса обеспечивают контроль их целостности достаточно надежно. Однако даже разделенные процессы должны иметь возможность обмениваться информацией. Для этого разработаны несколько специальных механизмов, чтобы можно было осуществлять обмен информацией между процессами без ущерба безопасности или целостности каждого из них. К таким механизмам относятся, например, кластеры флагов событий, почтовые ящики и другие системные структуры данных. Следует однако учитывать, что с их помощью может осуществляться утечка информации, поэтому если использование таких механизмов разрешено, их обязательно следует контролировать.
6. Контроль доступа.
Контроль доступа — ограничение возможностей использования ресурсов системы программами, процессами или другими системами (для сети) в соответствии с политикой безопасности.
Доступ — выполнение субъектом некоторой операции над объектом из множества разрешенных для данного типа.
Пример: чтение, открытие, запись набора данных, обращение к устройству и т.д.
Контроль должен осуществляться при доступе к:
— разделяемым устройствам прямого доступа;
— разделяемым устройствам последовательного доступа;
— разделяемым программам и подпрограммам;
— разделяемым наборам данных.
Основным объектом внимания средств контроля доступа являются совместно используемые наборы данных и ресурсы системы. Совместное использование объектов порождает ситуацию «взаимного недоверия» при которой разные пользователи одного объекта не могут до конца доверять друг другу. Тогда, если с этим объектом что-нибудь случится, все они попадают в круг подозреваемых.
Существует четыре основных способа разделения субъектов к совместно используемым объектам:
1. Физическое — субъекты обращаются к физически различным объектам (однотипным устройствам, наборам данных на разных носителях и т.д.).
2. Временное — субъекты с различными правами доступа к объекту получают его в различные промежутки времени.
3. Логическое — субъекты получают доступ к совместно используемому объекту в рамках единой операционной среды, но под контролем средств разграничения доступа, которые моделируют виртуальную операционную среду «один субъект — все объекты»; в этом случае разделение может быть реализовано различными способами разделение оригинала объекта, разделение с копированием объекта и т.д.
4. Криптографическое — все объекты хранятся в зашифрованном виде, права доступа определяются наличием ключа для расшифрования объекта.
Существует множество различных вариантов одних и тех же способов разделения субъектов, они могут иметь разную реализацию в различных средствах защиты.
Контроль доступа субъектов системы к объектам (не только к совместно используемым, но и к индивидуальным) реализуется с помощью тех же механизмов, которые реализуют ДВБ и осуществляется процедурами ядра безопасности.
Источник: cyberpedia.su
В miui обнаружен серьезный недостаток безопасности: сторонние приложения безопасности могут быть…
Данные становятся доступными на таких сайтах, как Facebook, и те, которые совместимы с API OpenSocial
Почему профессионалы в области безопасности ИТ могут быть страшнее, чем «плохие парни»
Забудьте о хакерах и фишках. Большой бизнес хочет получить ваши личные данные, а ваша конфиденциальность — всего лишь препятствие, которое нужно преодолеть.
Исследователи: серьезный недостаток в Java Runtime Environment для настольных компьютеров, серверов
Охотники за уязвимостями в уязвимой среде от польской исследовательской фирмы по безопасности Исследования в области безопасности утверждают, что они обнаружена новая уязвимость, которая влияет на последние версии настольных и серверных версий среды выполнения Java (JRE).
Источник: ru.joecomp.com
Основы безопасности операционной системы Android. Уровень ядра
Самой распространенной операционной системой для смартфонов на сегодняшний день является Android. Но не только этот факт подогревает интерес к ней. Открытость, возможность что-то настроить, подкрутить, и, естественно, сломать тоже в немалой степени способствуют увеличению популярности этой платформы.
Я попробую поделиться опытом, как устроена эта операционная система, а так же рассмотреть систему безопасности. Всем, кому интересно, добро пожаловать! В этой статье я рассмотрю безопасность на уровне ядра.
Disclaimer
Термины я буду стараться писать на английком языке, так как боюсь ошибиться в их переводе. Если кто-то знает, как их красиво перевести на русский язык, напишите мне, и я дам перевод этих терминов. Желательно, чтобы у вас под рукой находились исходный код Android (хотя я и буду стараться давать ссылки на файлы в Интернете), потому что я иногда буду давать ссылки на файлы, где находится та или иная функциональность. Как загрузить исходный код, можно почитать здесь или вот в этой статье на Хабре.
Список статей
- Основы безопасности операционной системы Android. Уровень ядра
- Основы безопасности операционной системы Android. Native user space, ч.1
- Основы безопасности операционной системы Android. Native user space, ч.2
- Основы безопасности операционной системы Android. Безопасность на уровне Application Framework. Binder IPC
Стек Android
- Linux kernel (Ядро Linux)
- Native Libraries
- Application Framework
- Applications (Приложения)
Native Libraries. К этому слою относятся различные нативные библиотеки, которые необходимы для работы Android. Они так же позаимствованы у open-source сообщества. Среди них мы можем найти SQLite, WebKit и т.д.
Android Framework. К этому слою относится то, с чем мы обычно взаимодействуем, когда пишем наши приложения для Android (PowerManager, ActivityManager, NotificationManager и т.д.).
Applications. Приложения бывают двух типов: те, что поставляются вместе с образом системы (системные) и приложения, которые мы загружаем из маркета или других источников. В первом случае, в устройстве приложения находятся в «/system/app» директории, во втором случае в «/data/app».
Безопасность на уровне ядра
- Используя приложение PackageInstaller
- Используя приложение Android Market
- Используя комманду adb install
Во время установки, Android каждому приложению по умолчанию присваивает уникальные user ID (UID) и group ID (GID), таким образом каждому приложению в этой операционной системе соответсвует свой пользователь. Имя пользователя обычно имеет формат app_x, а идентификаторы пользователя вычисляется по формуле (Process.FIRST_APPLICATION_UID + x), Process.FIRST_APPLICATION_UID равен 10000. Эти идентификаторы приложения не изменяются. Список установленных приложений хранится в файле «/data/system/packages.list» и если у вас рутованый телефон, или вы работаете с эмулятором, то вы можете просмотреть этот файл, используя следующую комманду:
adb shell cat /data/system/packages.list
У каждого приложения есть своя домашняя директория, например /data/data/ , где — имя Android пакета, например com.ex.ex1 Имя Android пакета задается в свойстве package в файле AndroidManifest.xml Эта папка — Internal storage (внутреннее хранилище), директория, где приложение хранит все свои приватные данные, и к которому разработчики приложений получают доступ используя функции Context.getFilesDir() или Context.getDir() У этой папки права доступа определены как drwxr-x—x, т.е. только владелец и пользователи входящие в группу владельцев имеют полный доступ к этой папке. А так как каждое приложение определено как уникальный пользователь, то это означает, что приложения, по умолчанию, не имеют доступа к информации друг друга. Хотя при создании файла во внутреннем хранилище можно явно задать, что этот файл будет MODE_WORLD_READABLE и/или MODE_WORLD_WRITABLE
Кроме того, на уровне ядра уникальные UID и GID каждого приложения используются для разделения доступа к ресурсам системы (память и процессорное время). Таким образом, на уровне ядра для каждого приложения создается своя собственная песочница (Application Sandbox).
С другой стороны, разработчик приложения может указать, что некоторые ЕГО приложения должны иметь один и тот же UID. В AndroidManifest.xml файле для этого есть специальное свойство sharedUserId В этом случае, эти приложения будут иметь доступ к ресурсам друг-друга, но только если они подписаны одним и тем же ключом разработчика.
Некоторые permission (разрешения) так же работают на уровне ядра. Давайте, например, рассмотрим наиболее используемое разрешение android.permission.INTERNET Если приложение запрашивает это разрешение, то Android во время установки дополнительно включает это приложение в специальную группу «inet». Так же работают и некоторые другие разрешения. Список соответствия между этими разрешениями и соответствующими группами можно найти в файле frameworks/base/data/etc/platform.xml:
Список соответствия между именами этих групп и значениями (GID) задан в явном виде в файле system/core/include/private/android_filesystem_config.h в массиве структур android_ids[]:
. #define AID_ROOT 0 /* traditional unix root user */ #define AID_SYSTEM 1000 /* system server */ . #define AID_CAMERA 1006 /* camera devices */ . #define AID_INET 3003 /* can create AF_INET and AF_INET6 sockets */ . static const struct android_id_info android_ids[] = < < «root», AID_ROOT, >, . < «camera», AID_CAMERA, >, < «log», AID_LOG, >, . < «inet», AID_INET, >, . > .
Таким образом, если приложение пытается подключиться к Интернету, ядро проверяет, находится ли это приложение в группе с идентификатором AID_INET. Если нет, то приложению запрещается доступ. Код этой проверки очень тривиальный:
. #ifdef CONFIG_ANDROID_PARANOID_NETWORK #include static inline int current_has_network(void) < return in_egroup_p(AID_INET) || capable(CAP_NET_RAW); >#else static inline int current_has_network(void) < return 1; >#endif . /* * Create an inet socket. */ static int inet_create(struct net *net, struct socket *sock, int protocol, int kern)
Это моя первая статья на Хабре, так что не судите строго. Если сообществу интересно, то я продолжу в следующих статьях описывать внутренности Android.
Я понимаю, что много не знаю, да и времени всегда не хватает, но я постараюсь поделиться тем, что уже пропустил через себя. Надеюсь, что узнаю что-то новое из комментариев! Если кому-то интересна какая-то определенная тема, то пишите в комментариях, постараюсь в будущих статьях учесть ваши пожелания.
Ссылки
- «Embedded Android» by Karim Yaghmour
- «Android Security Underpinnings» by Marko Gargenta
- «Understanding Android Security» by William Enck et al.
- Android Security Overview
- android os
- безопасность
Источник: habr.com