Защита от хакеров корпоративных сетей
Шрифт:
Вопрос: После нападений террористов 11 сентября на США особое значение приобрел вопрос использования террористами средств криптографии. Появились высказывания о предоставлении правительственным органам возможности расшифровки зашифрованных сообщений при помощи «потайной калитки», встроенной во все криптосистемы. Почему так нельзя сделать? Ответ: Наличие «потайной калитки» в криптографических алгоритмах, при помощи которой любой может расшифровать сообщение, – головная боль для всех пользователей криптографии. Вероятнее всего, ключи от «потайной калитки» будут храниться в одном месте, на которое тут же нацелятся хакеры. Как только хранилище ключей будет скомпрометировано, а рано или поздно это произойдет, все данные можно считать скомпрометированными. Кроме того, необходимо будет создать новую
Вопрос: Почему оказалось легко взломать CSS, технологию шифрования, используемую для защиты DVD-дисков от неавторизованного корирования? Ответ: Защита от копирования DVD-дисков была легко взломана в основном из-за того, что Xing Technologies хранило свой ключ в открытом виде. Ранее уже говорилось о недопустимости этого. Данные, записываемые на DVD-Video-диск, шифровались алгоритмом CSS (Content Scrambling System – система скремблирования содержания) с использованием 40-битного ключа. Зная 40-битный ключ Xing Technologies, одни хакеры смогли атакой «грубой силы» быстро взломать ключи еще на 170 лицензий. Таким способом джинн был выпущен из бутылки, если можно так выразиться, потому что шифр внутреннего формата многих производителей оказался раскрытым. Располагая таким большим количеством ключей, другие хакеры смогли написать программу DeCSS, которая позволяла копировать с DVD-диска зашифрованные данные на другой носитель в расшифрованном виде. В конечном счете схема CSS была обречена на провал. Нельзя полагать, что никто не сможет прочитать ключ, если он размещен в миллионах DVD-проигрывателей.
Глава 7 Непредвиденные входные данные
В этой главе обсуждаются следующие темы:
• Опасность непредвиденных входных данных
• Поиск обусловненных непредвиденными входными данными уязвимостей
• Методы поиска и устранения уязвимостей, обусловленных непредвиденными входными данными
• Использование средств безопасности языков программирования для обработки непредвиденных данных
• Инструментарий обработки непредвиденных данных
· Резюме
· Конспект
· Часто задаваемые вопросы
Введение
Интернет состоит из приложений, каждое из которых является операционной системой или программой ввода, обработки и передачи информации. Каждый день появляются новые приложения. Полезное пользователю приложение должно взаимодействовать с ним, реагируя на введенные пользователем данные. Работа всех приложений, будь это клиент интерактивной переписки в сети, Web-сайт электронной коммерции, системная утилита с интерфейсом командной строки или компьютерная игра, выполняющаяся в оперативном режиме, зависит от входных данных приложения. Программа расчета бесполезна, если она не воспринимает входные данные. Не принимающая заказы система электронной коммерции противоречит своему назначению.
Все Интернет-приложения должны быть доступны удаленным пользователям сети. Недостатки в программировании приложения из-за отсутствия опыта, ошибок или какой-либо неучтенной аномалии могут сделать его небезопасным. Сложные приложения часто разрабатываются поэтапно, небольшими модулями. При объединении модулей в единый проект возможные несогласованности в алгоритмах их работы влияют на уязвимость приложения в целом.
Служба компьютерной безопасности предупреждает!
Противостояние между
Уязвимость приложения сильно увеличивается, если в нем не предусмотрена защита от неверных входных данных. Список уязвимостей можно найти в описании любого сканера CGI (cgichk, whisker и т. д.). (CGI (Common Gateway Interface) – общий шлюзовой интерфейс. Разработанный NCSA сетевой стандарт, предназначенный для создания серверных приложений HTTP.) Большинство известных сканеров CGI уязвимы к атакам, основанным на вводе входных данных в непредусмотренном формате.
Опасность непредвиденных входных данных
Для взаимодействия с пользователем приложение должно обрабатывать входные данные. Входные данные могут быть представлены в простой форме, например щелчком мышки в заданной позиции монитора, или одним введенным символом, или в форме сложно отформатированного потока данных большого размера. В любом случае пользователь, осознанно или нет, может ввести данные в непредвиденном для приложения формате. Иногда это никак не скажется на работе приложения, а иногда может изменить результаты его работы. Например, может привести к предоставлению пользователю информации, к которой он не был бы допущен в обычной ситуации, или повлиять на работу других приложений.
Три класса атак основаны на непредвиденных входных данных.
1. Переполнение буфера. Когда злоумышленник вводит больше данных, чем предусмотрено разработчиком, то приложение может неправильно обработать избыточные данные. Языки С и С++ являются примером языков программирования, написанные на которых программы никак не отреагируют на избыточные данные, если программист не предусмотрел их обработку. Языки программирования Perl и PHP автоматически справляются с избыточностью данных, увеличивая размер области для хранения переменных. (Дополнительные сведения по переполнению буфера приведены в главе 8.)
2. Вызов системных функций. Введенные в приложение данные могут использоваться для вызова системных функций взаимодействия с ресурсом, который явным образом в приложении не описан, или изменить логику их работы. Системные функции позволяют запустить другое приложение, получить доступ к файлу и т. п.
3. Изменение логики работы приложения. Иногда входные данные представляются в формате, способно изменить логику работы приложения. Например, в результате представления данных в особом формате может быть нарушена работа алгоритмов аутентификации, изменены запросы языка структурированных запросов SQL (Structured Query Language – международный стандартный язык для определения реляционных баз данных и доступа к ним), а также получен доступ туда, куда обычно злоумышленник получить доступ не может.
Следует отметить, что четкой границы между этими классами атак нет. Поэтому некоторые атаки могут одновременно принадлежать нескольким классам одновременно.
На практике встречается большое количество случаев вариантов представления входных данных, обработка которых в программе разработчиком не предусмотрена. Основанная на непредвиденных входных данных атака может быть очень простой. Например, она может заключаться во вводе в программу неприметного значения, изменяющего логику ее выполнения, например ввод имени дополнительного входного файла. Для организации подобной атаки особых знаний не требуется.
Известны более изощренные атаки, которые основаны на включении во входные данные специальных метасимволов, имеющих особый смысл для приложения или операционной системы. В ядре базы данных Microsoft Jet была выявлена уязвимость: включение в SQL-запрос вертикальных линий (I) позволяло злоумышленнику выполнить в коде VBA (Visual BasicforApplications) системные команды. Этот же механизм лежит в основе популярной службы удаленных данных RDS (Remote Data Services), которая, как доказано практикой, является широко распространенной проблемой информационного сервера Интернет IIS (Internet Information Server) Windows NT.