2010-02-15 3 views
3

Перед тем, как включить его во внутреннюю корпоративную сеть, мне надлежит следить за просмотром некоторого стороннего кода (бесплатной веб-страницы C# Sharepoint в этом случае). Большая проблема заключается в скрытом скрытом в веб-части вредоносном коде, который украдет данные/отправку информации обратно создателю веб-сайта/и т. Д., При этом вторичная проблема будет связана с проблемами производительности.Рассмотрение кода третьей стороны по вопросам безопасности

У нас есть исходный код, и в этом случае существует менее 2000 строк кода, поэтому нетрудно вручную запустить все это и убедиться, что все в порядке. Для большей работы какой подход необходим для аудита кода, чтобы убедиться, насколько это безопасно? Мы должны будем сделать это для больших кодовых баз в будущем.

ответ

1

Разбейте его на модули и осмотрите их изолированно.

Ознакомьтесь с каждым методом, чтобы убедиться, что он рекламируется как рекламируемый. Начните с методов самого низкого уровня, которые вызывают только вызовы API - как только вы подтвердите, что те делают то, что они говорят на жестяне, вы можете проверить методы, которые их называют, не беспокоясь о том, что именно они делают.

Один из способов обойти это - посмотреть на метод «слепой», записать то, что вы думаете, что он делает, а затем сравнить это с тем, что он говорит в документации.

1

Таким образом, вы не волнует, если код не является безопасным, и вы получите взломаны китайцами? Обычно, когда люди делают обзоры кода, они обеспокоены тем, что их атакуют аутсайдеры, и большинство коммерческих инструментов отражают это. Имейте в виду, что хакеры регулярно используют МНОГО различных типов уязвимостей без доступа к исходному коду. Лучшим инструментом для коммерческого статического анализа для C# является Fortify. К сожалению, если кто-то пишет бэкдор, он может выглядеть как угодно, и даже ручная проверка кода, скорее всего, пропустит эту проблему.

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

2

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

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

Если код компилируется изначально или интерпретируется, все становится сложнее. Посмотрите на включения библиотек, которые не имеют смысла: TCP в библиотеке, которая не имеет ничего общего с сетью, файл IO, где он не принадлежит ... Опять же, я лично не трогал бы его, если бы у меня не было 100% вера в него.

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

Смежные вопросы