Я расскажу про самые интересные и массовые уязвимости, которые находили в мобильных приложениях Яндекса внешние исследователи. Мы обсудим, почему эти уязвимости появились и как их не повторить в своих проектах, а также что мы сами сделали, чтобы больше не наступать на те же грабли.
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
4. 4
Охота за ошибками
•Мы платим за найденные проблемы с безопасностью
•Не только в веб, но и в мобильных приложениях
•Это программа поощрения для всех
•Участвуют люди со всего мира
•За интересные ошибки платим больше ;-)
•Подробнее на http://company.yandex.ru/security/
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);
}
10. 10
Oauth-токен, куда бы его деть?
OWASP M2 Insecure Data Storage в iOS
•Авторизуем пользователя и сохраняем OAuth-токен в plist-файлы приложения
ru.yandex.fotki.client.plist
{
...
YandexLogin = testuser;
YandexToken = 64bb**************fcb9;
...
}
11. 11
Что было в логах, остается в логах?
OWASP M4 Unintended Data Leakage
•OVER9000 способов логирования
•Пишем в логи всё подряд, например, тело HTTP-запроса или авторизационные токены
D/Facebook-authorize( 2228): Login Success!
access_token=CAACO8cOreeMB**********QXANzAqzDz3IJZB3wZAZAD9PIUcrSzdVMNO1i6ZB9zogduHbZAl6fnXO**********EIJzuXak3V6CJCx**************B3D9ZBvLCEKTjs3w*************
expires=1377739946011
12. 12
Совсем не HTTPS
OWASP M3 Insufficient Transport Layer Protection
•В iOS и Android
•Либо совсем нет шифрования, либо не проверяем сертификаты
NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:requestURL parameters:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.allowsInvalidSSLCertificate = YES;
13. 13
Решения
•Общие библиотеки
•Тотальный HTTPS с проверкой сертификатов и пинингом
•Логирование с предфильтрацией
•Использование системных хранилищ для токенов
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 (На второй вкладке)
16. 16
Кто виноват, что делать?
•Не сделали нужных проверок для особого случая работы вкладок
•Было сложно сделать тесты для работы с вкладками
•При взаимодействии вкладок этом должна выполняться same origin policy, либо дочерняя вкладка должна быть пустой (about:blank).
•Новые сложные тесты, проверяющие логику работы вкладок.
17. 17
Broadcast Intent в Android
Broadcast Intent
Открытый контент провайдер
Доступ к аттачментам
18. 18
Кто виноват, что делать?
•Не знали, что broadcast intent может быть перехвачен третьей стороной
•Думали, что длинный случайный идентификатор – достаточная защита для аттачмента
•Отказались от пересылки идентификатора
•Закрыли контент-провайдер
19. 19
Статистика
There are three kinds of lies: lies, damned lies, and statistics
20. 20
Количество уязвимостей по платформам
23
84
3
2
iOS
Android
Windows Phone
Symbian
За всё время работы программы
21. 21
•2,5 % сообщений про мобильные приложения
•В среднем мы получаем по одной уязвимости раз в четыре дня
•Выплачено около 500000 рублей (максимум 1337$)
•Типовых проблем больше в приложениях для Android
•Сложных проблем больше в iOS
23. 23
Что в итоге?
•Большое количество исследователей
•Участвуют компетентные профессионалы
•Множество исправленных проблем и найденных решений
•…
•PROFIT!!!