Приховування — це не те саме, що забезпечення безпеки

Нещодавно керівник, який не є інженером, створив B2B SaaS за два дні. Вони використовували ШІ, щоб написати все. Продукт працює. Клієнти ним користуються. Функції випускаються швидко.

Потім мені дісталася інфраструктура. Моє завдання — знаходити ризики в коді, який уже працює в продакшені.

Я виявив величезну вразливість у безпеці. API-ключ був жорстко прописаний безпосередньо в сирцевому коді.

Я сказав керівнику, що це небезпечно. Вони негайно це виправили.

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

Я ще раз пояснив проблему. Цього разу вони перенесли ключ у базу даних.

Це здавалося прогресом. Ключ був поза репозиторієм. Але коли я перевірив базу даних, ключ лежав там у відкритому вигляді (plaintext). Шифрування не було. Будь-хто, хто має доступ до бази даних, міг його прочитати.

Ключ переміщувався тричі:

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

Приховувати означає винести щось із поля зору. Забезпечувати захист означає зробити це безглуздим для зловмисника.

У програмному забезпеченні ви повинні дотримуватися цих правил:

Це сталося, попри те, що керівник використовував найсучасніші моделі ШІ, доступні на ринку.

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

Інтелект стає безпекою лише тоді, коли ви знаєте, що саме потрібно захищати.

Якщо ви думаєте, що виправили діру в безпеці лише тому, що перенесли її в інше місце, зупиніться. Запитайте себе:

Секрет має бути у правильному місці, а не просто в невидимому.

Source: https://dev.to/jun_uen0/playing-hide-and-seek-with-an-api-key-our-cfos-claude-code-kept-hiding-job

Optional learning community: https://t.me/GyaanSetuAi