Михаил Черномордиков Architect Evangelist, Microsoft http://blogs.msdn.com/mikcher [email protected] 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 [email protected] Microsoft TechDays http://www.techdays.ru