Closed caramel2312 closed 4 days ago
Назва ПЗ або програмної бібліотеки: OpenSSL (Версія: 3.0.4)
URL-посилання в інтернеті: https://github.com/openssl/openssl
Призначення ПЗ або програмної бібліотеки та приклади споживачів, які можуть бути зацікавлені у їх використанні:
OpenSSL — це широко використовувана бібліотека з відкритим вихідним кодом, яка надає інструменти та функції для реалізації криптографічних алгоритмів, шифрування, SSL/TLS протоколів. Її основна мета — забезпечення захищеного обміну даними через мережі, зокрема Інтернет.
Приклади споживачів OpenSSL:
Кому це потрібно:
У версії OpenSSL 3.0.4 була виявлена серйозна помилка в реалізації RSA для процесорів X86_64, які підтримують інструкції AVX512IFMA. Ця проблема призводить до некоректної роботи RSA з приватними ключами розміром 2048 біт на таких машинах, що викликає пошкодження пам’яті під час обчислень. Як наслідок, через це пошкодження пам’яті зловмисник може ініціювати виконання віддаленого коду на машині, яка виконує обчислення. Ця вразливість зачіпає SSL/TLS сервери або інші сервери, що використовують приватні RSA-ключі розміром 2048 біт і працюють на машинах із підтримкою інструкцій AVX512IFMA архітектури X86_64.
Уразливий програмний код можна знайти у секції логів із використанням AddressSanitizer, який повідомляє про переповнення буфера при роботі з RSA-приватними ключами. Компіляція OpenSSL з уразливою версією (3.0.4):
CFLAGS="-O3 -g -fsanitize=address" ./config
make
Повідомлення AddressSanitizer:
==481618==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c000089400 at pc 0x7f01e32a9509 bp 0x7fff643ec100 sp 0x7fff643ec0f8
READ of size 8 at 0x60c000089400 thread T0
#0 0x7f01e32a9508 in bn_select_words crypto/bn/rsaz_exp.h:64
#1 0x7f01e32a9508 in bn_reduce_once_in_place crypto/bn/rsaz_exp.h:74
#2 0x7f01e32a9508 in ossl_rsaz_mod_exp_avx512_x2 crypto/bn/rsaz_exp_x2.c:223
#3 0x7f01e3287dc8 in BN_mod_exp_mont_consttime_x2 crypto/bn/bn_exp.c:1448
#4 0x4042c3 in test_mod_exp_x2 test/exptest.c:260
#5 0x40611a in run_tests test/testutil/driver.c:370
Проблемний фрагмент коду:
crypto/bn/rsaz_exp.h:64
crypto/bn/rsaz_exp_x2.c:223
crypto/bn/bn_exp.c:1448
Згідно з логами, переповнення буфера сталося у функції bn_select_words
, яка знаходиться у файлі rsaz_exp.h
. Ця функція працює з неправильними вхідними даними, що спричиняє переповнення купи та порушення пам'яті.
ARІA (Advanced Encryption Standard – Replacement for International Applications). ARIA — це блоковий симетричний алгоритм шифрування, розроблений у 2003 році в Південній Кореї як альтернатива AES. Він працює з блоками даних розміром 128 біт і підтримує ключі довжиною 128, 192 або 256 біт. Використовується для забезпечення конфіденційності даних у різних міжнародних додатках.
128 біт — це довжина ключа шифрування в бітах.
CBC (Cipher Block Chaining) — це один із стандартних режимів роботи для блокових шифрів. У CBC кожен блок шифрується залежно від попереднього блоку, що додає випадковості та підвищує стійкість до аналізу. Для початкового блоку використовується IV (Initialization Vector) — випадкове значення, що забезпечує додаткову криптографічну стійкість. Режим CBC був запропонований у 1976 році.
Безпека:
Швидкість:
Міжнародний стандарт:
Підтримка довжини ключа:
Відносна невідомість:
Менша підтримка в програмному забезпеченні:
Не використовуваний у широкому масштабі:
Стійкість до патернів:
Простота реалізації:
Шифрування великих даних:
Популярність і підтримка:
Повільніший в порівнянні з іншими режимами:
Потребує IV (Initialization Vector):
Уразливість до атак на повтори:
Незахищеність від модифікації даних:
5
Варіант 29