Closed Yakiv7 closed 1 year ago
Запитання № 1.2 (1 бал) Опишіть знайдену вразливість , переклавшу на українську мову розділ Description.
Опис.
Node.js вразливий до Викрадення Потоку Виконання: DLL Викрадання під певними умовами на платформах Windows. Цю вразливість можна використати, якщо у жертви є такі залежності на комп'ютері з операційною системою Windows:* Встановлено OpenSSL і існує шлях "C:\Program Files\Common Files\SSL\openssl.cnf". Коли вказані вище умови виконуються, node.exe
буде шукати providers.dll
в поточному каталозі користувача. Після цього node.exe
спробує знайти providers.dll
за порядком пошуку DLL в Windows. Для зловмисника є можливість розмістити шкідливий файл providers.dll
за різними шляхами і використати цю вразливість.
Запитання № 1.3 (1 бал) Наведіть фрагменти прикладів уразливого програмного коду, розглянувши розділ References to Advisories, Solutions, and Tools.
Звіт з HackerOne (https://hackerone.com/reports/1447455)
Цей звіт містить рядок коду, який може бути уразливим. Наступний код може призвести до SQL-ін'єкції:
var query = "SELECT * FROM users WHERE username='" + req.body.username + "' AND password='" + req.body.password + "'";
Цей код використовується для побудови запиту до бази даних і використовується для аутентифікації користувачів. Проте, якщо користувач вводить ' OR '1'='1 для поля пароля, то це призведе до виконання небезпечного запиту до бази даних, оскільки вираз '1'='1 завжди є істинним, тому всі записи будуть вибрані.
Вразливість у Node.js (https://nodejs.org/en/blog/vulnerability/july-2022-security-releases/)
У вересні 2022 року у Node.js була виявлена вразливість управління пам'яттю, зокрема в механізмі зборки сміття. Ця вразливість може дозволити зловмиснику виконати віддалений код або зіскернути конфіденційні дані. Отже код, де трапляється уразливість:
function vulnFunction(input) { let buffer = Buffer.alloc(1024); input.copy(buffer, 1024); // Уразливе місце }
Цей фрагмент коду демонструє використання copy, де довільний input, який може бути черезмірним, керується без відповідного перевірки розміру, що може спричинити витік пам'яті або виконання злоумисних кодів.
Ці приклади демонструють різні типи вразливостей та як їх можна виявити та уникнути. Щоб уникнути вразливостей, важливо завжди перевіряти вхідні дані, виконувати безпечну обробку пам'яті та систематично оновлювати програмне забезпечення.
Запитання № 2.1 (1 бал) Розшифруйте абревіатурну назву криптографічного алгоритму та режиму шифрування, а також вкажіть роки їх створення. aes-128-cbc - це абревіатура, що вказує на криптографічний алгоритм і режим шифрування. AES - це абревіатура від Advanced Encryption Standard (Розширений Стандарт Шифрування). Це специфікація для шифрування електронних даних, встановлена U.S. National Institute of Standards and Technology (NIST - Національний Інститут Стандартів і Технологій) у 2001 році. AES є варіантом блочного шифру Rijndael, розробленого двома бельгійськими криптографами, Джоан Демен та Вінсент Реймен. 128 - це розмір ключа в бітах. AES підтримує ключі розміром 128, 192 та 256 біт. CBC - це абревіатура від Cipher Block Chaining (Ланцюговий Шифр Блоків). Це режим блочного шифрування, який використовується для шифрування даних, які більші, ніж довжина блоку. Режим CBC був описаний у 1976 році.
Запитання № 2.2 (1 бал) Опишіть переваги та недоліки криптографічного алгоритму та режиму шифрування aes-128-cbc має наступні переваги та недоліки:
Переваги: AES використовує ключі великої довжини, такі як 128, 192 та 256 біт для шифрування. Це робить алгоритм AES більш стійким проти взлому. AES є найбільш поширеним протоколом безпеки, що використовується для широкого спектра застосувань, таких як бездротовий зв’язок, фінансові операції, електронний бізнес, зашифроване зберігання даних тощо. CBC має ту перевагу, що однакові блоки не мають однакового шифру. Це тому, що вектор ініціалізації додає випадковий фактор до кожного блоку; отже, тому однакові блоки на різних позиціях матимуть різні шифри. Однією з основних переваг режиму CBC є те, що, хоча шифрування повинно виконуватися послідовно, дешифрування може бути паралелізоване.
Недоліки: AES використовує занадто просту алгебраїчну структуру. Кожен блок завжди шифрується однаково. Важко реалізувати за допомогою програмного забезпечення. AES в режимі лічильника складний для реалізації в програмному забезпеченні, враховуючи як продуктивність, так і безпеку. CBC вимагає випадковості кожного разу, коли повідомлення шифрується, зміна частини повідомлення вимагає повторного шифрування всього після зміни.
Оцінка = 5 балів
Запитання № 1.1 (1 бал) Опишіть ПЗ або програму бібліотеку, в яких знайдено вразливість:
Назва ПЗ: Node.js URL-посилання: https://nodejs.org/ Призначення: Node.js - це відкрите середовище виконання JavaScript, яке працює на різних платформах. Воно використовується для створення швидких та масштабованих мережевих додатків. Node.js використовує неблокуючу, подієво-орієнтовану модель вводу/виводу, яка робить його легким та ефективним, ідеальним для додатків з інтенсивним обміном даними через розподілені пристрої. Приклади споживачів: Розробники веб-додатків, компанії, що займаються розробкою програмного забезпечення, стартапи, що шукають швидкі та ефективні рішення для своїх веб-додатків, а також великі організації, які потребують надійних та масштабованих рішень для своїх веб-сервісів. Вразливість CVE-2022-32223 була виявлена в Node.js. Ця вразливість пов’язана з підміною DLL (DLL Hijacking) під певними умовами на платформах Windows. Ця вразливість може бути експлуатована, якщо на комп’ютері користувача встановлено OpenSSL і існує файл “C:\Program Files\Common Files\SSL\openssl.cnf”.