Использование средств безопасности языков программирования для обработки непредвиденных данных
Использование средств безопасности языков программирования для обработки непредвиденных данных
Противостояние непредусмотренным данным или данным неверного формата не является новым видом борьбы с угрозами безопасности. Во многие современные языки программирования и приложения включены средства безопасности, исключающие или снижающие печальные последствия поврежденных данных. Большинство из них используют концепцию «песочницы» (sandbox concept), которая предусматривает карантин для поврежденных данных до тех пор, пока они не будут проанализированы и исправлены. Рассмотрим отдельные средства безопасности некоторых популярных языков программирования.
Язык Perl
Интерпретатор Perl запускается в режиме проверки «дыр» в защите при помощи задания в командной строке команды – T. В этом режиме Perl предупреждает программиста о непосредственной передаче данных пользователя одной из следующих команд: bind, chdir, chmod, chown, chroot, connect, eval, exec, fcntl, glob, ioctl, kill, link, mkdir, require, rmdir, setpgrp, setpriority, socket, socketpair, symlink, syscall, system, truncate, umask, unlink, а также о команде – s и обратных галочек. (Обратные галочки – жаргонное обобщенное название символов «левые кавычки», «левая одиночная кавычка», «открывающиеся кавычки», «обратный апостроф»).
При попытке передать поврежденные данные системной функции Perl откажется выполнить сценарий и выдаст сообщение: Insecure dependency in system while running with – T switch at (script) line xx (Небезопасная зависимость в системе при работе с командой —T в сценарии yyyy в строчке xx).
Для проверки введенных пользователем данных следует использовать оператор сравнения (m///) регулярного выражения regex языка Perl для проверки соответствия данных заданным условиям. В следующем примере показано, как выполнить проверку того, что символы входных данных представлены в нижнем регистре:
#!/usr/bin/perl -T
# must setup a secure environment (system/OS dependant)
$ENV{PATH}=“/bin”;
delete $ENV{ENV};
delete $ENV{BASH_ENV};
# this is tainted
$echo=$ARGV[0];
# check to see if it’s only lower-case letters
if ($echo =~/^([a-z]+)$/) {
# we resave the command...
$echo=$1;
# ...and use it in a system function
system(“/bin/echo $echo”);
} else {
print “Sorry, you gave unexpected data ”;
}Самая важная часть этого фрагмента кода – проверка входных данных:
If ($echo =~ /^([a-z]+)$/) { $echo = $1;
При разборе входных данных проверяется, чтобы вся строка входных данных (символы ^ и $ подчеркивают это) состояли только из букв нижнего регистра ([a-z]) и строка состояла хотя бы из одной буквы (символ + после [a-z]). При восстановлении данных следует быть осторожными связи с тем, что в действительности на данные накладываются дополнительные ограничения. Рассмотрим следующий фрагмент кода восстановления данных:
if ($data =~ /^(.*)$/) { $data = $1;
В нем содержится ошибка: проверка на совпадение по шаблону при помощи регулярного выражения regex ничего не даст, поскольку на символы входных данных не наложено никаких ограничений. Более того, этот фрагмент кода позволяет избежать действительной проверки на безопасность введенных данных.
Система программирования PHP
Система программирования PHP имеет опцию конфигурации «safe_mode» для установки режима безопасной работы, которая ограничивает использование встроенных в язык функций. Этот режим не гарантирует правильных входных данных. Безопасный режим работы подстраховывает работу приложения, заставляя злоумышленника искать обходные пути преодоления контроля входных данных.
В безопасном режиме работы на функции работы с файлами include, readfile, fopen, file, link, unlink, symlink, rename, rmdir, chmod, chown и chgrp наложено ограничение. C их помощью можно получить доступ к файлам, если идентификатор их владельца совпадает с UID системы PHP (который обычно совпадает с идентификатором Web-сервера), или к файлам в директории, которой владеет пользователь с UID системы PHP.
Более того, язык PHP накладывает ограничения на использование функций exec, system, passthru и popen. С их помощью могут выполняться только приложения из директории PHP_SAFE_MODE_EXEC_DIR (директория определяется в файле php.h при компиляции сценария на языке PHP). А при помощи функции Mysql_Connect может быть установлено соединение с базой данных при условии совпадения идентификатора владельца базы данных с UID Web-сервера или UID выполняющегося сценария.
И наконец, для противодействия уловкам атак имитации соединения сценарии на языке PHP изменяют способ взаимодействия с механизмом аутентификации протокола HTTP (что является большей проблемой для систем с большим числом виртуальных хостовых Web-сайтов).
Язык разметки ColdFusion
Язык разметки ColdFusion реализует концепцию «песочницы» (sandbox concept), настройки которой из меню Advanced Security позволяют ограничить возможности встроенных в язык функций. Накладываемые на встроенные функции ограничения вынуждают злоумышленника искать обходные пути преодоления проверок, выполняемых приложением. В языке ColdFusion предусмотрены различные способы задания накладываемых на тэги CFML ограничений, общесистемных и индивидуальных политик пользователя. Примеры установки политик и настроек концепции «песочницы» могут быть найдены на следующих ресурсах:
www.allaire.com/Handlers/index.cfm?ID=7745&Method=Full
www.allaire.com/Handlers/index.cfm?ID=12385&Method=Full
Технология ASP
Следует начать с того, что, к счастью, в технологии ASP(VBScript и JScript) предусмотрено немного системозависимых функций, а по умолчанию доступны все функции файловой системы.
В настройках ASP присутствует переключатель запрета использования в функциях файловой системы ссылки на родительскую директорию с помощью символа «../». Этот параметр ограничивает возможности злоумышленника получить доступ к файлу, расположенному за пределами корневой Web-директории. Для изменения параметра следует открыть конфигурационную консоль информационного сервера Интернет (Microsoft Management Console), выбрать нужный Web-сайт, перейти в меню Properties I Home Directory I Configuration I Application Options и отключить опцию Enable Parent Paths. Пример подобных манипуляций приведен на рис. 7.3.
Если в документах ASP не требуется поддержка файловой системы, то от нее можно отказаться, отменив регистрацию объекта File System Object при помощи консольной команды:
regsvr32 scrrun.dll /u
Система управления базами данных MySQL
Система управления базами данных MySQL позволяет читать и писать данные в базу данных при помощи SQL-запросов со следующим синтаксисом:SELECT * INTO FILE “/file/to/save.db” FROM table
Обращение к базе данных можно ограничить, задавая разрешения доступа к файлам пользователями во встроенной таблице привилегий MySQL.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Общий обзор средств безопасности: дескриптор безопасности
Общий обзор средств безопасности: дескриптор безопасности Анализ дескриптора безопасности предоставляет хорошую возможность для общего ознакомления с наиболее важными элементами системы безопасности Windows. В этом разделе речь будет идти о самых различных элементах
Использование клиентских средств NTP
Использование клиентских средств NTP Ранее уже шла речь о том, что при формировании сети можно расположить на одном из компьютеров сервер NTP, который получал бы информацию о времени от внешнего сервера, и настроить остальные компьютеры так, чтобы они обращались за этой
Глава 25 Настройка средств обработки пакетов с помощью iptables
Глава 25 Настройка средств обработки пакетов с помощью iptables Средства ядра Linux, реализующие стек протоколов TCP/IP, получают данные от приложения, оформляют их в виде информационных пакетов и передают по сети. Из принимаемых пакетов извлекается содержащаяся в них информация
14.4. Сравнение языков программирования
14.4. Сравнение языков программирования Сочетание языков представляет собой стиль программирования, который требует скорее более интенсивного использования знаний, чем программного кода. Для успешной работы разработчику необходимо владеть достаточным количеством
14.4. Сравнение языков программирования
14.4. Сравнение языков программирования Сочетание языков представляет собой стиль программирования, который требует скорее более интенсивного использования знаний, чем программного кода. Для успешной работы разработчику необходимо владеть достаточным количеством
Сравнительная характеристика языков программирования в Access
Сравнительная характеристика языков программирования в Access Access пользователь может работать с несколькими языками программирования:• SQL (Structured Query Language) – структурированным языком запросов. Это формальный стандартизованный язык высокого уровня, содержащий средства
Использование макросов для обработки событий
Использование макросов для обработки событий Наиболее часто макросы применяются для обработки событий. При этом макрос может функционировать и как самостоятельная программа, и в составе процедуры VBA (Visual Basic for Applications). Первый вариант мы рассмотрим в этом разделе, а
Инициализация: подходы языков программирования
Инициализация: подходы языков программирования Проблема, решаемая в этой лекции, - это общая проблема языков программирования: как работать с глобальными константами и разделяемыми объектами, в частности, как выполнять их инициализацию в библиотеках компонентов?Для
КРАТКИЙ СПИСОК АППАРАТНЫХ И ПРОГРАММНЫХ СРЕДСТВ БЕЗОПАСНОСТИ
КРАТКИЙ СПИСОК АППАРАТНЫХ И ПРОГРАММНЫХ СРЕДСТВ БЕЗОПАСНОСТИ СОЗДАНИЕ И ХРАНЕНИЕ ПАРОЛЕЙНазвание программы: Password BossОписание: Многофункциональный хранитель паролей с уникальными возможностями. Предназначен для безопасного хранения паролей и любой другой информации.
Опасность непредвиденных входных данных
Опасность непредвиденных входных данных Для взаимодействия с пользователем приложение должно обрабатывать входные данные. Входные данные могут быть представлены в простой форме, например щелчком мышки в заданной позиции монитора, или одним введенным символом, или в
Инструментарий обработки непредвиденных данных
Инструментарий обработки непредвиденных данных Многие инструментальные средства так или иначе имеют отношение к обработке непредусмотренных данных. Некоторые из них полезны программистам для отладки их кода, другие – злоумышленникам или консультантам при
Глава 17 Обзор автоматизированных средств оценки безопасности
Глава 17 Обзор автоматизированных средств оценки безопасности В этой главе обсуждаются следующие темы: • Краткие сведения об автоматизированных средствах оценки безопасности • Применение автоматизированных инструментальных средств для тестирования на проникновение
Несколько недель спустя; Политика установки средств безопасности
Несколько недель спустя; Политика установки средств безопасности Дэйв закончил свою часть работы первым. Время отклика Drug10 уже его не удовлетворяло. Поэтому перед подключением сервера к Интернету Дэйв установил в него более мощную систему и загрузил программное
День 1-й: Осмотр средств обеспечения безопасности
День 1-й: Осмотр средств обеспечения безопасности Все началось довольно обычно. Меня наняли как независимого аудитора для тестирования безопасности некоторых систем S&B Systems. Одному из менеджеров технической поддержки S&B, Шелли Бергер, потребовался аудит клиентской