Silverlight безопасен?

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

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

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

8 ответов

Решение

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

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

Вы можете попытаться смягчить эти атаки:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как

Другие вопросы по тегам