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