Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Материалы всероссийской научно-технической конференции Автоматизир

..pdf
Скачиваний:
6
Добавлен:
15.11.2022
Размер:
22.56 Mб
Скачать

МЕТОДИКА ПРОТИВОДЕЙСТВИЯ АТАКАМ ТИПА SQL INJECTION

Студент гр. КЗИ-10 Н.В. Богданов

Научный руководитель - канд. физ.-мат. наук, доцент Е.Л. Кротова Пермский национальный исследовательский политехнический университет

Термины и определения. Внедрение SQL-кода (англ. SQL injec­ tion) - один из распространенных способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос про­ извольного SQL-кода [2]. Согласно данным компании Positive Technol­ ogies, более 70 % интернет-ресурсов содержат в себе уязвимости высо­ кой степени риска, которые могут нанести значительный ущерб их владельцам [1]. Основная масса этих уязвимостей связана с возможно­ стью внедрить оператор SQL с помошью доступных злоумышленнику инструментов.

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

Главной проблемой остаются автоматизация процесса проверки на SQL-Injection и предложение решений по устранению уязвимости.

В зависимости от типа используемой СУБД и некоторых других условий внедрение нежелательного SQL-кода может дать злоумыш­ леннику возможность выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, изменить, удалить или добавить данные), получить контроль над находящимися на сер­ вере файлами и даже получить контроль над самим сервером, на ко­ тором установлена СУБД.

Атака типа внедрения SQL-кода может быть реализована из-за недостаточной или вовсе отсутствующей обработки входных данных, используемых для построения SQL-запроса. Разработчик прикладных программ, работающих с базами данных, должен знать о таких уяз­ вимостях и принимать меры противодействия внедрению SQL.

Принцип атаки методом внедрения SQL-кода. Метод SQL-инъекций предполагает манипуляцию параметрами, передавае­ мыми веб-формой или адресной строкой на сервер приложения, а затем в базу данных. В штатной ситуации база данных возвращает известный по своей структуре набор данных, определенный разра­ ботчиком приложения, запросившему его пользователю. В нештат­ ной ситуации, когда значение, структура или объем входного пара­ метра не контролируются перед передачей запроса в базу, происхо­ дит внедрение нежелательного кода, выполнение которого может привести к утечке важной информации и потере контроля над базой данных.

Предположим, что серверному ПО передается входной параметр id news - идентификатор записи в ленте новостей из таблицы allnews, например, и оно использует его для построения SQL-запроса. Рассмотрим следующий РНР-скрипт:

$id = $_REQUEST['id'];

$res = mysql_query(MSELECT * FROM al_news WHERE id_news = Sidnews");

Если на сервер передан параметр id news, равный 7 (например, так: http://example.org/script.php?id_news=7), то выполнится следую­ щий SQL-запрос:

SELECT * FROM all news WHERE id_news = 7

В этом случае пользователю вернется запись о новости с иден­ тификатором, равным семи. Но если злоумышленник передаст в ка­

честве параметра id строку-1 OR 1=1

(например, так:

http://example, org/script.php ?id_news=-1+OR+1=1),

то выполнится

запрос:

 

SELECT * FROM all_news WHERE id_news = -1 OR 1=1

Таким образом, добавление оператора ИЛИ вместе с выражени­ ем, которое, очевидно, всегда истинно (1=1), нарушит штатную логи­ ку запроса и приведет к тому, что из таблицы all_news будут извлече­ ны и переданы пользователю все записи.

Методы защиты от атаки типа внедрение SQL-кода. Защита от данного вида атаки основана на достаточно простых методах, од­ нако ее реализация требует больших затрат времени, ведь необходи­ мо контролировать все имеющиеся источники параметров, которыми может манипулировать пользователь. Основной метод защиты - фильтрация, которая делится на несколько следующих видов:

1. Фильтрация строковых параметров.

Чтобы внедрение нежелательного кода было невозможно или значительно затруднено, для большинства СУБД, в том числе для Oracle Database и MSSQL Database, требуется брать в кавычки все строковые параметры. При этом в самом параметре экранируют спецсимволы - заменяют кавычки на \", апостроф на V, обратную ко­ сую черту на \\ и т.д.

2. Принудительная типизация параметров.

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

3. Усечение входных параметров.

Для внесения изменений в логику выполнения SQL-запроса тре­ буется внедрение достаточно длинных строк. Так, минимальная дли­ на внедряемой строки в вышеприведенном примере составляет 8 символов («1 OR 1=1»), что, очевидно, превышает разрядность чис­ ла, используемого в поле id таблицы news. В случе, если максималь­ ная длина корректного значения параметра известна точно либо ог­ раничена сверху известным числом, то одним из методов защиты может быть усечение значения входного параметра до штатного либо вывод ошибки пользователю.

4. Использование параметризированных запросов.

Многие серверы баз данных поддерживают возможность от­ правки параметризованных запросов (так называемых «подготовлен­ ных выражений»). При этом параметры, полученные извне, т.е. вве­ денные пользователем на форме либо в адресной строке, отправля­ ются на сервер отдельно от самого запроса либо они автоматически экранируются и фильтруются клиентской библиотекой.

Заключение. Обеспечение безопасности веб-сайтов от атак типа SQL-Injection является комплексной задачей, автоматизация которой приведет к уменьшению затрат.

Для автоматизации проверки предлагается осуществлять посто­ янный мониторинг на предмет наличия уязвимостей.

Автоматизация процесса защиты от внедрения SQL-кода требует решения следующих задач:

1. Поиск уязвимых областей кода в содержании веб-страницы. Для этого существует большое количество сканеров уязвимостей [4]: Nmap, IP-Tool, SqlMap, bsqlbf-v2, XSpider, Nikto, Acunetix Web Vul­ nerability Scanner и др.;

2. Защита уязвимого кода от инъекций:

фильтрация входных параметров запроса;

замена открытых паролей, хранящихся в базе, их хэшами;

подключение веб-сервиса к базе под непривилегированным пользователем.

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

Библиографический список

1.Евтеев Д. SQL-injection от А до Я [Электронный ресурс]. - URL: http://www.ptsecurity.ru/download/PT-devteev-Advanced-SQL- Injection.pdf

2.Внедрение SQL-кода [Электронный ресурс]. - URL: https://ru.wikipedia.org/wiki/Bнeдpeниe_SQL-кoдa

3.SQL injection для начинающих [Электронный ресурс]. - URL: http://habrahabr.ru/post/148151/

4.Обзор бесплатных инструментов для пентеста web-ресурсов

ине только [Электронный ресурс]. - URL: http://habrahabr.ru/ post/125317/

ВЫБОР НАДЕЖНОГО ПАРОЛЯ

Студенты гр. КОБ-12 А.В. Крысов, В.А. Суслопаров

Научный руководитель - канд. физ.-мат. наук, доцент Е.Л. Кротова Пермский национальный исследовательский политехнический университет

В современном мире пароль является неотъемлемой частью на­ шего существования. Он требуется для всего: для доступа на почту, на сайты социальных сетей, проведения онлайн-платежей, защиты своих гаджетов и много другого. В связи с этим возникает вопрос: а как же создать такой пароль, который будет по-настоящему защи­ щать наши данные от злоумышленников? Многие пользователи даже не задумываются, насколько надежен их пароль, а ведь надежный пароль - это важный элемент защиты, позволяющий значительно повысить безопасность онлайн-транзакций.

Сначала хотелось бы сказать о том, что пользователи используют при создании пароля, несмотря на то, что это категорически нежелатель­ но использовать. Во-первых, не нужно использовать в качестве пароля свою фамилию, имя, отчество и дату рождения ни вместе, ни по отдель­ ности (vasyaivanov, vasiliypetrovich, ivanovl608 и т.д.), ведь эти данные легко можно узнать из социальных сетей или других источников. Вовторых, лучше не использовать повторяющиеся символы и клавиши в порядке их следования как справа налево, так и слева направо (1234567, qwerty, 54321, 55555 и т.д.). В-третьих, пароль никогда не дол­ жен совпадать с логином. Также не стоит забывать про базовые подста­ новки, которые сделают только видимость сложности вашего пароля. Если вы в существующем слове уберете все гласные, измените регистр для случайного знака, сделаете одну букву заглавной, вставите случай­ ный символ в любое место слова, добавите пунктуационный знак в на­ чале или конце слова или сделаете замену типа «s» -> "$", «а» -> "@", то такой пароль тоже довольно легко будет взломать, потому что при пере­ боре пароля по словарю такие замены очень просто учесть программно.

Как же создать хороший и надежный пароль? Если вы тот поль­ зователь, которому не хватает фантазии, то самым простым способом является использование «генератора паролей». Многие генераторы выдают сразу несколько паролей по требуемым параметрам, так что есть варианты, среди которых можно выбрать понравившийся

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

Для тех, кто решил создать свой пароль самостоятельно, хотим представить несколько правил, следуя которым, можно составить достаточно надежный пароль:

1.Одним из ключевых моментов является длина пароля. Исполь­ зуйте пароль длиной не менее 8 символов. Для наглядности предста­ вим некоторые факты. Пароль, состоящий из 6 строчных букв, можно взломать менее чем за 1 с (!), примерно 0,07-0,08 с. Пароль, состоящий из 8 строчных букв, можно взломать уже за 52 с. Увеличим длину па­ роля до 10 строчных букв, взломать такой пароль можно уже за 9 ч [2]. Соответственно, если пароль будет еще длиннее, то взломать его будет еще дольше. Однако не нужно и переусердствовать, ведь слишком длинный пароль сложно будет запомнить.

2.Используйте как строчные, так и прописные буквы в одном пароле. Приведем тот же пример, что и в предыдущем пункте. Па­ роль, состоящий из 6 букв (3 строчных, 3 прописных), можно взло­ мать за 4 с. Пароль, состоящий из 8 букв (4 строчных, 4 прописных),

можно взломать за 3 ч. Пароль, состоящий из 10 букв (5 строчных, 5 прописных), можно взломать за 1 год [2].

3. Используйте комбинацию букв, цифр и символов. Уже знако­ мый пример. Пароль, состоящий из 6 символов (2 прописная буква, 2 строчная, 1 цифры и 1 символа), можно взломать за 52 с. Пароль, состоящий из 8 символов (2 прописные буквы, 2 строчные, 2 цифры и 2 символа), можно взломать за 3 дня. Пароль, состоящий из 10 символов (2 прописные буквы, 2 строчные, 3 цифры и 3 симво­ ла), можно взломать за 58 лет [2].

При создании пароля необходимо помнить о том, что он должен легко запоминаться самим пользователем. Вот несколько шагов с при­ мером для составления надежного и легко запоминающегося пароля:

1. Комбинацию букв и цифр, которые ни с чем не ассоциируют­ ся у пользователя, можно легко забыть. Чтобы этого не произошло,

нужно придумать какую-либо фразу, которую легко с чем-то ассо­ циировать или просто легко запомнить пользователю. Но в то же время не стоит использовать в качестве пароля названия автомоби­ лей, географических мест, спортивных команд и т.п., так как такие пароли очень легко взламываются перебором по словарю. Можете в качестве пароля использовать названия любимого стихотворения, например: «Не выходи из комнаты».

2.Для усложнения пароля необходимо вставить цифры. Напри­ мер: «Не750выходи из комнаты».

3.Символы можно использовать как разделители между слова­ ми. Например: «Не,750,выходи!из.комнаты».

4.Одним из способов усложнить пароль - это использовать анг­ лийскую раскладку клавиатуры, при этом вводить пароль по-русски. Так, печатая пароль из нашего примера по-русски

«Не,750,выходи!из.комнаты», получится «Yt,750,ds[jlb!bp.rjvyfhs». В этом случае есть один подвох, набирая пароль на клавиатуре, где только английские буквы, вы можете не вспомнить последователь­ ность символов.

5.Если придумать более длинную фразу, то можно использовать начальные буквы каждого слова. Например, из фразы «В нашей группе 8 девушек и 12 парней, староста Влад» можно составить па­ роль «Внг8ди12п,сВ».

6.Если сервис поддержит и английский алфавит, и русский, то часть букв можно сделать русскими, а часть - английскими. Напри­ мер, из предыдущего пароля получится «Bng8dnl2n,cB».

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

Взаключение хотелось бы сказать о том, как правильно исполь­ зовать пароли:

1.Лучше всего, если все пароли будут «храниться» в голове. Но если вы все же записали их, то листок следует хранить в надежном

месте, а не за клавиатурой.

2. Для разных сервисов и сайтов следует использовать разные пароли. Если вам сложно запоминать множество паролей, то можно составить для себя «иерархию» паролей. Например, для почты необ­ ходимо придумать самый сложный пароль. Для восстановления па­

роля любого сервиса используется электронная почта, и если зло­ умышленник узнает пароль от почты, то он может восстановить и все остальные пароли. Для менее важных сервисов можно придумать более легкие пароли, чтобы проще было запомнить. То, какой пароль используется для сервиса, можно указать в самом пароле. Например, для skype можно использовать «Bng8dHl2n,cB», для VK «VK Bng8dHl2n,cB» и т.д. [2]. Лучше всего, если эти указатели будут на­ ходиться не в одном месте пароля, а в разных для каждого сервиса.

3.Регулярно меняйте свои пароли. Пароли для наиболее важных сервисов можно менять чаще. Если вы используете описанную выше «иерархию» паролей, то пароли во время смены можно просто сдви­ гать ниже по «иерархической лестнице». Таким образом, вы приду­ мываете новый пароль лишь для самого важного сервиса, это облег­ чает работу, так как вам не нужно придумывать и запоминать сразу несколько новых паролей.

4.Не позволяйте сервисам и приложениям сохранять и запоми­ нать ваши пароли. Особенно, если вы работаете не на личном компь­ ютере, а на общем, например, в библиотеке или интернет-кафе [3].

5.Периодически удаляйте историю и пароли в вашем браузере.

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

6.Никогда и никому не сообщайте свои пароли. Пароль всегда должен быть личным.

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

Библиографический список

1.Насколько безопасен мой пароль [Электронный ресурс]. - URL: https://howsecureismypassword.net (дата обращения: 20.04.2015).

2.Библиотека интернет-индустрии [Электронный ресурс]. - URL: http://www.i2r.ru/static/278/out_11178.shtml (дата обращения: 22.04.2015).

3.Центр безопасности Microsoft [Электронный ресурс]. - URL: http://www.microsoft.com/ru-ru/security/online-privacy/passwords- create.aspx (дата обращения: 22.04.2015).

АНАЛИЗ КРИПТОПРОЦЕССОРА COPACOBANA

Студенты гр. КОБ-11-1 Р.А. Андреев, П.А. Феофилова

Научный руководитель - заслуженный изобретатель РФ, д-р техн. наук, профессор С.Ф. Тюрин

Пермский национальный исследовательский политехнический университет

Все современные применяющиеся на практике шифры, будь то симметричные или ассиметричные, используют параметры безопас­ ности, которые защищают их от атак с компьютеров. Многие шифры потенциально уязвимы для атак спецтехники, которая имеет соотно­ шение «цена-качество» на несколько порядков лучше, чем в совре­ менных компьютерах. В данной статье описываются конструкция

иуспешная реализация прототипа криптоаналитического устройства специального назначения на базе недорогих ППВМ (программируе­ мая пользователем вентильная матрица).

Copacobana - массово-параллельное устройство, основанное на ППВМ. Оно подходит для вычислительных задач, которые являются параллелизуемыми и имеют небольшой требуемый объем обмена информацией, и может использоваться, например, для атаки на крип­ тосистемы на основе эллиптических кривых. Даже, несмотря на то, что нарушение алгоритмов RSA (1024 бит или больше) или ЕСС (160 бит или больше) находится вне досягаемости Copacobana, оно предусматривает возможность для надежной оценки безопасности RSA и ЕСС. Еще более актуальным является тот факт, что ограни­ ченные ресурсы приложений, в частности мобильных устройств, ино­ гда определяются короткими параметрами, такими как 112-битные

и128-битные системы ЕСС, рекомендованные стандартом SECG, которые становятся уязвимыми в устройстве. Кроме того, по закону Мура можно предсказать надежность RSA и ЕСС в ближайшие годы. Текущие реализации базового контроля доступа применяют симмет­ ричную криптографию (Triple DES) и генерируют соответствующие ключи шифрования и аутентификации из паспортных данных.

Когда DES был впервые предложен как криптографический стандарт, его хотели применять для реализации на аппаратном обо­ рудовании. DES может работать на ПЛИС в 100 раз быстрее при зна­ чительно меньших затратах, чем при его реализации на обычном компьютере. Это позволяет подсистеме поиска ключей, основанной

на аппаратных средствах, быть намного быстрее и эффективнее в сравнении с программной реализацией. Главная цель подсистемы поиска ключей - проверить максимальное число ключей в самый ко­ роткий срок и найти верный ключ, который смог бы зашифровать текст. Очевидно, что такой процесс поиска ключа может быть вы­ полнен методом распараллеливания путем разделения ключевого пространства. Это не требует практически никакой связи между про­ цессами, так как процессоры DES могут искать нужный ключ в пре­ делах выделенного ими ключевого пространства. В Лувенском като­ лическом университете была создана конвейерная архитектура такого процессора DES. Эта разработка позволяет процессору проверить один ключ за такт, и конвейерная архитектура корректирует данный процесс так, чтобы критический путь был минимальным, что позво­ ляет процессору работать быстрее. Для Copacabana можно встроить четыре таких процессора DES в ППВМ.

Оптимизированный по стоимости параллельный дешифровщик (Copacobana) состоит из множества независимых недорогих ППВМ, подключенных к центральному компьютеру через стандартный ин­ терфейс, например, USB или Ethernet. Кроме того, такой стандартный интерфейс позволяет легко расширить центральный компьютер более чем одним устройством Copacobana. Запуск ППВМ, контроль и нако­ пление результатов производятся центральным компьютером. По­ скольку криптоаналитические приложения требуют большого коли­ чества вычислительной мощности, специальная платформа объеди­ няет вплоть до 120 ППВМ (Spartan3-1000). Построение системы тако­ го размера с коммерчески доступными платами ППВМ, конечно, возможно, но очень затратно. Поэтому разработчики Copacobana ре­ шили спроектировать и создать собственное оборудование. Реализа­ ция оптимизированного по стоимости проекта стала возможной толь­ ко путем строго ограничения всех функциональных возможностей до непосредственно необходимых для взлома кодов, чтобы сделать не­ сколько вариантов на основе легкодоступных компонентов и интер­ фейсов. Констукция Copacobana изображена на рис. 1 и состоит:

-из ППВМ-модулей для фактической реализации представлен­ ных аппаратных архитектур;

-системной платы, соединяющей все модули ППВМ с общей шиной данных, шиной адреса и питания;

-платы контроллера, подключающей шину данных и адресную шину к хост-компьютеру через USB.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]