Выставка трофеев: итоги «охоты за ошибками» в...

25
1

Upload: yandex

Post on 15-Jan-2015

360 views

Category:

Technology


1 download

DESCRIPTION

Я расскажу про самые интересные и массовые уязвимости, которые находили в мобильных приложениях Яндекса внешние исследователи. Мы обсудим, почему эти уязвимости появились и как их не повторить в своих проектах, а также что мы сами сделали, чтобы больше не наступать на те же грабли.

TRANSCRIPT

Page 1: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

1

Page 2: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

2

Выставка трофеев

Итоги «охоты» в мобильных приложениях

Page 3: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

3 "Alces alces elan trophee chateau Tanlay" by Myrabella - Own work. Licensed under Creative Commons Attribution-Share Alike 4.0 via Wikimedia Commons - https://commons.wikimedia.org/wiki/File:Alces_alces_elan_trophee_chateau_Tanlay.jpg#mediaviewer/File:Alces_alces_elan_trophee_chateau_Tanlay.jpg

Page 4: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

4

Охота за ошибками

• Мы платим за найденные проблемы с безопасностью

• Не только в веб, но и в мобильных приложениях

• Это программа поощрения для всех

• Участвуют люди со всего мира

• За интересные ошибки платим больше ;-)

• Подробнее на http://company.yandex.ru/security/

Page 5: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

5

Скучная классификация трофеев

Page 6: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

6

Моя классификация

• Типовые ошибки

• Неочевидные и забористые проблемы

• Всяческий трэш

Page 7: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

7

Типовые ошибки

Page 8: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

8

Page 9: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

9

Открытые контент-провайдеры

OWASP M2 Insecure Data Storage в Android

•Открыты по-умолчанию в SDK <= 16

•Часто прицеплены к базе данных SQLite

public synchronized Cursor query (Uri uri, String[] projection, String

selection, String[] selectionArgs, String sortOrder)

{

- return Database.getReadableDB().query(Database.DEVICE_ID_TABLE,

projection, selection, selectionArgs, null, null, sortOrder);

+ return Database.getReadableDB().query(Database.DEVICE_ID_TABLE, null,

null, null, null, null, null);

}

Page 10: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

10

Oauth-токен, куда бы его деть?

OWASP M2 Insecure Data Storage в iOS

•Авторизуем пользователя и сохраняем OAuth-токен в plist-файлы

приложения

ru.yandex.fotki.client.plist

{

...

YandexLogin = testuser;

YandexToken = 64bb**************fcb9;

...

}

Page 11: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

11

Что было в логах, остается в логах?

OWASP M4 Unintended Data Leakage

•OVER9000 способов логирования

•Пишем в логи всё подряд, например, тело HTTP-запроса или

авторизационные токены

D/Facebook-authorize( 2228): Login Success!

access_token=CAACO8cOreeMB**********QXANzAqzDz3IJZB3wZAZAD9PIUcrSzdVMNO

1i6ZB9zogduHbZAl6fnXO**********EIJzuXak3V6CJCx**************B3D9ZBvLCEK

Tjs3w*************

expires=1377739946011

Page 12: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

12

Совсем не HTTPS

OWASP M3 Insufficient Transport Layer Protection

•В iOS и Android

•Либо совсем нет шифрования, либо не проверяем сертификаты

NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:requ

estURL parameters:nil];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] ini

tWithRequest:request];

operation.allowsInvalidSSLCertificate = YES;

Page 13: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

13

Решения

• Общие библиотеки

• Тотальный HTTPS с проверкой сертификатов и пинингом

• Логирование с предфильтрацией

• Использование системных хранилищ для токенов

Page 14: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

14

Неочевидные серьезные

проблемы

Page 15: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

15

Нарушение SOP в браузере под iOS

w = window.open('http://host/redirect.html');

setTimeout(function()

{

w.document.write(document.domain+' writes to

<script>

document.write(document.domain)

</script>');

},

5000);

?

Сайт 1 (На первой вкладке) Сайт 2 (На второй вкладке)

Page 16: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

16

Кто виноват, что делать?

• Не сделали нужных проверок

для особого случая работы

вкладок

• Было сложно сделать тесты

для работы с вкладками

• При взаимодействии вкладок

этом должна выполняться same

origin policy, либо дочерняя

вкладка должна быть пустой

(about:blank).

• Новые сложные тесты,

проверяющие логику работы

вкладок.

Page 17: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

17

Broadcast Intent в Android

Broadcast Intent Открытый

контент провайдер

Доступ к аттачментам

Page 18: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

18

Кто виноват, что делать?

• Не знали, что broadcast intent

может быть перехвачен третьей

стороной

• Думали, что длинный

случайный идентификатор –

достаточная защита для

аттачмента

• Отказались от пересылки

идентификатора

• Закрыли контент-провайдер

Page 19: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

19

Статистика

There are three kinds of lies: lies, damned lies,

and statistics

Page 20: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

20

Количество уязвимостей по платформам

23

84

3 2

iOS

Android

Windows Phone

Symbian

За всё время работы

программы

Page 21: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

21

• 2,5 % сообщений про мобильные приложения

• В среднем мы получаем по одной уязвимости раз в четыре дня

• Выплачено около 500000 рублей (максимум 1337$)

• Типовых проблем больше в приложениях для Android

• Сложных проблем больше в iOS

Page 22: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

22

Выводы

Page 23: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

23

Что в итоге?

• Большое количество исследователей

• Участвуют компетентные профессионалы

• Множество исправленных проблем и найденных решений

• …

• PROFIT!!!

Page 24: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

24

Спасибо за внимание!

Page 25: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев

25

Юрий Леонычев

Администратор

информационной

безопасности

[email protected]

tracer0tong

© 000«Яндекс» 2014