7 рад по підвищенню безпеки додатків

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

Автор: Sharon Solomon ( @checkmarx )

Величезний зростання числа кіберзлочинів змушує компанії ретельніше підходити до питань безпеки і розробляти нові техніки, що підвищують захищеність додатків. Подібне відбувається тому, що традиційні методи, наприклад, ручне тестування або WAF 'и (Web Application Firewall; міжмережевий екран для веб-додатків) часто не рятують від стають все більш витонченими хакерських атак.

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

1. Сплануйте життєвий цикл розробки програмного забезпечення

Найбільш ефективний спосіб підвищити безпеку розробок - впровадити так званий життєвий цикл розробки програмного забезпечення (Software Development Life Cycle; SDLC). Цей процес розділяє цикл розробки на окремі стадії, в кожній з яких передбачений аудит безпеки. Автоматизація тестування, в кінцевому рахунку, дозволить виявити уразливості на більш ранніх стадіях.

Сучасний життєвий цикл розробки програмного забезпечення включає в себе шість стадій:

  • Аналіз має на увазі створення і впровадження загальної стратегії процесу розробки, включаючи системний аналіз, додавання нових функцій і доопрацювання в міру розвитку самого процесу. Відомості, отримані за результатами аудиту безпеки, також приймаються до уваги, після чого, при необхідності, переглядаються орієнтири.
  • Проектування має на увазі підготовку до проектування програмного забезпечення на основі вимог, отриманих за результатами попередньої стадії.
  • Реалізація передбачає написання коду програми. Ця стадія найбільш довга і складна у всьому циклі.
  • Тестування має на увазі виконання більшості процедур, що відповідають за контроль якості. Сюди ж входить тестування безпеки програмного забезпечення. Настійно рекомендується впроваджувати заходи безпеки в усі стадії життєвого циклу. Тільки тоді стане можливим створити найбільш захищене додаток.
  • Впровадження на увазі використання готового програмного забезпечення в бойових умовах.
  • Підтримка має на увазі усунення вразливостей, проблем, що виникають під час експлуатації додатки, а також налаштування і додавання нових функцій на основі побажань клієнтів. В ідеалі весь цей процес проходить з використанням спеціальних методологій (Agile / DevOps).

В ідеалі весь цей процес проходить з використанням спеціальних методологій (Agile / DevOps)

Малюнок 1: Наочна схема процесу розробки безпечних додатків

2. Автоматизація процедур, пов'язаних з безпекою

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

В додатку Static Code Analysis (SCA) реалізовані спеціальні сканери коду, які можуть бути інтегровані в усі стадії життєвого циклу. Крім того, присутні легковагі плагіни, які можна легко впровадити в вашу улюблену середу розробки.

Інші переваги, які дає впровадження автоматичного тестування коду:

  • Присутній велика база вразливих ділянок коду.
  • Немає необхідності в скануванні незміненого коду (ідеально для CICD, Agile і DevOps).
  • Сумісність з великою кількістю мов програмування і фреймворків.
  • Детектування помилок в коді (наприклад, переповнення буфера), мертвого коду та інших проломів.
  • Автоматична генерація звітів в форматі PDF / XML, які можна використовувати для подальшого і більш детального аналізу.

3. Зупиняйте збірку, якщо виявлені загрози середнього і високого рівнів

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

4. Не забувайте про вхідних даних з боку користувачів. використовуйте WAF

У більшості сучасних веб-і мобільних додатках відбувається взаємодія з користувачами, які зазвичай вводять будь-які відомості в своїх браузерах. Це дає хакерам великі можливості для обходу захисту додатків. Найбільш популярні методи атак, які використовуються зловмисниками: SQL- і LDAP- ін'єкції і міжсайтовий скриптинг (XSS).

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

WAF - ефективний спосіб для виявлення шкідливих призначених для користувача даних і моніторингу вхідного і вихідного трафіку (за заданими критеріями) на серверах і в базах даних.

5. Переконайтеся в тому, що додаток сумісно з сучасними стандартами безпеки

Існує два стандарти безпеки, визнаних усіма компаніями незалежно від сфери діяльності, з якими, за можливості, має бути сумісним програмне забезпечення. OWASP Top-10 і SANS 25 - вичерпні списки вразливостей, створювані некомерційними організаціями. Свіжа інформація додається провідними експертами з безпеки зі всього світу.

Інші стандарти, які стосуються певної індустрії:

  • PCI DSS - для компаній, які обробляють, зберігають і передають інформацію про кредитні картки.
  • HIPPA - для постачальників медичних послуг.
  • MISRA - набір стандартів для мови С.
  • BSIMM - фреймворк, що допомагає оцінити рівень безпеки програми.

6. Перед використанням ретельно аналізуйте сторонні компоненти з відкритим вихідним кодом

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

7. Перед фінальним релізом проведіть пентести (ще краще, якщо ви будете проводити пентести після кожного оновлення)

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

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

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

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