Як ви гарантуєте безпеку свого API?
Сьогодні ми живемо в епоху стрімкого розвитку цифрової економіки, де величезні обсяги інформації передаються за допомогою API. Будь-яка сфера, чи то бізнес, ігри, освіта, метеорологія, наука чи мистецтво – все залежить від API. Враховуючи таку фундаментальну залежність від API, дивує недостатня увага, що приділяється їхній безпеці.
Розробники часто задовольняються стандартними налаштуваннями своїх фреймворків, або, що ще гірше, не використовуючи фреймворки, вони хибно вважають, що дотримуються всіх правил безпеки. Системні адміністратори, своєю чергою, покладаються на стандартні параметри безпеки, які пропонує їхня інфраструктура або постачальник послуг.
На мою думку, це зовсім не є добре.
Джерело: developer.ibm.com
Безперечно, на кону стоїть дуже багато, і ми починаємо це усвідомлювати лише тоді, коли відбувається щось дійсно катастрофічне.
Але давайте розглянемо все по черзі. 🙂
Чому необхідно захищати кінцеві точки API?
Здавалося б, це очевидне питання, чи не так?
Нам потрібно забезпечити захист кінцевих точок API, оскільки від цього залежить функціонування бізнесу.
Хоча це вже досить вагомий аргумент, я хотів би розширити цю думку та розглянути інші, не менш важливі наслідки.
Втрати у бізнесі 📉
Це цілком зрозуміло. Якщо хтось отримає несанкціонований доступ до ваших кінцевих точок API, це може призвести до повної зупинки роботи. Відновлення після порушення безпеки може зайняти значний час, що є неприпустимим для бізнесу. І хоча для більшості компаній година або дві простою можуть не мати критичних наслідків, для деяких це абсолютно неприйнятно.
Уявіть, що обмін валют не працює протягом кількох хвилин!
Проблеми з відповідністю стандартам
Неналежний захист вашого API може призвести до серйозних проблем, залежно від вашої географії та галузі. Наприклад, якщо ви працюєте у банківській сфері (особливо в ЄС), виявлення незахищених API може призвести до серйозних юридичних проблем і проблем із відповідністю вимогам. Це може навіть означати кінець вашого бізнесу.
Втрата репутації
Факт злому сам по собі є болючим, але якщо ця новина стане публічною, це може завдати непоправної шкоди іміджу вашого бренду. Наприклад, компанія Sony вже кілька разів ставала жертвою серйозних хакерських атак, і в колах безпеки вона стала об’єктом насмішок.
Навіть якщо фактичних втрат даних чи коштів не відбудеться, бажаємо успіхів у переконанні клієнтів, що ви не зламані. 🙂
Завищені рахунки за інфраструктуру 💰
Коли ваш API працює в інфраструктурі, він використовує ресурси (переважно пропускну здатність, процесор і пам’ять). Якщо API не захищено належним чином і зловмисники можуть з ним взаємодіяти, вони можуть змусити його виконувати безліч безглуздих дій (наприклад, надсилати складні запити до бази даних), що призведе до зростання ваших рахунків.
На платформах з автоматичним масштабуванням ресурсів (таких як AWS) результати можуть бути шокуючими (хоч це й не зовсім по темі, але якщо ви потрапите в таку ситуацію на AWS, вони зазвичай розуміють ситуацію та відмовляються від завищених рахунків, принаймні на момент написання цієї статті!).
Моральний стан команди
Ви можете подумати, що команда, яка допустила витік даних, демотивується. Але не завжди так. Можливо, причиною є недостатня безпека інфраструктури, що розчаровує розробників, або навпаки.
Якщо ця проблема зберігатиметься достатньо довго, у вас сформується культура, про яку ви потім пошкодуєте.
Перевага для конкурентів
Припустимо, що стався витік даних, але фактичних втрат не було. Проте ваші конкуренти використають цей інцидент для просування свого API, заявляючи, що він набагато безпечніший (навіть якщо це не так!). Знову ж таки, бажаю успіхів у переконанні ринку. 🙂
Загалом, порушення безпеки мають наслідки, що виходять за рамки фінансових втрат.
Основні методи захисту кінцевих точок API
На щастя, існує ряд простих у застосуванні та зрозумілих практик, які можна використовувати для захисту кінцевих точок API. Ось рекомендації більшості експертів з безпеки.
HTTPS завжди 🔒
Якщо ваші кінцеві точки API дозволяють користувачам API спілкуватися через http або інші незахищені протоколи, ви наражаєте їх на значний ризик. Паролі, секретні ключі та дані кредитних карток можуть бути легко викрадені за допомогою атаки “людина посередині” або перехоплювача пакетів.
Тому завжди використовуйте HTTPS як єдиний доступний варіант. Незалежно від того, наскільки тривіальною може здаватися кінцева точка, підключення через http не повинно бути навіть варіантом. Сертифікат TLS не є дорогим; його можна придбати приблизно за 20 доларів США в магазині SSL.
Одностороннє хешування паролів
Паролі ніколи не повинні зберігатися у вигляді відкритого тексту, оскільки в разі порушення безпеки всі облікові записи користувачів будуть скомпрометовані. Також слід суворо уникати симетричного шифрування, оскільки будь-який досвідчений і достатньо наполегливий зловмисник зможе його зламати.
Єдиним рекомендованим варіантом є використання асиметричних (або «односторонніх») алгоритмів шифрування для зберігання паролів. Таким чином, ні зловмисник, ні будь-який розробник чи системний адміністратор у компанії не зможе прочитати паролі клієнтів.
Надійна автентифікація 💪
Сьогодні майже кожен API має систему автентифікації, але на мою думку, OAuth2 є найкращим варіантом. На відміну від інших методів автентифікації, він розділяє ваш обліковий запис на ресурси та надає лише обмежений доступ за допомогою маркера автентифікації.
Крім того, гарною практикою є встановлення терміну дії токенів, наприклад, кожні 24 години, щоб їх потрібно було оновлювати. Таким чином, навіть якщо ваш маркер витече, ймовірність того, що 24-годинний термін зменшить наслідки злому, є досить високою.
Обмеження швидкості
Якщо ваш API не використовується мільйонами людей щохвилини, гарною ідеєю буде встановити обмеження на кількість запитів, які клієнт може надіслати до API за певний проміжок часу.
Це переважно робиться для того, щоб запобігти роботам, які можуть надсилати сотні одночасних запитів щосекунди та змусити ваш API споживати системні ресурси без потреби. Усі фреймворки веб-розробки постачаються з проміжним програмним забезпеченням для обмеження швидкості (а якщо ні, його досить легко додати за допомогою бібліотеки), налаштування якого займає лише кілька хвилин.
Підтвердження введених даних
Хоча це може здатися очевидним, ви будете здивовані, скільки API нехтує цим. Перевірка введених даних означає не лише перевірку правильності формату введених даних, але й відсутність несподіванок. Простим прикладом є SQL-ін’єкція, яка може зруйнувати вашу базу даних, якщо ви дозволите рядкам запиту проходити без перевірки або майже без неї.
Інший приклад – перевірка розміру запиту POST і повернення відповідного коду помилки та повідомлення клієнту. Спроба прийняти та проаналізувати занадто великі вхідні дані лише погіршить роботу API.
Застосування фільтрації IP-адрес, якщо це можливо
Якщо ви працюєте у сфері B2B і ваші API використовуються компаніями з певних місць, розгляньте можливість додавання додаткового рівня безпеки, який обмежує IP-адреси, які можуть отримати доступ до вашого API. Для кожного нового місця та клієнта IP-адресу потрібно перевірити на відповідність вхідному запиту.
Так, це створює деякі незручності під час реєстрації, але кінцевий результат – набагато надійніший захист, ніж можна досягти іншими способами.
Інструменти для посилення захисту API
Чи існують інструменти, які можуть допомогти нам сканувати вразливості або навіть запропонувати перший рівень захисту, коли йдеться про безпеку API?
На щастя, так. Є кілька інструментів, якими можна скористатися, але пам’ятайте, що жодна стратегія безпеки не є ідеальною. З огляду на це, ці інструменти можуть значно підвищити безпеку вашого API, тому їх рекомендують.
Metasploit – це надзвичайно популярна платформа з відкритим вихідним кодом для тестування на проникнення веб-додатків і API. Вона може сканувати ваш API за різними параметрами та проводити комплексний аудит безпеки на предмет різних рівнів вразливостей.
Наприклад, сканування безпеки, проведене Metasploit, може виявити, чи ваші сигнатури API розкривають основні технології та операційну систему; приховування цього часто є половиною виграної битви в безпеці API.
Хоча основної структури з відкритим вихідним кодом зазвичай достатньо, існують чудові платні продукти, створені на основі Metasploit, які варті уваги. Професійний план чудовий, якщо вам потрібна преміум-підтримка та ви будете активно використовувати фреймворк, але, як правило, він не потрібен, якщо ваша команда досить досвідчена.
AppTrana
AppTrana пропонує спеціальний захист API – комплексне рішення на основі оцінки ризиків для захисту від широкого спектру загроз API, включаючи OWASP API Top 10, DDoS-атаки на основі API та бот-атаки, вбудовані загрози, витік даних тощо. Завдяки необмеженому автоматизованому скануванню API за допомогою ручного тестування, він постійно відстежує вашу оцінку ризику для посилення безпеки.
AppTrana API Protection забезпечує комплексне рішення, яке поєднує виявлення ризиків, виявлення загроз API, політику позитивної безпеки API, політику DDoS-специфічних API, модулі для ботів і функції виявлення API.
Її функція виявлення API забезпечує повну видимість викликів API, включаючи не задокументовані та тіньові API, щоб ви могли зрозуміти свою поверхню атаки API. Цей спеціальний захист API збирає інформацію про користувачів, поведінку використання API, активність загроз, карти викликів API тощо, щоб продемонструвати статус захисту в режимі реального часу.
Використовуючи Indusface AppTrana, ви можете створювати індивідуальні політики для API, щоб блокувати зловживання, орієнтовані на API, в режимі реального часу.
Cloudflare
Cloudflare — це не просто CDN, але й пропонує різноманітні функції безпеки, такі як WAF, обмеження швидкості, захист від DDoS, які відіграють важливу роль у захисті вашого API від онлайн-загроз.
Invicti
Invicti поставляється з унікальною особливістю “сканування на основі доказів”. Простіше кажучи, часто буває так, що нестандартні умови мережі або деякі менш відомі дії API інтерпретуються як слабкі місця в безпеці, які пізніше виявляються хибними.
Це призводить до марних витрат ресурсів, оскільки всі повідомлені вразливості потрібно перевіряти вручну, щоб підтвердити їхню справжність. Invicti стверджує, що її інструмент надає достатньо вагомі докази для звітів, усуваючи сумніви щодо виявлених слабких місць.
З такими клієнтами, як Sony, Religare, Coca-Cola, Huawei тощо, ви можете бути впевнені, що вони роблять щось правильно. 🙂
SoapUI Pro
Розроблений SmartBear, SoapUI Pro є інтуїтивно зрозумілим і простим способом створення тестів API та отримання точних звітів на їхній основі. Він також добре інтегрується з вашим конвеєром CI/CD, гарантуючи, що жодне нове доповнення до коду не поставить під загрозу безпеку вашого API.
SoapUI може працювати зі Swagger, OAS та іншими популярними стандартами API, що значно скорочує час на початку роботи. З такими клієнтами, як Microsoft, Cisco, MasterCard, Oracle тощо, і планами від 659 доларів на рік, це хороший інструмент для забезпечення безпеки API.
Okta
Скористайтеся Okta, щоб дозволити вашим розробникам зосередитися на покращенні взаємодії з користувачем, а також надійному захисті корпоративних даних. Він пропонує авторизацію OAuth 2.0 і розроблений для мобільних і веб-додатків. Він також сумісний зі сторонніми службами керування API.
Використовуйте Okta для створення, перевірки та підтримки всіх політик доступу до API за допомогою зручних і спеціально розроблених консолей без необхідності написання спеціального коду. Це забезпечує додаткову гнучкість, тому вам не потрібно захищати свої API за допомогою додаткових примірників шлюзу.
Okta пропонує політику, керовану ідентифікацією, для управління різними типами користувачів і служб в одному місці. Визначайте доступ залежно від профілів користувачів, мереж, груп, згоди та клієнтів. Розширюйте токени, використовуючи динамічні дані з ваших внутрішніх систем, щоб забезпечити швидшу інтеграцію та плавну міграцію.
Це спрощує централізоване адміністрування API і дозволяє захистити ресурси API. Okta зосереджується на безпеці, дозволяючи вам захистити доступ між різними мікросервісами.
Висновок
На ринку є велика кількість інструментів для безпеки API, як з відкритим вихідним кодом, так і платних, або їх комбінацій.
Спробуйте кілька з них і подивіться, який найкраще відповідає вашим вимогам.