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

1
Аудит вихідного коду системи VoIP-телефонії

Короткий опис системи. Комерційна система захищеного VoIP-зв'язку, що отримала сертифікат безпеки Міністерства оборони Ізраїлю.

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

Загальна кількість рядків вихідного коду: 1,2 млн.

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

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

Термін виконання робіт: 2 місяці.

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

Дізнайтеся більше про аналіз безпеки вихідних кодів.

2
Аудит вихідного коду міжнародної платіжної системи

Короткий опис системи. Система електронних гаманців, що дозволяє поповнювати баланс за допомогою банківських платіжних карток (дані про карти не передаються і не зберігаються), 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, отримати офіційний сертифікат, опублікувати систему в загальному доступі та успішно почати свою фінансову діяльність.

Дізнайтеся більше про аналіз безпеки вихідних кодів.

3
Аудит вихідного коду криптовалютної біржі

Короткий опис системи. Децентралізована біржа, що дозволяє торгувати криптовалютами та токенами на основі смарт-контракту Ethereum.

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

Загальна кількість рядків вихідного коду: 960 тис.

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

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

Термін виконання робіт: 2 місяці.

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

Дізнайтеся більше про аналіз безпеки вихідних кодів.

4
Аналіз коду для світового виробника техніки

Світовий виробник побутового та промислового обладнання збирався впровадити нові модулі для своїх систем ERP, CRM, фінансів та електронної комерції.

Модулі були написані з використанням Java, C++ і SAP UI5.

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

Загальний обсяг роботи становив близько 2 мільйонів рядків, і приблизно через 3 місяці ми надали детальний звіт, який показував критичні проблеми безпеки, які були пропущені сканерами безпеки та навіть тестом на проникнення у режимі «сірий ящик».

Наприклад, ми виявили критичні вразливості стану перегонів, які можуть з'являтися не часто, але можуть завдати величезної шкоди.

Іншим прикладом був бекдор у програмному коді, який дозволяв розробникам програмного забезпечення отримувати несанкціонований доступ до виробничої системи. Розробники пояснили, що їм потрібен цей доступ для законних цілей налагодження, однак це представляло ризик, і ми наполягли на закритті цього бекдору.

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

Дізнайтеся більше про аналіз безпеки вихідних кодів.