Может ли кто-нибудь из разработчиков программного инструментария незаметно устроить «черный ход» в вашей информационной системе?
Насколько успешными будут ваши переговоры с иностранным поставщиком, если его представитель не говорит по-русски, а ваш переводчик — шпион вашего конкурента? И как вы сможете это выяснить, если ни о чем не подозреваете? С подобной ситуацией мы столкнулись совсем недавно, вот только в роли таких переводчиков выступали не люди, а программы.
Используемое нами ПО переводило накопленные данные в бизнес-информацию, которую мы использовали для принятия решений и проведения торгов. Если мы не можем доверять такому инструментарию, то мы не можем доверять и результатам выполненного им анализа. Оказалось, что, если все-таки принимать его рекомендации за чистую монету, можно очень быстро потерять большие деньги.
Мы должны абсолютно доверять тем, кто пишет наши бизнес-приложения. Мы также тщательно тестируем код, хотя, как правило, это тестирование сводится к поиску ошибок, а не намеренно скрытого вредоносного кода. А ведь такой встроенный код может передавать наши данные конкурентам или изменять сведения финансовых отчетов так, что злоумышленник будет нас грабить, а мы ничего не заподозрим.
К счастью, в нашей организации есть очень квалифицированная группа аудиторов, и при этом мы заставляем работающих на нас программистов использовать специальный инструментарий, позволяющий проводить углубленный анализ кода, тем самым уберегая себя от неприятных сюрпризов.
Но предположим, что мы не можем доверять и своему инструментарию. Представьте, что, несмотря на тщательный анализ и проверку вручную всего кода, в наших приложениях все же появляется вредоносный код... поскольку внедряет его именно инструментарий. Как раз с этой проблемой я и столкнулся, когда наш антивирус стал предупреждать меня о наличии такого рода программ-шпионов на серверах, на которых работают наши корпоративные информационные системы.
В частности, антивирусная программа обнаружила на большинстве наших серверов DLL-библиотеку, содержащую сигнатуру, напоминающую некий программный фрагмент, который позволяет организовать внутри системы «черный ход». Этим ходом могут воспользоваться злоумышленники для осуществления своих отнюдь не благородных замыслов.
Первое подозрение пало на группу разработки. С помощью новейших антивирусных средств мы проверили настольные ПК своих программистов. Инфицированные файлы были везде, даже на компакт-дисках с дистрибутивами, полученных от поставщика инструментария, которым мы пользовались!
Но если файлы, используемые для организации «черного хода», были даже на этом компакт-диске, тогда наши программисты ни в чем не виноваты. Просто, работая с этим инструментарием, они неумышленно инфицировали каждое новое приложение.
Новая дилемма
После нескольких эмоциональных разговоров с представителями компании, выпустившей инструментарий, нам удалось дозвониться до ее руководителей технического отдела. Они объяснили, что обнаруженный код в действительности не был средством организации «черного хода», а представлял собой набор инструментов, применяемых для отладки. Он позволяет перехватывать события в приложениях и модифицировать их, чтобы выполнять тестирование, не меняя операционной системы.
Это объяснение показалось убедительным. Но почему эксперты по антивирусам утверждают, что этот код представляет серьезную угрозу, если он предназначен только для безобидного тестирования? Один из более молодых сотрудников технического отдела случайно проговорился, что он хорошо знаком с несколькими хакерами, которые используют тот же самый инструментарий. Однако вместо того, чтобы перехватывать вызовы с целью отладки, они создали популярную в определенных кругах программу, служащую для организации «черных ходов».
Я совершенно растерялся. Должен ли я верить производителю, настаивающему, что его инструментарий не содержит вредоносного кода, несмотря на то что этот код был создан программистом, обменивавшимся информацией с хакерами? Можно ли быть уверенным в том, что хакеры изначально не ставили своей целью использовать продукты этого производителя для того, чтобы проникнуть в системы добросовестных покупателей этих продуктов?
Опасный выбор
Я все еще пытаюсь понять, что делать. Мы можем попросить собственных специалистов или независимых экспертов проверить тексты инструментария разработчика, но маловероятно, что он на это согласится. Кроме того, такая экспертиза обойдется очень дорого, да и проводить ее всякий раз, когда появляется новая версия приложения, попросту невозможно. Более того, как убедиться в том, что скомпилированные DLL-библиотеки и полученные нами исполняемые файлы были созданы из того исходного кода, который мы проверили? Если же мы вообще ничего не будем предпринимать, хакеры смогут проникнуть в самое сердце нашей компании. Сейчас мы лишь тщательно проверяем на вирусы все свои ПО. Эта ситуация заставила меня задуматься о том, в какой степени можно доверять производителю. Что бы сделали вы, оказавшись в подобной ситуации?
Данная статья написана действующим администратором систем информационной безопасности. Винс Тью — псевдоним автора, который, по очевидным соображениям, не захотел называть своего настоящего имени и места работы