Что я рекомендую сделать для повышения безопасности Cache' при выставлении csp приложений в интернет.Закрыть файрволом порты 1972/1973 (cache direct), 4001 (license manager), 23 (ctelnetd), порт 7200 (SMWrap) и любые другие, используемые сервером cache', от нежелательного доступа извне.
Удалить все базы данных и области кроме используемых Вашими приложениями и штатных, требующихся для нормальной работы сервера:
%SYS %CACHELIB CACHETEMP USERВсе остальные удалите.
Очистить базу USER. Базу оставьте, но содержание тщательным образом прочистите. Проверьте что нет глобалов, рутин и классов. Для чего нужна база USER в пустом виде - в некоторых случаях процессы автоматически начинают работу с этой области, потом переключаясь в другую. Если этой базы не будет, то некоторые программы не смогут запуститься. Какие именно программы - не скажу, чтобы не ронять имидж производителей.
ZN "USER" D DeleteAll^%apiOBJ() rm /usr/cachesys/csp/user/*
Удалить ВСЕ неиспользуемые Вами csp приложения. Все - значит все, никаких исключений. Проверяйте это правило при создании новой области - каше автоматом предлагает создавать для области csp приложение.
Тщательно изучите документацию на используемую Вашими csp приложениями версию cache в части обработки ошибок в csp приложениях и проработайте тему "страница обработки ошибок". Как ее сделать, прописать в приложении и что в ней делать. Если Вы решили оставить %CSP.Error, то пропатчте её, убрав вызов
Do ##class(%CSP.Utils).DisplayAllObjects()И вообще уберите из нее все что не нужно Вашему приложению в боевой эксплуатации. На девелоперской инсталляции хоть соловьем свистите, а с боевой убирайте.
В области %CACHELIB удалить все классы производные от
ZN "%CACHELIB" S derivedclasses="" D GetAllDerivedClasses^%occLibrary("%CSP.Page",.derivedclasses) S c="" F s c=$O(derivedclasses(c)) q:c="" d . I c'="%CSP.Broker",c'="%CSP.StreamServer" d . . W c,! D Delete^%apiOBJ(c)Если не выполняется
ZN "%CACHELIB"то выполните
d $zu(5,"%CACHELIB")Здесь оставляется класс
В случае если в Вашей версии каше возникают разночтения с приведенным кодом то удалите классы вручную. В Cache Studio переключитесь в область
Тут может быть проблема с тем, что в Вашей версии каше могут оказаться процентные классы - наследники
В каше в новых версиях все чаще используются csp страницы для утилит управления. Поэтому при удалении этих страниц часть управления системой может оказаться недоступной. Изучайте возможность управления системой из терминала. На боевом сервере выставленном в интернет этих страниц, как и соответствующих csp приложений, не должно быть.
Запретить в sql использование extrinsic функций (в конфигураторе). По умолчанию в Cache 5.0.15 оно запрещено:
ExtrinsicFunctions=0Это тоже относится к безопасности csp, поскольку технически позволяет в зависимости от построения приложения использовать уязвимость класса sql injection.
Тщательно ознакомьтесь с документацией на используемую Вами версию каше в части управления шлюзом csp через браузер. Удалите все, что сможете, что относится к такому управлению, например
Теперь об уязвимостях класса code injection в Ваших csp приложениях.
В своих csp приложениях особое внимание уделяйте использованию параметров страницы. Проверьте все места приложений, которые используют значения параметров в различных формах косвенности, когда в данные могут быть переданы неожиданные для вас фрагменты кода, символы.
Ищите прочтением кода все места которые используют косвенность и ищите, есть ли способ или такое течение программы, чтобы в аргумент косвенности той или иной формы могли попасть значения параметров страницы. Если да - то либо пересмотрите построение Вашего приложения либо тщательно проверяйте шаблоном (pattern) что принятые вашей страницей значения параметров переданы именно по соглашениям страниц вашего приложения, находятся в допустимом виде.
Важно - ни в коем случае не делайте предположения "злоумышленник этого не сможет", например "мы ожидаем значение индекса, к имени обращаемся через
Тщательно проверяйте использование вашим приложением файлов операционной системы и системных вызовов (функции
Еще раз, и это очень важно - не делайте никаких предположений о том чего не сможет злоумышленник. Только о том, как работает Ваше csp приложение и как оно использует параметры страниц. Тем более никаких "я гарантирую что в параметрах будет именно это". Как раз параметры Вам пришлет злоумышленник. Или программа, им написанная. Как и заголовок http запроса.
Периодически проверяйте инсталляцию Cache на предмет несоответствия ее вышеприведенным требованиям. Ситуация может измениться при совсем небольшом обновлении приложения. При смене версии каше выполните все вышеприведенные шаги снова. Изучите свои особенности и сделайте так чтобы Вы это не забыли сделать.
Этот перечень не обязан быть полным. Время идет и в следующих версиях каше могут появиться новые дополнения и улучшения.
Евгений Каратаев
Отказ от ответственности.
Данный материал ориентирован исключительно на защиту csp приложений от несанкционированного доступа к серверу и не содержит демонстрационных примеров как использовать имеющиеся уязвимости. Иных рекомендаций и консультаций не даю. Несанкционированный доступ наказуем в соответствии с действующим законодательством.
Комментариев нет:
Отправить комментарий