01 Бер, 2023

Жорстко закодовані криптографічні ключі

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

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

Приклад уразливого коду на різних мовах програмування:


В Java:

				
					SecretKeySpec keySpec = new SecretKeySpec("mySecretKey".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);

				
			


У цій Java-коді жорстко закодований ключ "mySecretKey" використовується для ініціалізації шифру шифрування. Цей ключ легко доступний і може бути використаний для розшифровки зашифрованих даних.

• в Python:

				
					from Crypto.Cipher import AES

key = 'mySecretKey'
cipher = AES.new(key, AES.MODE_CBC)

				
			


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

• в C#:

				
					Aes aes = Aes.Create();
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.KeySize = 128;
aes.Key = Encoding.ASCII.GetBytes("mySecretKey");
aes.IV = Encoding.ASCII.GetBytes("1234567890123456");

				
			


У цьому коді C # жорстко закодований ключ "mySecretKey" використовується для установки ключа шифрування для шифру AES. Цей ключ легко доступний і може бути використаний для розшифровки зашифрованих даних.

Приклади використання жорстко закодованих криптографічних ключів

Крадіжка даних:

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

Атаки "Людина посередині":

Якщо зловмисник може перехопити зв'язок між двома сторонами, які використовують жорстко закодовані ключі для шифрування повідомлень, зловмисник може легко розшифрувати повідомлення і переглянути їх вміст. Це відомо як атака "людина посередині". Наприклад, якщо пристрій Інтернету речей використовує жорстко закодований ключ для зв'язку з хмарним сервером, зловмисник, який перехоплює повідомлення, може використовувати ключ для перегляду переданих даних.

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

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

Методи підвищення привілеїв для жорстко закодованих криптографічних ключів

Зворотний інжиніринг:

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

Аналіз пам'яті:

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

Бінарне виправлення:

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

Загальна методологія та контрольний список для жорстко закодованих криптографічних ключів

Методологія:

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

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

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

  4. Тестування пуха: Використовуйте інструменти автоматичного нечіткого тестування для перевірки програмного програми чи пристрою на наявність вразливостей, пов'язаних з жорстко запрограмованими ключами. Нечітке тестування включає в себе відправлення великих обсягів випадкових даних програма або пристрій, щоб визначити, як воно обробляє несподіваний enter. Це може допомогти виявити проблеми, пов'язані з жорстко запрограмованими ключами, такі як переповнення буфера або стека.

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

Контрольний список:

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

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

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

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

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

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

  7. Перевірте, чи надійно зберігаються ключі шифрування, наприклад, за допомогою системи керування ключами або апаратного модуля безпеки.

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

Набір інструментів для експлуатації Жорстко закодовані криптографічні ключі

Ручні Інструменти:

  1. Інструменти зворотного проектування (наприклад, IDA Pro, Binary Ninja): ці інструменти дозволяють виконувати зворотне проектування скомпільованого коду для виявлення потенційних жорстко закодованих криптографічних ключів.

  2. Відладчики (наприклад, gdb, OllyDbg): Відладчики дозволяють покроково виконувати програмний код і відстежувати вміст пам'яті, щоб визначити, де можуть зберігатися жорстко закодовані ключі.

  3. Інструменти редагування двійкових файлів (наприклад, Radare2, HxD): інструменти редагування двійкових файлів дозволяють змінювати скомпільований код програми або пристрою для видалення жорстко закодованих ключів або вставки власних ключів в цілях тестування.

  4. Платформи тестування на проникнення (наприклад, Metasploit, Burp Suite): Ці платформи надають широкий спектр інструментів для проведення ручного тестування на проникнення, включаючи інструменти для ідентифікації та використання жорстко закодованих криптографічних ключів.

  5. Плагіни браузера (наприклад, для несанкціонованого доступу до даних, проксі Burp Suite): плагіни браузера можуть використовуватися для перехоплення і зміни трафіку між веб-додатком і сервером для ідентифікації жорстко закодованих криптографічних ключів, переданих по мережі.

Автоматизовані інструменти:

  1. Інструменти статичного аналізу (наприклад, Fortify, Checkmarx): Інструменти статичного аналізу сканують вихідний код програми або пристрою для виявлення потенційних жорстко закодованих криптографічних ключів.

  2. Інструменти динамічного аналізу (наприклад, Fiddler, Wireshark): Інструменти динамічного аналізу відстежують поведінку програми або пристрою під час виконання для виявлення потенційних використовуваних жорстко закодованих криптографічних ключів.

  3. Інструменти для тестування нечіткості (наприклад, AFL, Peach Fuzzer): Інструменти нечіткого тестування відправляють випадкові або змінені дані в програмне забезпечення або пристрій для виявлення вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

  4. Сканери вразливостей (наприклад, Nessus, OpenVAS): Сканери вразливостей можуть виявляти потенційні проблеми, пов'язані з жорстко закодованими криптографічними ключами, шляхом сканування мережі або програми на наявність відомих вразливостей.

  5. Інструменти аналізу пам'яті (наприклад, волатильність, повторний виклик): Інструменти аналізу пам'яті можна використовувати для аналізу вмісту програмного додатка або пам'яті пристрою з метою ідентифікації жорстко закодованих криптографічних ключів, які можуть там зберігатися.

  6. Автоматизовані інструменти зворотного інжинірингу (наприклад, Ghidra, Binwalk): Ці інструменти можуть бути використані для автоматичного зворотного проектування скомпільованого коду для виявлення потенційних жорстко закодованих криптографічних ключів.

  7. Інструменти криптографічного аналізу (наприклад, Hashcat, John the Ripper): Ці інструменти можуть бути використані для злому зашифрованих даних та ідентифікації криптографічних ключів, використовуваних для шифрування.

  8. Системи керування ключами (наприклад, Hashicorp Vault, служба керування ключами AWS): Ці інструменти забезпечують безпечний спосіб управління криптографічними ключами, знижуючи ризик використання жорстко закодованих ключів.

  9. Апаратні модулі безпеки (наприклад, YubiHSM, Thales nShield): Модулі апаратної безпеки забезпечують апаратне безпечне сховище криптографічних ключів, знижуючи ризик використання жорстко закодованих ключів.

  10. Автоматизовані інструменти оцінки вразливості (наприклад, Qualys, Rapid7): Ці інструменти можуть автоматично сканувати мережу або програмне забезпечення на предмет потенційних вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

Середній бал CVSS стек жорстко закодованих криптографічних ключів

Загальна система оцінки вразливостей (CVSS) забезпечує основу для оцінки серйозності вразливостей в системі безпеки за шкалою від 0 до 10, причому 10 є найбільш серйозними. Середній бал CVSS для вразливостей, пов'язаних з жорстко закодованими криптографічними ключами, може сильно варіюватися в залежності від конкретних обставин і контексту уразливості.

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

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

Загальна перерахування слабких місць (CWE)

• CWE-321: Використання жорстко закодованого криптографічного ключа: ця слабкість відноситься до використання жорстко закодованих криптографічних ключів в програмному забезпеченні або пристрої, які можуть бути легко виявлені і використані зловмисниками.

• CWE-798: Використання жорстко закодованих облікових даних: ця слабкість відноситься до використання жорстко закодованих облікових даних, включаючи криптографічні ключі, в програмному забезпеченні або пристрої, які можуть бути легко виявлені і використані зловмисниками.

• CWE-259: Використання жорстко закодованого пароля: ця слабкість відноситься до використання жорстко закодованих паролів, включаючи криптографічні ключі, в програмному забезпеченні або пристрої, які можуть бути легко виявлені і використані зловмисниками.

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

• CWE-327: Використання непрацюючого або ризикованого криптографічного алгоритму: ця слабкість відноситься до використання криптографічних алгоритмів, які, як відомо, уразливі для атак або мають відомі слабкі місця, що полегшує зловмисникам злом зашифрованих даних і відновлення криптографічних ключів.

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

• CWE-337: Передбачуване початкове значення генератора псевдовипадкових чисел (PRNG): ця слабкість відноситься до використання передбачуваного початкового значення в PRNG, що полегшує зловмисникам передбачення послідовності випадкових чисел, що генеруються PRNG, і відновлення криптографічних ключів.

• CWE-338: Використання криптографічно слабкого генератора псевдовипадкових чисел (PRNG): ця слабкість відноситься до використання слабкого або некоректного алгоритму PRNG, полегшує зловмисникам передбачення послідовності випадкових чисел, що генеруються PRNG, і відновлення криптографічних ключів.

• CWE-347: Неправильна перевірка криптографічного підписи: ця слабкість відноситься до нездатності належним чином перевірити криптографічну підпис даних, що може дозволити зловмисникам змінювати дані без виявлення і відновлювати криптографічні ключі.

• CWE-358: Неправильно реалізована перевірка безпеки на відповідність стандарту: ця слабкість відноситься до нездатності належним чином реалізувати перевірки безпеки для галузевих стандартів, пов'язаних з криптографією, таких як SSL / TLS, що полегшує зловмисникам використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

Топ-10 CVE, пов'язаних з жорстко закодованими криптографічними ключами

• CVE-2022-45425 – Деякі програмні продукти Dahua мають вразливість використання жорстко закодованого криптографічного ключа. Зловмисник може отримати крипто-ключ AES, скориставшись цією уразливістю.

• CVE-2022-41540 – Клієнт веб-додатки TP-Link AX10v1 V1_211117 використовує жорстко закодовані криптографічні ключі при обміні даними з маршрутизатором. Зловмисники, здатні перехоплювати повідомлення між веб-клієнтом і маршрутизатором з допомогою атаки типу "людина посередині", можуть отримати ключ послідовності з допомогою атаки методом перебору і отримати доступ до конфіденційної інформації.

• CVE-2022-35287 – Інформаційна чергу IBM Security Verify 10.0.2 містить жорстко закодовані облікові дані, такі як пароль або криптографічний ключ, які він використовує для власної входить аутентифікації, вихідної зв'язку із зовнішніми компонентами або шифрування внутрішніх даних. Ідентифікатор IBM X-Force: 230817.

• CVE-2022-34906 – Жорстко закодований криптографічний ключ використовується в FileWave до 14.6.3 і 14.7.x до 14.7.2. Експлуатація може дозволити суб'єкту, який не пройшов перевірку автентичності, розшифровувати конфіденційну інформацію, збережену в FileWave, і навіть відправляти оброблені запити.

• CVE-2022-34442 – Dell, EMC SCG Policy Manager, версії 5.10 за 5.12, містить (-і) містить (-і) жорстко закодовану вразливість криптографічного ключа. Зловмисник, що знає про жорстко закодованої конфіденційної інформації, потенційно може використовувати цю уразливість для входу в систему, щоб отримати права користувача LDAP.

• CVE-2022-34441 – Dell, EMC SCG Policy Manager, версії 5.10 за 5.12, містить (-і) містить (-і) жорстко закодовану вразливість криптографічного ключа. Зловмисник, що знає про жорстко закодованої конфіденційної інформації, потенційно може скористатися цією уразливістю для входу в систему та отримання прав адміністратора.

• CVE-2022-34440 – Dell, EMC SCG Policy Manager, версії 5.10 за 5.12, містить (-і) містить (-і) жорстко закодовану вразливість криптографічного ключа. Зловмисник, що знає про жорстко закодованої конфіденційної інформації, потенційно може скористатися цією уразливістю для входу в систему та отримання прав адміністратора.

CVE-2022-29830  Використання жорстко запрограмованих Уразливість криптографічного ключа в Mitsubishi Electric GX Works3 всіх версій дозволяє віддаленому зловмиснику, який не пройшов перевірку автентичності, розкрити або підробити конфіденційну інформацію. В результаті неавторизовані користувачі можуть незаконно отримати інформацію про файлах проекту.

• CVE-2022-29829 – Використання уразливості з жорстко закодованим криптографічним ключем до Mitsubishi Electric GX Works3 всіх версій дозволяє віддаленому зловмиснику, який не пройшов перевірку автентичності, розкрити конфіденційну інформацію. В результаті неавторизовані користувачі можуть переглядати або запускати програми незаконно.

• CVE-2022-29828 – Використання уразливості з жорстко закодованим криптографічним ключем до Mitsubishi Electric GX Works3 всіх версій дозволяє віддаленому зловмиснику, який не пройшов перевірку автентичності, розкрити конфіденційну інформацію. В результаті неавторизовані користувачі можуть переглядати або запускати програми незаконно.

Жорстко закодовані криптографічні ключі подвиги

  • Кровоточить серце: Уразливість в OpenSSL, яка дозволяла зловмисникам зчитувати конфіденційні дані з пам'яті сервера, включаючи криптографічні ключі.

  • КРАК: Уразливість в протоколі WPA2, яка дозволяла зловмисникам перехоплювати і розшифровувати трафік Wi-Fi, включаючи трафік, зашифрований за допомогою жорстко закодованих криптографічних ключів.

  • ПОТОНУТИ: Уразливість в SSLv2, яка дозволяла зловмисникам розшифровувати зашифрований трафік, включаючи трафік, зашифрований за допомогою жорстко закодованих криптографічних ключів.

  • УРОД: Уразливість в SSL / TLS, яка дозволяла зловмисникам перехоплювати і розшифровувати трафік, зашифрований за допомогою слабкої криптографії експортного рівня, включаючи трафік, зашифрований за допомогою жорстко закодованих криптографічних ключів.

  • Затор: Уразливість в SSL / TLS, яка дозволила зловмисникам знизити рівень шифрування, що використовується в поєднанні TLS, що спростило злом зашифрованих даних і відновлення криптографічних ключів.

  • ПУДЕЛЬ: Уразливість в SSL / TLS, яка дозволяла зловмисникам розшифровувати трафік, зашифрований за допомогою SSLv3, включаючи трафік, зашифрований за допомогою жорстко закодованих криптографічних ключів.

  • РОКУ: Уразливість в реалізації алгоритму генерації пари ключів RSA, використовуваного в криптографічних чіпах, що дозволяє зловмисникам у деяких випадках обчислювати закритий ключ з відкритого ключа.

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

  • Хмарна Кров: Уразливість в CDN Cloudflare, яка дозволяла зловмисникам отримувати доступ до конфіденційних даних, включаючи криптографічні ключі, з декількох веб-сайтів.

  • Уразливість Intel AMT: Уразливість в технології Intel Active Management Technology (AMT), яка дозволяла зловмисникам обходити процес аутентифікації і отримувати віддалений доступ до системи, у тому числі до систем, що використовують жорстко закодовані криптографічні ключі для шифрування.

Практикуючись в тестуванні на Жорстко закодовані криптографічні ключі

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

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

  3. Використовуйте автоматичні інструменти, такі як OWASP ZAP або Burp Suite для сканування додатка або системи на наявність вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

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

  5. Спробуйте використовувати будь-які проблеми, пов'язані з жорстко закодованими криптографічними ключами, які були виявлені під час тестування.

  6. Документуйте будь уразливості і надайте рекомендації з усунення.

  7. Повторно протестуйте програму або систему після виправлення, щоб переконатися, що уразливості були усунені.

  8. Регулярно повторюйте процес тестування, щоб переконатися, що не з'явилися нові проблеми, пов'язані з жорстко закодованими криптографічними ключами.

Для вивчення жорстко закодованих криптографічних ключів

CWE-321: Сторінка уразливості з використанням жорстко закодованих криптографічних ключів на веб-сайті Common Weakness Enumeration (CWE) містить докладний опис уразливості та її наслідків.

Проект OWASP, що увійшов в десятку кращих є широко визнаним ресурсом безпеки веб-додатків і включає розділ про небезпечний криптографічному сховище, який охоплює використання жорстко закодованих криптографічних ключів.

Ресурсний центр комп'ютерної безпеки NIST надає обширну інформацію про криптографічних стандартах, кращих практиках та інструменти.

Криптографічний інженерія книга Брюс Шнайер, Нільс Фергюсон і Тадаєсі Коно - це всеосяжне керівництво з проектування і впровадження криптографічних систем, що включає розділ з управління ключами.

Курси криптографії I та II курсів на Coursera автор Dan Boneh - це високо оцінені онлайн-курси, які охоплюють основи сучасної криптографії.

Веб-сайт Cryptopals Crypto Challenges надає набір інтерактивних завдань, які охоплюють різні аспекти сучасної криптографії, включаючи використання жорстко закодованих криптографічних ключів.

Конференції Black Hat і DEF CON це щорічні конференції з безпеки, які включають в себе лекції та семінари з широкого кола питань безпеки, включаючи криптографію і тестування вразливостей.

Книги з оглядом жорстко закодованих криптографічних ключів

"Безпечне кодування на C та C ++" Роберт С. Сикорд – Ця книга містить рекомендації щодо методів безпечного кодування, включаючи відмову від використання жорстко закодованих криптографічних ключів.

"Основи злому і тестування на проникнення" автор: Патрік Энгебретсон – У цій книзі розглядаються основи тестування на проникнення вірусів, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

"Злом сірої капелюхи: керівництво етичного хакера" Аллен Харпер, Деніел Регаладо, Райан Лінн і Стівен Сімс – У цій книзі міститься докладна інформація про етичні методи злому, включаючи ідентифікацію та використання жорстко закодованих криптографічних ключів.

"Хакерство: мистецтво експлуатації" автор: Джон Еріксон – У цій книзі представлений всеосяжний огляд методів злому, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

"Black Hat Python: програмування на Python для хакерів і пентестеров" автор: Джастін Сейтц – У цій книзі представлена інформація про використання Python для злому і тестування на проникнення, включаючи ідентифікацію та використання жорстко закодованих криптографічних ключів.

"Заплутана мережа: керівництво по забезпеченню безпеки сучасних веб-додатків" Михайло Залевський – Ця книга містить інформацію про безпеки веб-додатків, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

"Тестування на проникнення: практичне введення у злом" автор Джорджія Вайдман – Ця книга являє собою практичне введення в тестування на проникнення вірусів, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

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

"The Hacker Playbook: Практичне керівництво з тестування на проникнення" Пітер Кім – Ця книга являє собою практичне керівництво з тестування на проникнення вірусів, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

"Безпека веб-додатків: керівництво для початківців" Брайан Салліван і Вінсент Лью – Ця книга являє собою введення в безпеку веб-додатків, включаючи виявлення та використання вразливостей, пов'язаних з жорстко закодованими криптографічними ключами.

Список корисних навантажень з жорстко закодованими криптографічними ключами

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

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

  • Закритий ключ сертифіката SSL/TLS: використовуються для захисту веб-трафіку шляхом шифрування переданих даних. Якщо виявлено жорстко закодований закритий ключ сертифіката SSL / TLS, зловмисник потенційно може використовувати його для розшифровки конфіденційної інформації, що передається по мережі.

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

  • Закритий ключ SSH: це протокол, який використовується для безпечного зв'язку та віддаленого доступу. Закритий ключ SSH використовується для аутентифікації користувача і встановлення безпечного з'єднання. Якщо виявлено жорстко закодований закритий ключ SSH, зловмисник потенційно може використовувати його для отримання несанкціонованого доступу до системи.

  • Ключі HMAC: це метод, використовуваний для перевірки цілісності та достовірності повідомлення. Ключ HMAC використовується для генерації HMAC, і якщо виявлено жорстко закодований ключ HMAC, зловмисник потенційно може використовувати його для підробки HMAC обходу заходів безпеки.

  • Секретні ключі HMAC: Секретні ключі HMAC використовуються для створення HMAC для аутентифікації повідомлень. Жорстко закодований секретний ключ HMAC може використовуватися для підробки HMAC обходу заходів безпеки.

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

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

  • Ключі API: використовуються для аутентифікації та авторизації доступу до веб-служб і API. Якщо виявлено жорстко закодований ключ API, зловмисник потенційно може використовувати його для отримання несанкціонованого доступу до відповідної веб-служби або API.

Як бути захищеним від жорстко закодованих криптографічних ключів

  1. Використовуйте безпечні методи кодування: Розробники повинні по можливості уникати жорсткого кодування криптографічних ключів у своєму коді. Замість цього ключі повинні генеруватися динамічно і надійно зберігатися.

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

  3. Регулярно оновлюйте програмне забезпечення та мікропрограми: Оновлення часто можуть включати виправлення безпеки, що усувають уразливості, в тому числі пов'язані з жорстко закодованими криптографічними ключами.

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

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

  6. Використовуйте надійні і унікальні паролі: Паролі повинні бути складними і унікальними для кожного облікового запису. Це може допомогти запобігти несанкціонований доступ, навіть якщо скомпрометований жорстко закодований криптографічний ключ.

  7. Реалізувати багатофакторну аутентифікацію: Багатофакторна аутентифікація додає додатковий рівень безпеки до процесу аутентифікації, ускладнюючи зловмисникам отримання несанкціонованого доступу до облікових записів або систем.

Заходи по пом'якшенню наслідків для жорстко закодованих криптографічних ключів

  1. Використовуйте системи керування ключами (KMS): Системи управління ключами забезпечують централізований спосіб управління та зберігання криптографічних ключів. Це допомагає гарантувати, що ключі не є жорстко запрограмованими, а замість цього генеруються динамічно і надійно зберігаються.

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

  3. Дотримуйтесь правил безпечного кодування: Розробники повинні слідувати методам безпечного кодування, наприклад, тим, які рекомендуються такими організаціями, як OWASP. Це включає в себе відмову від жорсткого кодування криптографічних ключів в коді і замість цього динамічну генерацію і безпечне зберігання ключів.

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

  5. Використовуйте безпечні протоколи зв'язку: Додатки повинні використовувати безпечні протоколи зв'язку, такі як HTTPS, для захисту переданих даних. Це може допомогти запобігти атаки типу "людина посередині", які можуть бути використані для перехоплення і крадіжки жорстко закодованих криптографічних ключів.

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

Висновок

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

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

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

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

Інші Послуги

Готові до безпеки?

зв'язатися з нами