Silverlight Security

advertisement
Михаил Черномордиков
Architect Evangelist, Microsoft
http://blogs.msdn.com/mikcher
mikcher@microsoft.com
Microsoft TechDays
http://www.techdays.ru
Угрозы в Сети
Same-origin policy
XSS
CSRF
Silverlight и сетевая безопасность
Основы работы Silverlight
Работа в sandbox
Кросс-доменные запросы
Работа с сокетами
Microsoft TechDays
http://www.techdays.ru
Источник: secunia.com
Microsoft TechDays
http://www.techdays.ru
= site-of-origin policy
Тот же источник = доменное имя, порт
www.testsite.ru, www.testsite2.ru:8080
Если HTML-страница загружает iframe
(или другой объект) с тем же источником,
то открыт доступ к DOM-модели другой
страницы
HTML-страница может делать HTTPзапросы к источнику (обычно через
XmlHttpRequest)
Microsoft TechDays
http://www.techdays.ru
Межсайтовый скриптинг
Запуск кода (обычно JavaScript) от имени
атакуемого сервера
Порядка 15% всех обнаруженных
уязвимостей*
Основная поверхность атаки – серверная
часть
Возможное решение для пользователей
– XSS-фильтр в IE8
* Источник: wikipedia.org
Microsoft TechDays
http://www.techdays.ru
Атакующий сайт делает запрос на
атакуемый сервер так, что сервер думает,
что это запрос от пользователя
Возможное решение – контрольная сумма
Возможное решение – XDR-запросы в IE8
Microsoft TechDays
http://www.techdays.ru
Угрозы в Сети
Same-origin policy
XSS
CSRF
Silverlight и сетевая безопасность
Основы работы Silverlight
Работа в sandbox
Кросс-доменные запросы
Работа с сокетами
Microsoft TechDays
http://www.techdays.ru
Веб-проект,
генерируемый Visual
Studio для
тестирования
XAP файл со сборками
приложения,
библиотеками и
ресурсами
Тестовая страница
HTML
Основной проект
XAML-файл с
глобальными
ресурсами и
обработчиками
событий
XAML-файл со
страницей, которую
видит пользователь
Microsoft TechDays
http://www.techdays.ru
Загрузка при инструкции в HTML:
<object type=“application/x-silverlight-3”>
</object>
XAML
Не содержит код
Может содержать обработчики событий
Нет гарантий по загрузке памяти и ЦП
XAP
Путь указан в source
ZIP-архив
AppManifest.xml
При кросс-доменной загрузке
источник = источник XAP-файла
Microsoft TechDays
http://www.techdays.ru
XAP-файл загружается в «песочнице»
Контекст безопасности может не
совпадать со страницей
По умолчанию - модель iframe
Если same-origin, взаимодействие со
страницей разрешено
Если нет – запрещено
Можно настраивать через параметры
EnableHtmlAccess – доступ к странице
ExternalCallsFromCrossDomain – доступ к XAP
Microsoft TechDays
http://www.techdays.ru
По умолчанию false
EnableHtmlAccess = true
Доступ управляемого
кода к DOM-модели
Эквивалентно элементу
<script> в середине
документа
Если вредоносный XAP – XSS-уязвимость +
чтение cookies + CSRF
Помните, что домен может сменить хозяина
Про безопасность нужно помнить,
учитывать, не бояться
Microsoft TechDays
http://www.techdays.ru
По умолчанию NoAccess
= ScriptableOnly
открывает доступ к
[Scriptable]-объектам
в коде XAP-файла
Любая HTML-страница может вызывать
метод из XAP-файла с домена Х и
возможно получить данные из домена Х
Задается в AppManifest.xml
Microsoft TechDays
http://www.techdays.ru
По умолчанию доступ из Silverlightприложений с других доменов запрещен
Его можно разрешить явным образом –
файл clientaccesspolicy.xml
Есть поддержка crossdomain.xml
Советы по безопасности:
Используйте статические ресурсы
Не используйте состояния
Используйте альтернативную аутентификацию
Используйте субдомены (http://api.flickr.com)
Открывайте доступ всем осознанно
Microsoft TechDays
http://www.techdays.ru
В Silverlight возможно сетевое
взаимодействие через TCP-сокеты
Задается в clientaccesspolicy.xml
Нет CSRF-угрозы – нет HTTP и cookies
Угроза – перехват трафика другими
внутренними утилитами или
приложениями
Ограничение на порты – 4502-4534
Microsoft TechDays
http://www.techdays.ru
<object ...>
<param name="enablehtmlaccess" value=“true"/>
...
</object>
<Deployment xmlns=
"http://schemas.microsoft.com/client/2007/deployment"
ExternalCallersFromCrossDomain="ScriptableOnly" .../>
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="http://contoso.com"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Онлайн-доклады по безопасности
http://www.techdays.ru/Category.aspx?Tag=Security
Руководство “Security Guidance for Writing and
Deploying Silverlight Applications”
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7cef15a8-8ae6-48eb-9621-ee35c2547773
Онлайн-доклыды по Silverlight
http://www.techdays.ru/Category.aspx?Tag=Silverlight
Центр разработки Silverlight на MSDN
http://msdn.microsoft.com/ru-ru/Silverlight
Making a Service Available Across Domain Boundaries:
http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx
EnableHtmlAccess:
http://msdn.microsoft.com/en-us/library/cc838264(VS.95).aspx
ExternalCallersFromCrossDomain:
http://msdn.microsoft.com/en-us/library/system.windows.deployment.externalcallersfromcrossdomain(VS.95).aspx
Microsoft TechDays
http://www.techdays.ru
Михаил Черномордиков
Architect Evangelist, Microsoft
http://blogs.msdn.com/mikcher
mikcher@microsoft.com
Microsoft TechDays
http://www.techdays.ru
Download