Анализ безопасности исходных кодов программного обеспечения

1
Анализ кода для мирового производителя техники

Мировой производитель бытового и промышленного оборудования собирался внедрить новые модули для своих систем ERP, CRM, финансов и электронной коммерции.

Модули были написаны с использованием Java, C ++ и SAP UI5.

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

Общий объем работы составил около 2 миллионов строк, и примерно через 3 месяца мы представили подробный отчет, показывающий критические проблемы безопасности, которые были пропущены даже сканерами безопасности и даже тестом на проникновение в режиме «серый ящик».

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

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

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

Узнайте больше об анализе безопасности исходных кодов.

2
Аудит исходного кода системы VoIP-телефонии

Краткое описание системы. Коммерческая система защищённой VoIP-связи, получившая сертификат безопасности Министерства обороны Израиля.

Технологии: модульная архитектура, веб-сервер, VoIP-сервер, клиентские приложения под Windows, iOS, Android, СУБД: Oracle, языки программирования: .NET, C/C#, Objective C, Java.

Общее количество строк исходного кода: 1,2 млн.

Задача: в режиме white-box провести независимый аудит безопасности исходного кода системы.

Решение: автоматизированный статический анализ был выполнен заказчиком самостоятельно, поэтому для аудита безопасности использовался исключительно ручной метод. В коде на языке С были выявлены небезопасные функции по работе с памятью, допускающие переполнение буфера и утечку памяти. В мобильных приложениях выявлены логические ошибки, позволявшие перехватывать ключи шифрования с помощью атаки MitM. Также выявлены архитектурные ошибки, позволявшие с помощью DoS-атаки заблокировать абонента. Сформированы детальные отчёты с описанием всех обнаруженных проблем и рекомендациями по их устранению, для уровня топ-менеджмента и технических специалистов.

Срок выполнения работ: 2 месяца.

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

Узнайте больше об анализе безопасности исходных кодов.

3
Аудит исходного кода международной платёжной системы

Краткое описание системы. Система электронных кошельков, позволяющая пополнять баланс с помощью банковских платёжных карт (данные о картах не передаются и не хранятся), PerfectMoney, WebMoney, LiqPay, SWIFT и других методов. Этими же методами возможен и вывод денег. Кошельки мультивалютные, возможен обмен одной валюты на другую внутри системы по внутренним курсам. Имеет API для интеграции с мерчантами. Основная целевая категория пользователей – клиенты форекс-брокеров. Кроме форекс-брокеров, к платёжной системе подключены операторы мобильной связи, а также электронные магазины по продаже мобильных телефонов и аксессуаров.

Технологии: модульная распределённая клиент-серверная архитектура, облачный хостинг, СУБД PostgreSQL, MySQL, GT.M, языки программирования C++, PHP, Go, Hack, Python, M, Java, JavaScript, Perl.

Общее количество строк исходного кода: 1,8 млн.

Задача. В режиме white-box найти недостатки архитектуры, небезопасное использование кода, уязвимости системы и способы проникновения.

Решение. В процессе аудита использовался сначала автоматизированный, затем ручной анализ кода. Выявлено большое количество неинициализированных переменных, устаревшие и небезопасные функции по работе с памятью, недостаточная проверка ввода. В некоторых местах кода параметры пользовательских запросов без валидации использовались в SQL-запросах, что позволило осуществить успешную атаку типа SQL-injection и скомпрометировать персональные данные клиентов. Между некоторыми модулями выявлена незащищённая передача данных между фронтендом и бэкендом через прокси, что могло привести к успешной реализации атаки типа MitM. Выявлены слабые места в защите административной панели системы, приводящие к повышению полномочий авторизованных пользователей с ролями верификатора и финансиста. Выявлены логические ошибки, приводящие к возможности банкротства системы через манипуляции с внутренними процессами обмена валют. Выявлены ошибки логирования транзакций. Выявлены логические ошибки контрольных просчётов цепочек транзакций для контроля целостности системы. Сформированы детальные отчёты с описанием всех обнаруженных проблем и рекомендациями по их устранению, для уровня топ-менеджмента, IT-директора и технических специалистов.

Срок выполнения работ: 3 месяца.

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

Узнайте больше об анализе безопасности исходных кодов.

4
Аудит исходного кода криптовалютной биржи

Краткое описание системы. Децентрализованная биржа, позволяющая торговать криптовалютами и токенами на основе смарт-контракта Ethereum.

Технологии: независимые фронтенд и бэкенд, административная часть в виде приложения на iOS, СУБД: PostgreSQL, языки программирования: Go, Python, JS, Objective C, Java.

Общее количество строк исходного кода: 960 тыс.

Задача: в режиме white-box найти уязвимости системы и возможности её взлома.

Решение: Статический анализ кода на первом этапе выявил ошибки в использовании повторяющегося кода, что было чревато серьёзными отложенными логическими проблемами, а также ошибочные параметры, ошибки в моделях зависимости переменных, недостаточный охват реализованных тестовых сценариев. Дальнейший ручной анализ исходного кода помог выявить скрытые проблемы с некорректной валидацией входных данных, логические проблемы с источниками котировок криптовалют и котировками для пар криптовалют, а также возможности инъекций некорректных данных для записи в смарт-контракт. Сформированы детальные отчёты с описанием всех обнаруженных проблем и рекомендациями по их устранению, для уровня ТОП-менеджмента и технических специалистов.

Срок выполнения работ: 2 месяца.

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

Узнайте больше об анализе безопасности исходных кодов.