Выставка трофеев: итоги «охоты за ошибками» в...
DESCRIPTION
Я расскажу про самые интересные и массовые уязвимости, которые находили в мобильных приложениях Яндекса внешние исследователи. Мы обсудим, почему эти уязвимости появились и как их не повторить в своих проектах, а также что мы сами сделали, чтобы больше не наступать на те же грабли.TRANSCRIPT
![Page 1: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/1.jpg)
1
![Page 2: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/2.jpg)
2
Выставка трофеев
Итоги «охоты» в мобильных приложениях
![Page 3: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/3.jpg)
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: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/4.jpg)
4
Охота за ошибками
• Мы платим за найденные проблемы с безопасностью
• Не только в веб, но и в мобильных приложениях
• Это программа поощрения для всех
• Участвуют люди со всего мира
• За интересные ошибки платим больше ;-)
• Подробнее на http://company.yandex.ru/security/
![Page 5: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/5.jpg)
5
Скучная классификация трофеев
![Page 6: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/6.jpg)
6
Моя классификация
• Типовые ошибки
• Неочевидные и забористые проблемы
• Всяческий трэш
![Page 7: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/7.jpg)
7
Типовые ошибки
![Page 8: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/8.jpg)
8
![Page 9: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/9.jpg)
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: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/10.jpg)
10
Oauth-токен, куда бы его деть?
OWASP M2 Insecure Data Storage в iOS
•Авторизуем пользователя и сохраняем OAuth-токен в plist-файлы
приложения
ru.yandex.fotki.client.plist
{
...
YandexLogin = testuser;
YandexToken = 64bb**************fcb9;
...
}
![Page 11: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/11.jpg)
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: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/12.jpg)
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: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/13.jpg)
13
Решения
• Общие библиотеки
• Тотальный HTTPS с проверкой сертификатов и пинингом
• Логирование с предфильтрацией
• Использование системных хранилищ для токенов
![Page 14: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/14.jpg)
14
Неочевидные серьезные
проблемы
![Page 15: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/15.jpg)
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: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/16.jpg)
16
Кто виноват, что делать?
• Не сделали нужных проверок
для особого случая работы
вкладок
• Было сложно сделать тесты
для работы с вкладками
• При взаимодействии вкладок
этом должна выполняться same
origin policy, либо дочерняя
вкладка должна быть пустой
(about:blank).
• Новые сложные тесты,
проверяющие логику работы
вкладок.
![Page 17: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/17.jpg)
17
Broadcast Intent в Android
Broadcast Intent Открытый
контент провайдер
Доступ к аттачментам
![Page 18: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/18.jpg)
18
Кто виноват, что делать?
• Не знали, что broadcast intent
может быть перехвачен третьей
стороной
• Думали, что длинный
случайный идентификатор –
достаточная защита для
аттачмента
• Отказались от пересылки
идентификатора
• Закрыли контент-провайдер
![Page 19: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/19.jpg)
19
Статистика
There are three kinds of lies: lies, damned lies,
and statistics
![Page 20: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/20.jpg)
20
Количество уязвимостей по платформам
23
84
3 2
iOS
Android
Windows Phone
Symbian
За всё время работы
программы
![Page 21: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/21.jpg)
21
• 2,5 % сообщений про мобильные приложения
• В среднем мы получаем по одной уязвимости раз в четыре дня
• Выплачено около 500000 рублей (максимум 1337$)
• Типовых проблем больше в приложениях для Android
• Сложных проблем больше в iOS
![Page 22: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/22.jpg)
22
Выводы
![Page 23: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/23.jpg)
23
Что в итоге?
• Большое количество исследователей
• Участвуют компетентные профессионалы
• Множество исправленных проблем и найденных решений
• …
• PROFIT!!!
![Page 24: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/24.jpg)
24
Спасибо за внимание!
![Page 25: Выставка трофеев: итоги «охоты за ошибками» в мобильных приложениях, Юрий Леонычев](https://reader033.vdocuments.site/reader033/viewer/2022050905/54b6fd1c4a7959b42a8b460a/html5/thumbnails/25.jpg)
25
Юрий Леонычев
Администратор
информационной
безопасности
tracer0tong
© 000«Яндекс» 2014