Автори : Вахірапан Charoenwet Патанамон Тонгтанунам Ван-Тхуан Пхам Christoph Treude Автори : Вахірапан Charoenwet Патанамон Тонгтанунам Ван-Тхуан Пхам Крістоф Треуде Table of links Стіл лівих Abstract абстрактні 1 Introduction 1 Введення 2 Background and Related Work 2 Базові та пов'язані з ними роботи Програмне забезпечення безпеки Код слабкості Безпека ліворуч Огляд сучасного кодексу Огляд коду для забезпечення програмного забезпечення Процес вирішення проблем безпеки в перегляді коду 3 Motivating Examples 3 Мотиваційні приклади 4 Case Study Design 4 Дизайн дослідження випадків Дослідницькі питання Проекти вивчення Збір даних Таксономія кодування слабкості Дослідження Overview Метод ідентифікації проблем безпеки (RQ1) Аналіз урахування відомих уразливостей (RQ2) Ідентифікація процесів обробки (RQ3) 5 Preliminary Analysis 5 Попередній аналіз PA1: Поширеність кодування коментарів слабкості PA2: Попередня оцінка нашого підходу до виявлення проблем безпеки 6 Case Study Results 6 Результати досліджень 7 Discussion 7 Дискусії 8 Threats to Validity 8 Загрози валидності Внутрішня дійсність Створення Validity Зовнішня дійсність Abstract абстрактні Однак розкриття проблем безпеки на ранньому етапі заохочується, щоб зменшити приховані негативні наслідки для систем програмного забезпечення. Перегляд коду є широко використовуваним методом, який дозволяє розробникам вручну перевіряти змінений код, виявляючи проблеми безпеки під час циклу розробки програмного забезпечення. Однак, існуючі дослідження перегляду коду часто зосереджуються на відомих уразливостях, нехтуючи недоліками кодування, які можуть ввести проблеми безпеки реального світу, які більш помітні за допомогою перегляду коду. Практика перегляду коду при виявленні таких недоліків кодування ще не повністю досліджена. Щоб краще зрозуміти це, ми провели емпіричне дослідження випадків у двох великих проектах з відкритим джерелом, OpenSSL і PHP. На основі 135,560 коментарів перегляду ко 1 Introduction Безпека програмного забезпечення є важливим акцентом у процесах розробки програмного забезпечення, оскільки вона охоплює те, як система програмного забезпечення підтримує зовнішні загрози (McGraw, 2004). Управління проблемами безпеки у програмних продуктах є вирішальним, тому що латентні проблеми безпеки, особливо експлуатована вразливість, можуть експоненційно впливати на кінцевих користувачів і вимагати більше ресурсів для вирішення, якщо вони були виявлені на пізньому етапі. Спробуючи пом'якшити проблеми безпеки, розробники заохочуються поточною концепцією змісту лівих (Migues, 2021; Weir et al., 2022) для тестування нового програмного забезпечення якомога раніше. У дусі змісту лівих, численні організації прийняли сучасний перегляд коду, діяльність забезпечення якості програмного забезпечення для ви Декілька досліджень досліджували переваги перевірки коду при виявленні проблем безпеки (Alfadel et al., 2023; Bosu et al., 2014; Di Biase et al., 2016; Edmundson et al., 2013; Paul et al., 2021b). Проте, проблеми безпеки, що вивчалися попередніми роботами, зазвичай обмежувалися типами відомих уразливостей, таких як SQL Injection і XSS. Зокрема, більшість досліджених проблем безпеки обмежуються уразливістю, яку можуть експлуатувати нападники. Оскільки перегляд коду зосереджується на виявленні та пом'якшенні проблем з кодуванням, ми припускаємо, що слабкості кодування, або недоліки в коді, які потенційно можуть призвести до проблем із безпекою, також можуть бути виявлені і Це включає в себе типи слабкостей кодування, які призводять до проблем безпеки, і процес вирішення цих слабкостей кодування. Крім того, мало відомо про те, чи виникають занепокоєння щодо безпеки під час перевірки коду у відповідності зі слабкостями, які могла мати система в минулому. Вивчення цих аспектів допоможе нам краще зрозуміти невизначені переваги розгляду слабкостей кодування під час перевірки коду для раннього запобігання проблемам безпеки програмного забезпечення. Таке розуміння також може розкрити прогалини між поточною практикою перевірки коду та слабкостями, які були відомі у відповідних системах. З одного боку, комп'ютерні команди могли б розробляти безпечні політики перевірки коду, які дозволяють їм більш ефектив У цій роботі ми прагнемо дослідити слабкості кодування, які були висунуті під час перегляду коду, і дослідити, як були опрацьовані коментарі коду, які згадували слабкості кодування. Ми провели наше дослідження випадків на OpenSSL і PHP, які є великими системами з відкритим джерелом, які схильні до проблем з безпекою. Ми вирішили вивчити ці явища в проектах з відкритим джерелом через наявність загальнодоступних наборів даних, обов'язкову політику перегляду коду та минулі слабкості вибраних проектів. Це рішення також випливає з спостереження, що результати перегляду коду в спільнотах з відкритим джерелом, такі як співвідношення функціональних дефектів і дефектів підтримки, виявлених рецен Тому ми провели емпіричне дослідження для вирішення трьох дослідницьких питань: (RQ1) Які типи проблем безпеки, пов'язаних з недоліками кодування, часто виникають у перегляді коду?, (RQ2) Як узгоджені висунуті проблеми безпеки та відомі недоліки?, і (RQ3) Як розглядаються проблеми безпеки у перегляді коду? Для цього ми застосували напівавтоматичний підхід до 135,560 коментарів до перегляду коду, щоб визначити категорії коментарів до перегляду коду, які пов'язані з недоліками кодування. Потім ми вручну анонсували типи недоліків кодування для 6,146 коментарів до перегляду коду, які пов'язані з недоліками кодування. Ми використовували таксономію Common Weakness Enumeration — CWE-6 Результати досліджень випадків показують, що слабкості кодування, пов'язані з 35 з 40 категорій в CWE-699 були висунуті під час процесу перегляду коду OpenSSL і PHP (RQ1). Наприклад, коментарі про слабкості кодування в аутентифікації, привілеї та API часто висувалися в обох досліджуваних проектах. Кожен досліджуваний проект також має унікальні слабкості кодування, висунуті під час перегляду коду, наприклад, безпосередні загрози безпеці в OpenSSL та валідації даних в PHP. Ці результати вказують на те, що різні слабкості кодування, які пов'язані з проблемами безпеки, були висунуті під час процесу перегляду коду, а різні програмні проекти мають різні зосереджені слаб У багатьох випадках (39%-41%), розробники намагалися вирішити проблеми. Проте, приблизно третина (30%-36%) висунутих слабкостей кодування були визнані лише без негайних виправлень (тобто ніяких додаткових змін до коду в оглядах). Ми спостерігали, що деякі з визнаних проблем були погоджені бути закріплені в нових окремих змінах коду (10%-18%) і деякі залишилися без виправлення через незгоду щодо правильного рішення (18%-20%). До речі, відносно невелика частка проблем, висунутих (14%-26%) була прояснена і відкинута через обговорення. З усіх сценаріїв ми виявили тривожні випадки (6-9%), де проблеми безпеки можуть бути введені в код, тому що зміни коду з невирішеною дискусією Виходячи з висновків, ми рекомендуємо проектам програмного забезпечення розглядати категорії слабкості кодування (тобто CWE-699) як керівництво для виявлення слабкостей кодування, які можуть запроваджувати проблеми безпеки в перевірках коду. Слабкості кодування можуть бути пріоритетовані на основі значущості, схильності та унікального набору слабкостей кодування, що виникають в попередніх перевірках коду. До кращого нашого знання, ця стаття є першою, яка емпірично досліджує перегляд коду для виявлення та пом'якшення слабкостей кодування, які пов'язані з проблемами безпеки, крім відомих уразливостей, підкреслюючи потенційні переваги перегляду коду для раннього запобігання потенційним проблемам безпеки. По-друге, ми представили новий напівавтоматичний підхід, який використовує домен-специфічну модель вбудовування слів для виявлення потенційних коментарів коду, пов'язаних з проблемами безпеки. По-третє, ми вивчили узгодження між відомими слабкостями в досліджуваних системах та слабкостями кодування, які часто виникають під час процесу перегляду коду, підкрес Novelty & Contributions: Ми випустили додатковий матеріал1 сценаріїв для отримання даних та аналізу даних у цьому дослідженні разом з анотованими даними для полегшення подальших досліджень. Data Availability: Розділ 3 демонструє приклади вразливостей, які були викликані слабкостями кодування. Розділ 4 пояснює дизайн тематичних досліджень. Розділ 5 пояснює метод початкового аналізу та результат. Розділ 6 повідомляє про результати. Розділ 7 обговорює наслідки та пропозиції. Розділ 8 уточнює загрози, які можуть вплинути на дійсність цього дослідження. Нарешті, Розділ 9 робить висновок. Paper Organization: Цей документ доступний на архіві під ліцензією CC by 4.0 Deed (Attribution 4.0 International). Цей документ доступний на архіві під ліцензією CC by 4.0 Deed (Attribution 4.0 International). Доступно в архіві