Каковы передовые методы программирования для предотвращения вредоносных программ в автономных приложениях?

Есть ли у кого-нибудь мысли о том, как предотвратить атаки вредоносных программ на автономные приложения. Допустим, это программа на компьютере с Windows, подключенном к Интернету, это наиболее распространенный сценарий.

Мне также интересно, какие типы атак возможны. Я считаю, что .NET выполнит некоторую статическую проверку кода перед его запуском, используя тип контрольной суммы. Это обнаружит статически прикрепленный фрагмент вредоносного кода. Можно ли это обойти?

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

Как насчет методов использования памяти для повышения безопасности? Я знаю, что это не отдельный случай, но проблема с повреждением DNS-сервера была связана с предсказуемым использованием, я думаю, IP-адресов. Следует ли сделать использование памяти более непредсказуемым?


person jeffD    schedule 24.03.2009    source источник
comment
Это большой, расплывчатый вопрос, во многом зависящий от того, что должно делать автономное приложение.   -  person Eddie    schedule 24.03.2009


Ответы (2)


Мне также интересно, какие типы атак возможны.

То, что вы можете проверить, зависит от вашего приложения. Вот несколько мыслей, которые могут помочь вам начать:

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

  • Если у вас есть браузер или средство просмотра документов, вам необходимо проверить каждый URL-адрес, прежде чем разрешить пользователю переходить по этому URL-адресу — вам следует отключить внедрение javascript.

  • Если вы имеете дело с сокетами, убедитесь, что вы не разрешаете произвольные соединения.

  • Если вы читаете/пишете из системного буфера обмена, дважды проверьте данные и ничего не оставляйте. Сделайте правильную уборку.

  • Подпишите свои собственные двоичные файлы и другие дистрибутивы.

  • Если ваше приложение связано с безопасностью:

  • используйте хорошую криптобиблиотеку

  • провести анализ угроз
  • не используйте статические пароли

и многое другое...

Как насчет динамически внедряемого кода.

Это почти всегда происходит из-за некоторых ошибок в вашем коде. Запустите свой код с помощью инструмента статического анализа и проверьте наличие переполнений буфера и друзей.

Как насчет методов использования памяти для повышения безопасности?

В многопользовательском сценарии ваше приложение уже изолировано для запуска в собственном пространстве процессов каждого пользователя. Однако нет смысла помещать в песочницу разные приложения для одного пользователя.

person dirkgently    schedule 24.03.2009

Самое главное: не запускайте от имени администратора и не требуйте, чтобы вы запускались от имени администратора. Используйте CAS, чтобы отказать себе в разрешениях, которые вам не нужны. Таким образом, если ничего не помогает и вы полностью завладели компьютером, вы облажались только сами, а не весь компьютер.

person GWLlosa    schedule 24.03.2009