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. Тестирование пуха: Используйте инструменты автоматического нечеткого тестирования для проверки программного приложения или устройства на наличие уязвимостей, связанных с жестко запрограммированными ключами. Нечеткое тестирование включает в себя отправку больших объемов случайных данных в приложение или устройство, чтобы определить, как оно обрабатывает неожиданный ввод. Это может помочь выявить уязвимости, связанные с жестко запрограммированными ключами, такие как переполнение буфера или стека.

  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. Проводить регулярное тестирование безопасности: Регулярное тестирование безопасности, включая тестирование на проникновение, может помочь выявить уязвимости, в том числе жестко закодированные криптографические ключи, чтобы их можно было устранить до того, как они будут использованы.

Заключение

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

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

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

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

Другие Услуги

Готовы к безопасности?

Связаться с нами