Вопрос

Правильно ли сказать, что платформа .Net более безопасна, поскольку CLR защищает от атак переполнения буфера?

Предполагая, что в управляемой ОС работает веб-браузер (например, Космос, SharpOS или Сингулярность), будет ли технически возможно, чтобы злоумышленник внедрил IL-код в приложение?

Придется ли мне беспокоиться об атаках, которые невозможны в неуправляемых приложениях?

Это было полезно?

Решение

По большей части вы правы.Приложения с безопасной системой типов (не только .NET или Java) не позволяют приложению нарушать эти ограничения.

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

(Кстати, C# по-прежнему может выполнять небезопасные действия и настраивать себя на выполнение произвольного кода.Это просто довольно громоздко и вряд ли будет использоваться в реальном приложении.)

Дыры в безопасности, которые вы увидите в управляемом браузере, возникнут, если он позволит загружать произвольный код, используя CLR в качестве безопасной среды.Хотя код, сгенерированный CLR (т. е. JIT-код вашего приложения), будет безопасным, сами загрузчик и верификатор обычно пишутся на более низком языке.Было несколько (я думаю, две для .NET?) дыр в безопасности, из-за которых вредоносная сборка могла заставить реальную среду CLR выполнить произвольный код.Однако это относительно редкие проблемы, и площадь поверхности намного меньше, чем была бы в противном случае.

Так что да, полностью безопасный управляемый браузер сам по себе не станет жертвой этих конкретных эксплойтов.Но это также означает, что вам придется писать и выполнять свои плагины аналогичным образом (Flash?).Наконец, есть и другие дыры в безопасности, на которые можно обратить внимание, но обычно они менее серьезные, чем в неуправляемом приложении.Например, межсайтовый скриптинг по-прежнему будет оставаться проблемой.Но, по крайней мере, у вас не будет проблем типа «просмотр документа может выполнить произвольный код».

Другие советы

CLR (и JVM) защищают от множества распространенных атак, но это не устраняет все угрозы.CLR или любая другая библиотека могут содержать ошибки, допускающие эксплойты.Ошибки приложений также могут позволить использовать эксплойты.SQL-инъекция — это пример атаки, которая возможна из-за отсутствия проверки входных данных в приложении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top