АНАЛИЗ ИСХОДНОГО КОДА НА ПРЕДМЕТ НАЛИЧИЯ УЯЗВИМОСТЕЙ CHECKMARX SUITE® Краткая справочная информация для специалистов по информационной безопасности и информационным технологиям, системных интеграторов, бизнес-партнеров и заказчиков В данном документе в краткой табличной форме приведена основная справочная информация по продукту «Checkmarx Suite®» , разработанному компанией «Checkmarx» Полное или частичное копирование, использование, а также публичные ссылки на данный документ недопустимы без письменного разрешения на это компании “Интернейшнл АйТи Дистрибьюшн” ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ Термин/ Определение API CLI IDE POC Описание Интерфейс программирования приложений (англ. Application Programming Interface) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений. Интерфейс командной строки (англ. Command Line Interface) - разновидность текстового интерфейса. Интегрированная среда разработки (англ. Integrated Development Environment) - система программных средств, используемая программистами для разработки программного обеспечения. Подтверждение концепции (англ. Proof Of Concept) – развертывание ПО для демонстрации, заявленных в спецификации, возможностей программного обеспечения. КРАТКАЯ ИНФОРМАЦИЯ О ПРОДУКТЕ Параметр Checkmarx Suite® Основные потребители Уникальные возможности Описание Checkmarx Suite® представляет собой современное решение для статического анализа исходного кода на предмет наличия уязвимостей, позволяющее выявлять, контролировать и устранять проблемы безопасности на уровне разработки программного обеспечения. CxSuite распознает множество уязвимостей из разных категорий, поддерживает максимальное количество операционных систем, языков программирования и сред разработки. Возможность встраивания в цикл разработки позволяет решать проблемы с безопасностью по мере написания кода, и тем самым существенно экономить время и ресурсы. Государственные и коммерческие предприятия, заинтересованные в аудите, используемого заказного программного обеспечения; Финансовые организации и банки, использующие ПО собственной разработки; Организации, занимающиеся разработкой или сертификацией ПО; Сканирование исходного кода без компиляции; Наличие встроенного интуитивно понятного языка запросов, позволяющего адаптировать процесс анализа кода к конкретной задаче; Выявление «критичных точек» в коде, изменения в которых, позволяют устранить ряд связанных уязвимостей; Возможность интеграции в применяемую в организации, систему разработки ПО; Поддержка большинства современных языков программирования и систем разработки ПО. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ СИСТЕМЫ Параметр Поддержка наиболее распространенных языков программирования Описание Java Microsoft C#.net PHP C/C++ Microsoft Visual Basic VB.NET Java Script Apex Параметр Высокая точность анализа Запатентованная технология Virtual Compiler Опция инкрементального сканирования Визуализация атак Собственный язык запросов Широкие возможности поиска уязвимостей Типовые запросы на поиск уязвимостей Обеспечение соответствия требованиям бизнес логики Обеспечение соответствия лучшим практикам программирования Поддерживаемые стандарты Реализация ролевой модели доступа Создание отчетов и экспорт результатов Многоуровневая архитектура Описание Ruby Perl ASP.net Python PL/SQL HTML5 Windows Mobile Android Objective-C Если выявленная проблема не является таковой, соответствующий участок кода можно отметить, и тогда Checkmarx при последующих проверках не будет выделять подобные участки как уязвимые. Сканирование кода без компиляции; Сканировать можно несвязные файлы, отдельные модули или какие-либо иные объекты приложения, в привычной среде программирования. При проведении повторного сканирования отсутствует необходимость пересканирования неизмененного фрагмента кода. Автоматически будет пересканирована только измененная часть кода, Графическое отображение векторов потенциальных атак. Интуитивно понятный язык построения запросов позволяет максимально адаптировать анализ кода к особенностям анализируемого приложения. Наличие "из коробки" нескольких сотен готовых запросов на поиск уязвимостей; Графическое представление выявленных уязвимостей; SQL-инъекции Межсайтовый скриптинг Инъекции в код Переполнение буфера Подмена значений параметров Подделка межсайтовых запросов Разделение HTTP-запросов Подмена журналов DoS-атаки Фиксация сессии Заражение сессии Необработанные исключения Неосвобожденные ресурсы Ввод данных без проверки Перенаправление на подменный URL "Зашитое" в код фиксированное значение пароля Загрузка потенциально небезопасных файлов И др. Возможность поиска не соответствующего заявленным возможностям, функционала, в коде приложения Наличие "из коробки" типовых запросов и шаблонов соответствия отраслевым стандартам (PCI, HIPAA, SOX, и др.). OWASP Top 10 2013, OWASP Mobile Top 10, SANS 25, PCI DSS, HIPAA, Mitre CWE, FISMA, BSIMM, MISRA Права доступа пользователей, определенные в соответствии с ролевой моделью CxSuite, обеспечивают доступность проектов и связанных с ними результатов сканирования. Полномочия по управлению правами доступа пользователей также определены в ролевой модели. Наличие необходимых средств- для создания отчётов по задачам и проектам. Экспорт в форматы xml, csv и др. Интеграция с системами обработки заявок. Сервер управления, способный обеспечить сканирование проекта параллель- Параметр Возможность масштабирования и встраивания в цикл разработки Описание но на необходимом количестве “движков”. Возможность использования «тонких» и «толстых» клиентов. Возможность работы с проектами, практически любого объема Возможность интеграции в применяемую в организации, систему разработки ПО СРЕДА ФУНКЦИОНИРОВАНИЯ Назначение Централизованная архитектура (POC) Количество строк кода 150K 300K ОС Веб сервер Windows XP, 7 Windows Server 2003, 2008, 2012 (Ultidev может быть установлен вместе с CxSuite) Другое ПО 200K Централизованная архитектура (Промышленная) 600K 1.2M 4M CxEngine(Промышленная) Несколько CxEngine серверов (для параллельного сканирования), каждый сервер должен соответствовать указанным требованиям. CxManager (Промышленная) Windows Installer 3.1 или выше NET framework 3.5 SP1 или выше 2M 200K 600K Windows Server 2003, 2008, 2012 IIS 6/7/8 1.2M 2M 4.5M IIS 6/7/8 Database (Промышленная) SQL Сервер (Express не рекомендуется) 2005/2008/2012 Для CxSuite веб клиента, рекомендуется использовать дисплей с разрешением не менее 1280 x 1024. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ Назначение Централизованная архитектура (POC) Централизованная архитектура (Промышленная) CxEngine(Промышленная) Несколько CxEngine серверов (для параллельного сканирования), каждый сервер должен соответствовать указанным требованиям. Количество строк кода Оперативная память 150K 300K 200K 600K 1.2M 2M 4M 200K 1.5 GB 3 GB 6 GB 10 GB 16 GB 24 GB 44 GB 2 GB 600K 6 GB 1.2M 12 GB 2M 20 GB 4M 45 GB Количество ядер процессора Частота процессора Объем дискового пространства 2 2 GHz 5 GB Минимум: 3 Рекомендовано: 6 Минимум: 2,3 GHz Рекомендовано: 2.8 GHz Минимум: 2 Рекомендовано: 4 Минимум: 2,3 GHz Рекомендовано: 2.8 GHz 250 GB 50 GB Назначение CxManager (Промышленная) Database (Промышленная) Количество строк кода Оперативная память Минимум: 2 GB Рекомендовано: 4 GB Количество ядер процессора Частота процессора 2 Минимум: 2 GHz Рекомендовано: 2.5 GHz Объем дискового пространства 250 GB 50 GB АРХИТЕКТУРА CHECKMARX SUITE® Компоненты CxEngine Database CxManager SxSuite Web Interface IDE Plugins CxAudit Описание Компоненты сервера Осуществляет сканирование программного кода Осуществляет хранение результатов сканирования и системные настройки. Для рабочего применения рекомендуется использовать MS SQL Server. Для POC может быть установлена VistaDB, поставляемая вместе с CxSuite. Осуществляет все системные функции и управление системой, объединяет все системные компоненты. Для работы рекомендуется использовать IIS Web Server. Для POC может быть установлен UltiDev, поставляемый вместе с CxSuite. Клиентские компоненты Веб интерфейс для управления проектами сканирования и анализа кода. IDE плагин позволяющий интегрировать сканирование и результаты сканирования кода непосредственно в среду разработки ПО. Клиентское Windows-приложение, которое взаимодействует с CxSuite сервером через HTTP. CxAudit используется для модификации стандартных запросов CxSuite для нестандартного кода. Это помогает в устранении ложных срабатываний и гарантирует достоверность всех обнаруженных уязвимостей. CxAudit позволяет выполнять сканирование проекта и модифицировать запросы анализа кода локально, и затем принимать решение о синхронизации результатов сканирования и/или модифицированных запросов с сервером. CxAudit проекты могут синхронизироваться с сервером CxSuite вместе с результатами последне- CxConsole API Scripts го сканирования, или сохраняться в локальный или сетевой папке, чтобы создать новый проект. CxAudit включает в себя интерфейс для просмотра и редактирования результатов сканирования, похожий на веб-интерфейс в CxSuite. Интерфейс командной строки для запуска сканирования кода в CxSuite. Может использоваться для встраивания вызовов в программное обеспечение разработки ПО. CxSuite API предоставляет разработчикам возможность создавать клиентские скрипты для работы с CxSuite проектами. CxSuite поддерживает централизованную архитектуру, где все серверные компоненты установлены на одном хосте, или распределенную архитектуру, где каждый или все серверные компоненты установлены на выделенных узлах. Поскольку один CxEngine сервер может выполнять сканирование только одного проекта, для повышения производительности можно использовать несколько CxEngine серверов для параллельного сканирования отдельных частей одного проекта, либо нескольких проектов одновременно. Каждый CxEngine сервер может обрабатывать более 100К строк кода в час. Коммуникации между клиентами и CxManager, и связь между CxManager и CxEngine осуществляется через HTTP или HTTPS. КАК ЭТО РАБОТАЕТ Параметр Технология Virtual Compiler Поиск уязвимостей Поиск несоответствия функциональным возможностям Анализ на соответствие стандартам Создание отчетов и экспорт результатов Реализация ролевой модели доступа Описание Сканирование кода осуществляется путем загрузки в систему любого фрагмента кода приложения, написанного на любом из поддерживаемых языков программирования без необходимости компиляции. Анализ кода производится с применением множества готовых шаблонов запросов для поиска уязвимостей. Шаблоны разработаны для каждого поддерживаемого языка программирования. Любой запрос может быть модифицирован пользователем системы под свои конкретные задачи. Результат анализа отображает уязвимости с соответствующими векторами атак, сопровождая данные графами. Графы позволяют найти те фрагменты кода, так называемые, критичные точки, изменение которых помогут устранить сразу все подобные уязвимости, находящиеся ниже в иерархии. Доступ к графам возможет прямо из среды разработки. Графы позволяют: Выявлять связи между однотипными уязвимостями Оценивать волновой эффект уязвимости во всём коде и определять оптимальное место для её устранения Выполнять операции с уязвимостями, основываясь на их иерархии Выделять наиболее приоритетные проблемы для их более эффективного решения Выбирать лучший из возможных методов решения проблемы На основе готовых шаблонов или полностью самостоятельно, пользователь системы может сформировать необходимый набор запросов, позволяющий выявить в коде сканируемого приложения программные модули, не соответствующие заявленной функциональности. Применение готовых шаблонов, их модификаций и разработанных пользователями CxSuite, собственных запросов, позволяет оценить соответствие сканируемого приложения отраслевым стандартам и лучшим практикам разработки ПО. Отчеты, содержащие всю необходимую информацию о результатах сканировании, можно создавать в следующих форматах: PDF RTF CSV XML Пользователям CxSuite может быть присвоена одна из следующих ролей: Scanners: может создавать проекты для своей команды, сканировать и просматривать результаты всех существующих проектов своей команды. Reviewers: может просматривать результаты сканирования проектов, со- Возможность масштабирования и встраивания в цикл разработки зданных в своей команде, но не может создавать или сканировать существующие проекты. Company Manager: может создавать и управлять проектами для любой из команд компании, а так же создавать и управлять командами и пользователями компании. Service Provider (SP) Manager: может создавать и управлять проектами любой из команд SP компании, а так же создавать и управлять командами и пользователями SP компании. Server Manager: администратор пользователей. Имеет полный набор привилегий для всей системы, включая все вышеперечисленные. Так же обладает правами на конфигурирование системы. Специальные IDE плагины позволяют интегрировать CxSuite в следующие системы: Eclipse Visual Studio IntelliJ Jenkins ПРИЛОЖЕНИЕ 1 ОПЕРАЦИОННЫЕ СИСТЕМЫ И СРЕДСТВА РАЗРАБОТКИ, ПРОТЕСТИРОВАННЫЕ НА СОВМЕСТИМОСТЬ С CXSUITE 7.1.6 Windows Browsers Eclipse (for plugin) Visual Studio (for plugin) IntelliJ (for plugin) Jenkins (for plugin) Как 32-bit так и 64-bit, версии могут быть использованы: Internet Explorer 7-11 Safari 5 Chrome 37 Firefox 33 3.5.2 – 4.3.1 2005 2008 2010 2012 2013 11.1.5 12.1.3 7.1.4.0-12 Enterprise XP, 7 Server 2003, 2008, 2012 ПОДДЕРЖИВАЕМЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Следующие языки программирования поддерживаются в версии CxSuite 7.1.6: Среда программирования Первичные языки программирования Вторичные языки программирования Frameworks Расширения файлов Java Java J2SE J2EE JSP JavaScript VBScript PL\SQL HTML 5 Struts Spring MVC 2.5 iBatis 2.3* GWT Hibernate OWASP ESAPI JSTL FMT Taglib ATG DSP Taglib Java Server Faces (JSF) 2.x .javasln .project .java .jsp .jspf .tag .tld .NET C# VB.NET ASP.NET JavaScript VBScript PL\SQL HTML 5 Enterprise Libraries Telerik ComponentArt Infragistics FarPoint iBatis 2.3* Hibernate.Net [*] Entity framework up to 4.3.1 .sln .csproj .cs .cshtml .xaml .vb ASP ASP JavaScript [**] VBScript PL\SQL HTML 5 ASP.Net MVC framework .asp VB VB6 .bas .vbp Среда программирования Первичные языки программирования Вторичные языки программирования Frameworks Расширения файлов .frm .cls .dsr .ctl .vb C/C++ C/C++ MISRA .cpp .c++ .cxx .hpp .hh .h++ .hxx .c .cc .h PHP PHP Zend 1.1 Kohana 3.0 CakePHP Symfony Smarty OWASP ESAPI .php .php3 .php4 .php5 .phtm .phtml .tpl .ctp .twig SalesForce Apex Ruby Ruby Ruby on Rails .rb .rhtml .rxml .rjs .erb JavaScript JavaScript JQuery Node.js Ajax Knockout AngularJS 1.0.x, 1.2.x, 1.3.0 .js .htm .html VisualForce .apex .apexp .page .component .cls .trigger .tgr .object .report .workflow Среда программирования Первичные языки программирования Вторичные языки программирования Frameworks VBScript Расширения файлов .vbs Perl Perl 5.005 – 5.14 Android Java iOS Objective C .pl .pm .plx .psgi iOS mobile applications .m .h .xib HTML 5 PL\SQL .pls .sql .pkh .pks .pkb .pck Python Python JavaScript VB script PL\SQL Groovy Groovy JavaScript VB script PL\SQL Django .py .groovy .gsh .gvy .gy Other extensions: .aspx .ascx .config .xml .cgi .inc [*] Требуются некоторые настройки. [**] Только на стороне клиента Запросы для поиска уязвимостей исполняемые в версии Checkmarx Suite 7.1.6 на 10 ноября 2014 г. https://www.checkmarx.com/technology/supported-coding-languages/ ПРИЛОЖЕНИЕ 2 ЛИЦЕНЗИРОВАНИЕ Основными параметрами для расчета стоимости лицензий и выработке требований к оборудованию являются: 1. Число одновременно сканируемых проектов; 2. Число строк кода по каждому из сканируемых проектов; 3. Периодичность выполнения сканирований; 4. Количество и роли (в соответствии с классификацией, представленной в таблице) сотрудников; Решение предлагается пакетами, каждый из пакетов, кроме Cx-Single, может впоследствии расширяться путем добавления так называемых Add-On – базовых и пользовательских. Для примера рассмотрим содержание пакета Cx-Starter, который включает: ∙ Cx-Server 1 шт. координирует работу до 8-ми модулей Cx-Engine, выполняющих сканирование и пользователей, принимающих участие в процессе проверки/исправления кода; ∙ Cx-Engine рование; - 1 шт. - сканирует и анализирует код, выполняет одно конкурентное скани- ∙ Cx-Auditor 1 шт. лицензия на пользователя, который авторизован на внесение изменений в язык запросов решения (позволяет добавлять описание уязвимостей и т.д.); ∙ Cx- Scanner 2 шт. лицензия на пользователя, авторизованного на запуск процесса сканирования и просмотра результатов анализа; ∙ Cx-Reviewer 10 шт. тов сканирования онлайн; лицензия на пользователя, авторизованного на просмотр результа- ПРЕДЛАГАЕМЫЕ ТИПЫ ЛИЦЕНЗИЙ Тип лицензии Описание Single Server/User Cx-Single Single User License (No add-on licenses allowed). Cx-Server + Cx-Engine + Cx-Auditor + CxScanner. Including 4-hour remote training. Add-On - Base Cx-Server Module to coordinate up to 8 CxEngines and user management activity. Cx-Engine Module for code scanning and analysis. A single CxEngine can perform one concurrent scan. Add-On - Users Cx-Auditor A user authorized to adjust and customize queries. Cx-Scanner A user authorized to initiate scans and review results. Cx-IDE A user authorized to initiate scans from Interactive Development Environments (including an IDE plug-in) Cx-Reviewer A user authorized to interactively review scan results online. Packages Cx-Starter Cx-Server + Cx-Engine + Cx-Auditor + 2 Cx-Scanners + 10 Cx-Reviewers deployed for multiserver multi-user usage for initial deployment only. Cx-Advanced Cx-Server + 2 Cx-Engines + Cx-Auditor + 5 Cx-Scanners + 20 Cx-Reviewers + 2 Cx-Training Cx-Comprehensive Cx-Server + 3 CxEngines + 2 Cx-Auditors + 20 Cx-Scanners + 50 Cx-Reviewers + 3 CxTraining. Service* * No partner discount. *not include travel & Expenses Cx-Training Training Day - 8 hours Cx-PS Professional Service Day - 8 hours