Каковы риски безопасности при использовании cmdexec?
Мы находимся в процессе перехода с SQL 2000 на SQL 2005. У нас есть сотни пакетов DTS, которые команда разработчиков неохотно пересматривает, используя SSIS.
При переносе этих пакетов в SSIS я столкнулся с проблемой - многие из этих пакетов читаются из файлов Excel.
Учитывая, что мой производственный Box является 64-битным, я вынужден использовать подсистему CmdExec для вызова 32-битной среды выполнения для выполнения этих пакетов.
Мой вопрос здесь: Каковы риски безопасности, связанные с использованием подсистемы CmdExec для планирования этих пакетов служб SSIS в качестве заданий агента SQL?
Спасибо Радж
3 ответа
Независимо от того, какая учетная запись, выполняющая задание, потенциально будет иметь доступ к командам для запуска из командной строки, поэтому вам нужно подумать о том, как она будет выполняться и какие разрешения будет иметь учетная запись.
Например, если пользователь может создать задание, которое будет запускаться в контексте вашего sqlagent, а ваш агент sql был чрезмерно привилегированным (права на изменение безопасности), он может предоставить себе повышенные привилегии или нанести вред вашей машине.
В SQL 2008 появился переключатель для DTExec, который позволяет запускать пакеты в 32-разрядном режиме с помощью встроенной задачи агента SQL для служб SSIS. На вкладке выполнения свойств шага задания есть флажок для 32-битного, который переводится в ключ "/X86" при просмотре командной строки.
Если вы застряли с использованием SQL 2005, то опция CMDEXEC - единственная, о которой я знаю.
xp_cmdshell
представляет собой наибольшую угрозу безопасности в SQL Server, поскольку позволяет скомпрометированному блоку SQL Server повысить уровень атаки на саму операционную систему хоста и оттуда на всю сеть.
Типичный вектор атаки - HTTP-форма веб-сайта -> SQL-инъекция -> xp_cmdshell
-> захватить хостинг SQL -> захватить домен. Если xp_cmdshell
выключен, то злоумышленник должен найти другие способы повысить свою атаку с SQL на хост.
Существуют и другие сценарии, например, использование внутренних пользователей для повышения привилегий или использование командной оболочки для других целей, например. украсть базу данных. Все основаны на том, что xp_cmdshell
позволяет выполнять произвольные команды и на хосте, а в некоторых случаях выполняемые команды также наследуют привилегии учетной записи службы SQL Server.
Существуют другие команды и процедуры расширения, которые могут использоваться злоумышленником, если xp_cmdshell
заблокирован, но они гораздо менее известны. С использованием xp_cmdshell
Вектор есть в каждой шпаргалке по SQL-инъекциям и обсуждении на форуме, так что это знают все и их бабушка.