Безопасен ли Silverlight?

Нам нужно приложение, которое работает на компьютере конечного пользователя и предоставляет нам результаты оценки, и нам нужно, чтобы результаты были точными (то есть не подделывались). В настоящее время между Flash и Silverlight ведутся споры, и похоже, что Silverlight одержит победу.

Если не считать заявления о том, что все, что находится на компьютере конечного пользователя, в конечном счете должно считаться скомпрометированным, насколько сложно атаковать приложение SilverLight? Я знаю, что это зависит от того, как написан код и т. д., и мой вопрос действительно заключается в том, насколько сложно атаковать базовую платформу. Есть ли какие-либо статьи о том, как легко сделать что-то вроде начальной загрузки приложения Silverlight и изменить работающий код (или какой-либо другой метод)? Я думаю что-то вроде атаки переполнения буфера для вставки другого исполняемого кода?

Я также слышал, что приложение Flash довольно сложно атакует память и выполняет произвольный код. Это правда?


person kemiller2002    schedule 31.12.2008    source источник
comment
Почему мод не работает? это совершенно правильный вопрос.   -  person Kev    schedule 31.12.2008
comment
На самом деле вопрос не в безопасности Silverlight, а в безопасности конкретного использования Silverlight.   -  person Brian Lyttle    schedule 31.12.2008
comment
Нет, речь идет о безопасности серебряного света. Не имеет значения ее конечное использование, вопрос в том, легко ли сама платформа открыта для атаки.   -  person kemiller2002    schedule 31.12.2008


Ответы (8)


Насколько я понимаю, Silverlight работает на версии Common Language Runtime (CLR) под названием CoreCLR. Как и для любого приложения, работающего в браузере, основным сценарием безопасности является предотвращение атаки вредоносного кода на другие экземпляры приложения или приложения/данные на компьютере пользователя.

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

Вы можете попытаться смягчить эти атаки следующим образом:

  • Предотвращение доступа к сложным инструментам отладки (невозможно, если вы не контролируете клиентские машины).
  • Создание запутанного или случайного кода Silverlight для каждого отдельного пользователя или даже для каждого сеанса. Теоретически это может помешать пользователям поделиться взломом. Если вы можете тайм-аут кода, сделав его устаревшим через 30 минут, вы усложните его.
  • Уменьшите количество логики в вашем приложении и предоставьте ее на стороне сервера с помощью веб-сервисов.

Опытному взломщику так же легко атаковать приложения, работающие на виртуальной машине Flash, как и атаковать Silverlight.

person Brian Lyttle    schedule 31.12.2008

Все, что работает на компьютере пользователя, открыто для модификации. Это просто вопрос усилий пользователя.

Существует бесчисленное множество руководств о том, как «взламывать» флеш-игры, если вы хотите найти несколько примеров.

person Ólafur Waage    schedule 31.12.2008

Любой механизм, который вы предоставляете для связи между клиентом и вашим сервером, потенциально может быть взломан. Даже если вы используете SSL, пользователь может выполнить атаку «человек посередине» (безопасность обеспечивается браузером, поэтому, если пользователь переопределит SSL-сертификат, он будет разрешен), чтобы получить доступ к вашему протоколу данных. .

person foxxtrot    schedule 31.12.2008

Как злоумышленник в вашем конкретном сценарии, я бы сначала подумал о том, чтобы просто запустить прокси-сервер, который изменил содержимое данных, отправляемых из приложения обратно на ваш сайт. Я бы попробовал это задолго до того, как занялся компрометацией самого исполняемого файла. Даже с шифрованием, вероятно, будет проще извлечь сертификат/ключ из вашего приложения, чтобы также проксировать его, а не полностью подрывать исполняемый файл.

person nezroy    schedule 31.12.2008
comment
Я думал об этом, и для сценария, который я должен запланировать, я предполагаю, что злоумышленник не преследовал этот маршрут и должен сосредоточиться на подрыве злоумышленника от изменения программы в течение разумного периода времени. В конце концов все можно сломать; Мне просто нужно, чтобы было трудно разубедить людей. - person kemiller2002; 31.12.2008
comment
Если кто-то в StackOverflow может подумать об этом, это сделает злоумышленник. Но если вы используете SSL, вы можете сделать это более сложным. - person Brian Lyttle; 31.12.2008
comment
@Nezroy: это будет зависеть от реализации шифрования. В хорошей реализации сервер должен подтвердить свою личность с помощью сертификата. Затем злоумышленнику придется подделать двоичный файл клиента, чтобы заменить открытый ключ, чтобы вставить себя в середину. - person AnthonyWJones; 31.12.2008
comment
@Anthony: я согласен с тем, что достаточно безопасные протоколы в конечном итоге вызовут атаку на сам исполняемый файл конечного клиента. Я просто хотел убедиться, что более очевидный вектор принимается во внимание :) - person nezroy; 31.12.2008

Честно говоря, я думаю, что обе платформы безопасны. По сей день я не знаю, что в Silverlight (1.0 или 2.0) когда-либо были какие-либо уязвимости в системе безопасности. Тем не менее, если бы они были обнаружены на какой-либо платформе, я уверен, что обе проблемы были бы быстро устранены.

Однако один вопрос к вам. Почему вы хотите хранить что-либо на клиентской машине, а не на размещенном сервере? Silverlight 2.0 имеет специальную «урезанную» реализацию .NET framework, и, насколько мне известно, весь доступ к файловой системе удален из соображений безопасности.

person senfo    schedule 31.12.2008

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

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

person glenatron    schedule 31.12.2008

Я согласен с foxxtrot в том, что связь между приложением Silverlight и вашим сервером будет такой же безопасной, как и любая другая архитектура веб-сервисов. Это ваш основной вектор атаки, так как вредоносное ПО на стороне клиента вряд ли вызовет проблемы в случае Silverlight, по крайней мере, не настолько, чтобы украсть данные.

Вы можете зашифровать вызовы веб-сервиса и, возможно, дойти до клиентских сертификатов, чтобы предотвратить фиктивные сообщения в ваш веб-сервис.

person Dave Swersky    schedule 31.12.2008

Загрузите этот технический документ по безопасности Silverlight. расскажет вам все, что вам нужно знать:

Руководство по безопасности для написания и развертывания приложений Silverlight.docx: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7cef15a8-8ae6-48eb-9621-ee35c2547773

если вы не можете открыть docx, просто удалите «x», и он откроется в Word 2003 ;-)

Как

person Community    schedule 15.05.2009