Разнообразие программного обеспечения - Software diversity

Разнообразие программного обеспечения это область исследований, посвященная пониманию и разработке разнообразия в контексте программного обеспечения.

Области

Различные области разнообразия программного обеспечения обсуждаются в обзорах разнообразия для обеспечения отказоустойчивости.[1] или для безопасности.[2][3] В недавнем обзоре делается акцент на последних достижениях в этой области.[4]

Основные направления:

Домены

Программное обеспечение можно диверсифицировать в большинстве областей:

  • в прошивке встроенных систем и датчиков[6]
  • в интернет-приложениях[7]
  • в мобильных приложениях[8]

Методы

Преобразования кода

Разнообразие программного обеспечения можно увеличить за счет автоматизированных процессов преобразования, которые создают синтетическое разнообразие. «Мультикомпилятор» - это компилятор, встраивающий механизм диверсификации.[9] Многовариантная среда выполнения (MVEE) отвечает за выбор варианта выполнения и сравнение результатов.[10]

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

Другой подход к увеличению разнообразия защиты программного обеспечения заключается в добавлении случайности в определенные основные процессы, такие как загрузка памяти. Случайность означает, что все версии одной и той же программы работают по-разному, что, в свою очередь, приводит к разнообразию поведения программы. Первоначально эта идея была предложена и опробована Стефани Форрест и ее коллегами.[13]

Недавняя работа по автоматическому разнообразию программного обеспечения исследует различные формы программных преобразований, которые незначительно изменяют поведение программ. Цель состоит в том, чтобы превратить одну программу в совокупность разнообразных программ, которые все предоставляют пользователям одинаковые услуги, но с другим кодом.[14][15] Такое разнообразие кода усиливает защиту пользователей от одной атаки, которая может привести к сбою всех программ одновременно.

Операторы преобразования включают:[16]

  • рандомизация макета кода: изменение порядка функций в коде
  • рандомизация макета глобалов: переупорядочивание и добавление глобалов
  • рандомизация переменных стека: переупорядочивание переменных в каждом кадре стека
  • рандомизация компоновки кучи

Поскольку исследование пространства разнообразных программ требует больших вычислительных ресурсов, важно найти эффективные стратегии для проведения этого исследования. Для этого в недавней работе изучаются пластиковые области в программном коде.[17]: пластиковые области - это те части кода, которые более восприимчивы к изменению без нарушения функций, обеспечиваемых частью программного обеспечения. Эти области могут быть специально нацелены на автоматическое преобразование кода для создания искусственного разнообразия в существующем программном обеспечении.

Естественное разнообразие программного обеспечения

Известно, что некоторые функции доступны в нескольких взаимозаменяемых реализациях, это было названо естественным разнообразием программного обеспечения.[4] Это естественное разнообразие можно использовать, например, было показано, что оно полезно для повышения безопасности в облачные системы.[18] Естественное разнообразие также можно использовать для объединения сильных сторон разных инструментов: например, если вы объедините вместе несколько декомпиляторов, полученный метадекомпилятор будет более эффективным.[19]

Рекомендации

  1. ^ Deswarte, Y .; Kanoun, K .; Лапри, Ж.-К. (Июль 1998 г.). Разнообразие против случайных и преднамеренных неисправностей. Труды Компьютерная безопасность, надежность и гарантии: от потребностей к решениям (Кат. № 98EX358). IEEE Comput. Soc. С. 171–181. CiteSeerX  10.1.1.27.9420. Дои:10.1109 / csda.1998.798364. ISBN  978-0769503370. S2CID  5597924.
  2. ^ Найт, Джон С. (2011), «Разнообразие», Надежные и исторические вычисления, Конспект лекций по информатике, 6875, Springer Berlin Heidelberg, стр. 298–312, Дои:10.1007/978-3-642-24541-1_23, ISBN  9783642245404
  3. ^ Просто, Джеймс Э .; Корнуэлл, Марк (2004-10-29). Обзор и анализ синтетического разнообразия для разрушения монокультур. ACM. С. 23–32. CiteSeerX  10.1.1.76.3691. Дои:10.1145/1029618.1029623. ISBN  978-1581139709. S2CID  358885.
  4. ^ а б Бодри, Бенуа; Монперрус, Мартин (2015-09-29). «Множественные аспекты разнообразия программного обеспечения: последние разработки в 2000 году и в последующий период». Опросы ACM Computing. 48 (1): 16. arXiv:1409.7324. Дои:10.1145/2807593. ISSN  0360-0300. S2CID  215812499.
  5. ^ Шефер, Инна; Рабизер, Рик; Кларк, Дэйв; Беттини, Лоренцо; Бенавидес, Дэвид; Боттервек, Гетц; Патхак, Анимеш; Трухильо, Сальвадор; Виллела, Карина (28.07.2012). «Разнообразие программного обеспечения: современное состояние и перспективы». Международный журнал программных средств для передачи технологий. 14 (5): 477–495. CiteSeerX  10.1.1.645.1960. Дои:10.1007 / s10009-012-0253-у. ISSN  1433-2779. S2CID  7347285.
  6. ^ Хоссейнзаде, Шохре; Раути, Сампса; Хюрынсалми (саами); Леппанен, Вилле (декабрь 2015 г.). Безопасность в Интернете вещей за счет обфускации и диверсификации. 2015 Международная конференция по вычислениям, связи и безопасности (ICCCS). С. 1–5. Дои:10.1109 / cccs.2015.7374189. ISBN  978-1-4673-9354-6. S2CID  9855649.
  7. ^ Альер, Саймон; Баре, Оливье; Бодри, Бенуа; Бурсье, Иоганн; Даубер, Эрван; Флёри, Франк; Монперрус, Мартин; Песня, Хуэй; Трикуар, Максим (январь 2015). «Многоуровневая диверсификация веб-приложений». Программное обеспечение IEEE. 32 (1): 83–90. Дои:10.1109 / мс.2014.150. S2CID  218184081.
  8. ^ Франц, Майкл (21 сентября 2010 г.). «Е юнибус плюрам». E unibus pluram: массовое разнообразие программного обеспечения как защитный механизм. С. 7–16. Дои:10.1145/1900546.1900550. ISBN  9781450304153. S2CID  7248879.
  9. ^ «Защита приложений с помощью автоматизированного разнообразия программного обеспечения». Galois, Inc. 2018-09-10. Получено 2019-02-12.
  10. ^ Коппенс, Барт; Де Саттер, Бьорн; Volckaert, Stijn (2018-03-01), "Многовариантные среды исполнения", Продолжающаяся гонка вооружений: атаки и защита с повторным использованием кода, ACM, стр. 211–258, Дои:10.1145/3129743.3129752, ISBN  9781970001839
  11. ^ Коэн, Фредерик Б. (1993). «Защита операционной системы посредством эволюции программы» (PDF). Компьютеры и безопасность. 12 (6): 565–584. Дои:10.1016/0167-4048(93)90054-9. ISSN  0167-4048.
  12. ^ Чэньси Ван; Davidson, J .; Hill, J .; Найт, Дж. (2001). Защита программных механизмов живучести (PDF). Труды Международной конференции по надежным системам и сетям. IEEE Comput. Soc. С. 193–202. CiteSeerX  10.1.1.1.7416. Дои:10.1109 / dsn.2001.941405. ISBN  978-0769511016. S2CID  15860593.
  13. ^ Форрест, S .; Somayaji, A .; Экли, Д. Х. (1997). Создание разнообразных компьютерных систем (PDF). Ход работы. Шестой семинар по горячим темам в операционных системах (Кат. № 97TB100133). IEEE Comput. Soc. Нажмите. С. 67–72. CiteSeerX  10.1.1.131.3961. Дои:10.1109 / фото.1997.595185. ISBN  978-0818678349. S2CID  1332487.
  14. ^ Шульте, Эрик; Фрай, Захари П .; Быстро, Итан; Веймер, Уэстли; Форрест, Стефани (2013-07-28). «Мутационная устойчивость программного обеспечения» (PDF). Генетическое программирование и эволюционирующие машины. 15 (3): 281–312. arXiv:1204.4224. Дои:10.1007 / s10710-013-9195-8. ISSN  1389-2576. S2CID  11520214.
  15. ^ Бодри, Бенуа; Альер, Саймон; Монперрус, Мартин (21.07.2014). Материалы Международного симпозиума 2014 года по тестированию и анализу программного обеспечения - ISSTA 2014. ACM. С. 149–159. arXiv:1401.7635. Дои:10.1145/2610384.2610415. ISBN  9781450326452. S2CID  215812773. Сложить резюме.
  16. ^ «Разнообразие автоматизированного программного обеспечения: иногда лучше не бывает». Galois, Inc. 2018-09-10. Получено 2019-02-12.
  17. ^ Харранд, Николас; Альер, Саймон; Родригес-Кансио, Марселино; Монперрус, Мартин; Бодри, Бенуа (25.06.2019). «Путешествие среди нейтральных вариантов Java-программ». Генетическое программирование и эволюционирующие машины. 20 (4): 531–580. arXiv:1901.02533. Дои:10.1007 / s10710-019-09355-3. ISSN  1389-2576. S2CID  57759345.
  18. ^ Горбенко, Анатолий; Харченко, Вячеслав; Тарасюк, Ольга; Романовский, Александр (2011), «Использование разнообразия в облачной среде развертывания для предотвращения вторжений», Конспект лекций по информатике, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 145–155, Дои:10.1007/978-3-642-24124-6_14, ISBN  978-3-642-24123-9
  19. ^ Харранд, Николас; Сото-Валеро, Сезар; Монперрус, Мартин; Бодри, Бенуа (2020). «Разнообразие декомпиляторов Java и их применение в метадекомпиляции». Журнал систем и программного обеспечения. 168: 110645. arXiv:2005.11315. Дои:10.1016 / j.jss.2020.110645. S2CID  218870447.