Одним из средств противодействия угрозам нарушения конфиденциальности является использование средств идентификации и аутентификации пользователей.
Идентификация пользователяпредставляет собой сравнение предъявляемого пользователем идентификатора с имеющимися в базе ранее выданных системой.
Аутентификация— проверка принадлежности предъявленного пользователем идентификатора именно этому пользователю. Это проверка подлинности пользователя.
Очень часто используется понятие учетной записи, представляющее собой объединение идентификатора и пароля пользователя.
Выполнение пользователем каких-либо действий в защищенной таким способом системе возможно только после удачного прохождения им процедур идентификации и аутентификации. При этом система может затребовать у пользователя:
• индивидуальный объект заданного типа (удостоверение, пропуск, магнитную карту и т.д.), называемый токеном;
• биометрические характеристики (голосовые характеристики, отпечатки пальцев, рисунок сетчатки глаза и т.д.);
• знание некоторой информации (пароль).
Различают прямую аутентификацию и аутентификацию с участием третьей стороны. В первом случае в процессе участвуют только две стороны: пользователь и система, ресурсами которой он хочет воспользоваться. Второй вариант подразумевает участие третьей доверенной стороны. В случае автоматизированной информационной системы в этом качестве может выступать сервер аутентификации.
Остановимся подробно на аутентификации при помощи пароля, поскольку аутентификация при помощи токенов и биометрических характеристик применяется в основном при локальном доступе в систему. Большинство интернет-сервисов используют парольные системы.
Пароль представляет собой известную только данному пользователю последовательность символов. Способы проверки правильности пароля могут быть различными:
• по хранимой в системе копии пароля или его свертке;
• по некоторому проверочному значению;
• без передачи информации о пароле проверяющей стороне, так называемое доказательство с нулевым разглашением. Эти методы появились в середине 1980-х — начале 1990-х гг. Основная идея метода состоит в том, что существует возможность доказательства знания правильного пароля без его передачи. После нескольких циклов информационного обмена проверяющая сторона с заданной вероятностью делает вывод о том, что пользователю пароль известен.
Особое внимание разработчики программного обеспечения уделяют способам хранения паролей. Наиболее часто используются следующие:
• в отрытом виде;
• в виде свертки;
• в зашифрованном виде.
Способ хранения паролей в системе изменить невозможно, поэтому необходимо очень тщательно проследить все ответвления информационных потоков, связанные с содержащими пароли файлами или базами данных. Во многих системах для обеспечения отказоустойчивости создается резервная копия этих данных. Если злоумышленник сможет получить в свое распоряжение файл спаролями или его копию, у него будет достаточно времени, чтобы попробовать его проанализировать и получить дополнительную информацию, которую можно использовать при взломе системы.
Одним из самых распространенных в настоящее время является протокол http, служащий основой для создания веб-сайтов. Современные его модификации позволяют создавать сложные системы, включающие различные сервисы. Для подключения к такому сервису не нужны клиентские программы, достаточно использовать интернет-обозреватель, который сейчас поставляется с любой операционной системой. Широта использования протокола и тот факт, что веб-страница фактически представляет собой программу, исполняемую на клиентском компьютере, естественно, привлекает злоумышленников.
Клиент-серверная технология предполагает обмен запросами и ответами между двумя участниками процесса, клиентом и сервером. В обработке клиентских запросов на веб-сервере участвуют специальные программы (скрипты, интерпретаторы и т.д.). Они выполняют на серверной стороне задания клиента для придания большей динамичности взаимодействию клиента и сервера. Злоумышленник может попытаться найти возможные уязвимости этих программ. Прежде всего это связано с ошибками разработчиков, которые не всегда обладают достаточным опытом и профессионализмом для создания сложных веб-порталов.
Рассмотрим основные угрозы безопасности веб-серверовв соответствии с перечнем классификаций угроз веб-сервисам.
На первом месте в этой классификации стоят Атаки на средства аутентификации.
Основными типами угроз безопасности в процессе аутентификации являются:
Подбор (Brute Force). В современной форме это автоматизированный процесс проб и ошибок, направленный на определение правильной информации, запрашиваемой системой. Это может быть имя пользователя, пароль, номер кредитной карточки, ключ шифрования и т.д.
Применительно к определению параметров учетной записи выделяют прямой и обратный подбор. В первом случае известно имя
пользователя, и технология подбора применяется для определения пароля. Во втором — подбором определяется имя пользователя при известном пароле. Применение обратного подбора может быть оправдано всистемах с большим количеством учетных записей, где высока вероятность использования одного пароля различными пользователями.
Время и ресурсы, необходимые для успешного завершения подбора, зависят от количества возможных вариантов подбираемой комбинации символов, а оно нелинейно зависит от ее длины и числа символов валфавите, используемом для составления этой комбинации. Стремясь уменьшить время подбора, злоумышленники привлекают дополнительные данные для оптимизации процесса. Чаще всего это достигается за счет использования словарей, содержащих возможные парольные фразы.
Недостаточная аутентификация (Insufficient Authentication). Эта уязвимость возникает, когда разработчики сайтов оставляют для части ресурсов возможность доступа без проверки учетных данных пользователя. Ошибочно считать, что страница будет недоступной, если нигде на сайте не упомянут ее адрес. Методами доступа к таким страницам могут служить перебор типичных файлов и директорий, анализ сообщений об ошибках и журналов перекрестных ссылок. Даже простое чтение документации к приложению может дать злоумышленнику необходимую информацию. Все ресурсы должны быть защищены адекватно важности их содержимого и функциональных возможностей.
Небезопасное восстановление паролей (Weak Password Recovery Validation). Большая часть веб-сервисов, требующих идентификации пользователей, делает скидку на их забывчивость и предусматривает механизмы восстановления утраченного пароля. В некоторых случаях атакующий имеет возможность несанкционированно получать, модифицировать или восстанавливать пароли других пользователей.
Как правило, для восстановления пароля используются механизмы альтернативной аутентификации пользователя по ответу на секретный вопрос или его персональным данным (ИНН, адрес, почтовый индекс и т.п.), вводимым в процессе регистрации на сайте. Возможно также использование подсказок, позволяющих пользователю вспомнить забытую информацию. Слабым местом таких алгоритмов является простота подбора или угадывания ответов на вопросы и прозрачность подсказок, которые оставляют для себя пользователи. Нельзя забывать, что при желании персональную информацию практически любого пользователя можно найти в Интернете или имеющихся в продаже базах данных различных ведомств.
Атаки на клиентов (Client-side Attacks). Современные реализации http протокола включают в себя возможность выполнения на клиент-
ской стороне программного кода, загружаемого с сервера. Потенциально это открывает для злоумышленников возможность загрузки и выполнения на клиентском компьютере вредоносных программ. Ситуация осложняется тем, что пользователь не ожидает атаки со стороны сайта, доверяет ему. На использовании этого доверия основаны различные способы атак на клиентов сервера. Рассмотрим некоторые из них:
Подмена содержимого {Content Spoofing). Для выполнения этого класса атак злоумышленник должен тем или иным способом спровоцировать пользователя перейти по специально созданной ссылке. Она может быть доставлена при помощи любого из существующих в сети Интернет способов обмена информацией якобы от надежного адресата. Возможно и автоматическое ее открытие в браузере пользователя с использованием межсайтового выполнения сценариев.
При подготовке такой ссылки атакующий стремится убедить пользователя, что просматриваемая им страница сгенерирована надежным сервером, а не передана из внешнего источника.
При генерации динамических страниц их содержимое может подгружаться из динамических источников HTML кода, ссылка на который передается как параметр. Изменив значение этого параметра на адрес страницы со своего сервера, злоумышленник может изменить содержимое страницы необходимым ему контентом. При этом пользователь в строке адреса обозревателя увидит знакомый адрес сервера и будет уверен в том, что просматривает данные с безопасного сервера, в то время как на странице будет присутствовать внешнее содержимое.
Эта атака может использоваться для создания ложных страниц, таких, как формы ввода пароля, пресс-релизы и т.д.
Межсайтовое выполнение сценариев (Cross-site Scripting, XSS). Эта угроза безопасности связана с возможностью передачи злоумышленником веб-серверу исполняемого кода, созданного на одном из языков программирования активного содержимого веб-страниц. Этот код впоследствии будет перенаправлен на компьютер пользователя и исполнен в контексте безопасности сервера. В его распоряжении окажутся все данные, доступные с помощью интернет-обозревателя. При этом для атакующего открываются большие возможности. Он может завладеть идентификационными параметрами пользователя, перенаправить его на другой сервер, осуществив подмену содержимого и т.д.
Ссылки на код или сам код может быть передан в адресах, заголовках HTTP запросов, значениях полей форм и т.п.
Существует две разновидности атак этого типа. Постоянные отличаются от непостоянных тем, что при их осуществлении передача
кода серверу и передача его клиенту осуществляются в разных HTTP запросах.
При организации непостоянной атаки необходимо заставить пользователя, как в случае подмены содержимого, перейти по заранее подготовленной ссылке. В случае удачи код, внедренный в URL или заголовки запроса, будет передан клиенту и выполнен в его браузере.
При постоянной атаке код передается серверу и хранится на нем до тех пор, пока атака не будет реализована. Для этого удобно использовать форумы, электронную почту с веб-интерфейсом и чаты. Пользователь подвергается атаке, просто зайдя на сайт с внедренным кодом.
Существуют и более изощренные атаки на клиентов веб-сервисов, основанные на использовании различных уязвимостей, например, расщепление HTTP запроса и др.
Следующий класс атак направлен на несанкционированное выполнение командили программного кода на веб-сервере.
Веб-сервер обрабатывает приходящие к нему запросы пользователей, используя данные из этих запросов для динамической генерации страниц, которые он потом возвращает клиентам в качестве ответа. При этом содержащиеся в запросе данные используются для формирования команд, исполнение которых на сервере позволяет сформировать необходимый ответ. Здесь скрыта возможность модификации команд по желанию злоумышленника. Очень часто специально подобранные запросы приводят к неожиданным для разработчиков эффектам: от зависания операционной системы до предоставления злоумышленнику возможности выполнения любой программы на сервере.
Вопрос о проверке корректности получаемых сервером данных становится очень важным при разработке программ большим коллективом программистов. Ошибки подобного рода возможны при стыковке разработанных различными людьми частей программы.
Основными атаками такого рода являются:
Переполнение буфера (Buffer Overflow). Это очень распространенная ошибка при программировании. Такая ситуация возникает, когда объем заносимых в память данных превышает размер выделенной для их размещения памяти (буфера). При этом сохраняемые данные переписывают соседние области памяти сервера. Результат, как правило, непредсказуем. Скорее всего, это приведет к ошибке и останову сервера, т.е. к реализации атаки типа «отказ в облуживании».
Для управления процессом переполнения злоумышленник должен хорошо знать последовательность размещения данных в оперативной памяти компьютера. Тогда можно попытаться подобрать специальную последовательность битов в данных, чтобы заставить
сервер произвести нужные ему действия. Например, изменить последовательность исполнения программы и выполнить в ее контексте необходимые действия. Это очень сложно сделать без детального анализа работающей на сервере программы и ее размещения в его памяти.
Атака на функции форматирования строк (Format String Attack). Используемые при программировании веб-сайтов языки программирования могут содержать операторы записи форматированной символьной информации, обладающие достаточно широкими возможностями. Если переданные пользователями данные применяются в качестве аргументов таких функций, злоумышленник может передать сайту строку, содержащую символы форматирования. При этом он может получить возможность изменения последовательности выполнения программы на сервере, перезаписывая некоторые области памяти с помощью этих программ. В результате у него появляется возможность выполнения произвольного кода на сервере, считывания данных из стека, вызывать ошибки в программе (атака типа «отказ в обслуживании»).
Внедрение операторов LDAP (LDAP Injection) и SQL (SQL Injection). Атаки этих типов направлены на веб-серверы, создающие запросы к службам LDAP или SQL запросы к серверам СУБД на основе данных, вводимых пользователем для генерации динамически веб-страниц. Это запросы к службам каталога и запросы на языке SQL к серверу СУБД соответственно. Путем модификации этих запросов, которые будут выполняться на серверах с высоким уровнем привилегий, злоумышленник может получить контроль над указанными серверами.
Выполнение команд операционной системы (OS Commanding). Путем манипуляций с данными запроса можно попытаться выполнить команды операционной системы на веб-сервере. Как и в случае внедрения операторов LDAP w SQL, они будут выполняться с тем же уровнем привилегий, с каким работает компонент приложения. Последствия могут быть достаточно серьезными.
Внедрение серверных расширений (SSI Injection). Злоумышленник может попробовать передать серверу сценарии SSI, используемые для генерации исходного кода страниц. Эти сценарии выполняются сервером перед генерацией HTML страницы. В этом случае у атакующего появляется возможность выполнения команд операционной систем и включения запрещенного содержимого в генерируемую страницу.
Внедрение операторов XPath (XPath Injection). С появлением языка XML появилась еще одна возможность изменить логику работы программы на сервере путем составления пользовательского запроса. Если в работе веб-сервера предусмотрена возможность создания запросов к ЛЖ£-документам на языке XPath на основе вводимых поль-
зователями данных, злоумышленник может модифицировать запрос таким образом, чтобы изменить работу сервера.
Одним из принципов построения системы информационной безопасности является принцип сокрытия данных о структуре и принципах работы информационной системы. Против этого направлены атаки, целью которых служит разглашение информации (Information Disclosure). Знание версий работающего в системе программного обеспечения, наличия и версий установленных обновлений, места расположения временных файлов и резервных копий — вся эта информация может помочь злоумышленнику в планировании атаки на систему. Чем большими знаниями о приложении он будет располагать, тем легче будет достичь своей цели.
Примерами таких угроз веб-серверам могут служить:
Индексирование директорий (Directory Indexing). В отсутствие отображаемой по умолчанию страницы веб-сервер отображает свой список файлов и директорий. В результате злоумышленник может получить доступ к ресурсам, не предназначенным для свободного доступа. Причина такого поведения сервера, как правило, кроется в ошибках конфигурации и реализации сервиса. Возможен вариант сохранения старой информации в кэше поисковых машин.
Идентификация приложений (Web Server/Application Fingerprinting). Информация о версиях работающих на сервере приложений может быть получена из анализа особенностей его поведения и информации, предоставляемой самим сервером. В этот список входят: особенности реализации протокола http, заголовки HTTP-ответов, используемые сервером расширения файлов (.asp или jsp), значение Cookie (ASPSESSIONи т.д.), сообщения об ошибках, структура каталогов и используемое соглашение об именах (Windows/Unix), интерфейсы поддержки разработки веб-приложений (Frontpage/ WebPub-lisher), интерфейсы администрирования сервера (iPlanet/Comanche), определение версий операционной системы.
Примерно так же обстоит дело с определением версий клиентских приложений. Анализ косвенных данных может дать обширную информацию системе. Так, например, анализ заголовков почтовых сообщений, созданных с помощью клиента Microsoft Outlook, позволяет определить версию установленного на компьютере браузера Internet Explorer.
Все это очень важно для атакующего, поскольку детали его атакующих действий могут сильно различаться в зависимости от версии операционной системы или приложения. Кроме того, эти знания позволят тщательно скрыть следы взлома системы. Недаром документ RFC 2068 рекомендует использовать настраиваемые параметры в заголовках HTTP ответов.
Утечка информации (Information Leakage). Порой на веб-сервере разработчики размещают свои комментарии, посвященные деталям
отладки системы и принципам ее работы. Сообщения об ошибках также могут содержать информацию, очень ценную для злоумышленника, пытающегося понять сильные и слабые стороны приложения. Оставляя дополнительную информацию внутри приложения, разработчики менее всего думают о том, что ее анализ может облегчить атаку на него. Иногда там можно найти данные о структуре приложения и ^//-запросов, названия процессов и программ сервера, данные об учетных записях, использовавшихся при отладке, и многое-многое другое.
Обратный путь в директориях {Path Traversal). Одной из целей атаки на сервер может служить получение доступа к файловой системе сервера вне зоны, отведенной веб-серверу. Для этого можно попытаться внедрить символы «../» в адрес страницы, чтобы выйти из основной папки сервера. Если не получается напрямую, можно попробовать сделать это, используя сценарии или приложения, основанные на механизме шаблонов.
Предсказуемое расположение ресурсов {Predictable Resource Location). Получить доступ к дополнительной информации о сервере и работающих на нем приложениях злоумышленник может, зная расположение содержимого, не предназначенного для общего доступа. Эта угроза очень похожа на описанную выше угрозу индексирования директорий, с той разницей, что у атакующего нет перед глазами выданного сервером списка файлов и папок, а есть знания типичной структуры сервера и приложений. Недостающие данные могут быть получены путем подбора.
Знание логики работы приложения дает в руки злоумышленника дополнительные возможности для проведения логических атак {Logical Attacks), к которым обычно относят следующие:
Злоупотребление функциональными возможностями {Abuse of Functionality). Угроза использования функций веб-приложения для выполнения деструктивных действий. Это могут быть функции каких-либо второстепенных компонентов приложения. Например, функция рассылки в чате может быть использована для рассылки ссылок на подготовленный злоумышленником сервер всем текущим пользователям, а модуль передачи данных из HTML формы на почтовый адрес — в качестве ретранслятора для рассылки спама.
Недостаточное противодействие автоматизации {Insufficient Anti-automation). Автоматизация работы сервера избавляет администратора от рутинной работы, ускоряет процессы взаимодействия систем, однако в некоторых случаях необходимо ограничивать ее возможности. Кроме того, некоторые операции должны производиться вручную. Адля некоторых функций приложения необходимо реализовы-вать защиту от автоматических атак. Отклик системы на автоматизированное воздействие извне должен быть минимальным, чтобы
она не стала жертвой систем автоматического поиска уязвимостей и регистрации учетных записей электронной почты.
Дата добавления: 2017-04-20; просмотров: 537;