소프트웨어 다양성

Software diversity

소프트웨어 다양성은 소프트웨어 맥락에서 다양성의 이해와 공학에 관한 연구 분야다.

지역들

소프트웨어 다양성의 다른 영역은 오류 허용[1] 또는 보안을 위한 다양성에 대한 조사에서 논의된다.[2][3]최근의 한 조사는 그 분야에서 가장 최근의 진보를 강조하고 있다.[4]

주요 영역은 다음과 같다.

도메인

소프트웨어는 대부분의 영역에서 다양화될 수 있다.

  • 임베디드 시스템 및 센서[6] 펌웨어로
  • 인터넷[7] 어플리케이션으로
  • 모바일 애플리케이션에서[8]
  • 브라우저 응용 프로그램(포함).WebAssembly를 사용하는 사용자.[9]

기술

코드 변환

합성 다양성을 만들어내는 자동화된 변환 프로세스를 통해 소프트웨어 다양성을 증폭시킬 수 있다."멀티콤필러"는 다양화 엔진을 내장한 컴파일러이다.[10]다변량 실행 환경(MVEE)은 출력을 실행하고 비교할 변종 선택을 담당한다.[11]

프레드 코헨은 그러한 접근법의 초기 발기인 중 한 명이었다.그는 다양한 버전의 운영 체제 기능을 대량으로 생산하는 것을 목표로 하는 일련의 재작성 및 코드 순서 변환을 제안했다.[12]이러한 아이디어들은 수년에 걸쳐 개발되어 대형 소프트웨어 시스템의 주요 기능을 보호하기 위한 통합 난독화 계획을 수립하게 되었다.[13]

소프트웨어 보호의 다양성을 높이기 위한 또 다른 접근방식은 메모리 로딩과 같은 특정 핵심 프로세스의 무작위성을 추가하는 것이다.무작위성은 동일한 프로그램의 모든 버전이 서로 다르게 실행되며, 이는 결국 다양한 프로그램 동작을 만들어 낸다는 것을 의미한다.이 아이디어는 처음에 스테파니 포레스트와 그녀의 동료들에 의해 제안되고 실험되었다.[14]

자동 소프트웨어 다양성에 관한 최근의 연구는 프로그램의 행동을 약간 변화시키는 다른 형태의 프로그램 변환을 탐구한다.목표는 하나의 프로그램을 사용자에게 유사한 서비스를 제공하지만 다른 코드를 가진 다양한 프로그램의 집단으로 진화시키는 것이다.[15][16]이러한 코드의 다양성은 모든 프로그램을 동시에 파괴할 수 있는 단일 공격으로부터 사용자 보호를 강화한다.

변환 연산자에는 다음이 포함된다.[17]

  • 코드 레이아웃 랜덤화: 코드에서 함수의 순서 변경
  • 전역 배치 랜덤화: 재순서 및 패드 전역
  • 스택 변수 랜덤화: 각 스택 프레임에서 변수 순서 변경
  • 힙 레이아웃 랜덤화

다양한 프로그램의 공간을 탐구하는 것은 계산적으로 비용이 많이 들기 때문에, 이 탐구를 수행하기 위한 효율적인 전략을 찾는 것이 중요하다.이를 위해 소프트웨어 코드에서 플라스틱 영역을 연구한 최근의 연구는 플라스틱 영역은 소프트웨어에서 제공하는 기능을 방해하지 않고 코드를 변경하기 더 쉽다는 것이다.[18]이들 지역은 기존 소프트웨어에 인위적인 다양성을 창출하기 위한 자동 코드 변환에 의해 구체적으로 표적이 될 수 있다.소프트웨어 다양성에 대한 검색을 제약 만족도 문제로 바꾸는 것은 프로그램 변형의 수와 이러한 변종의 코드 크기 사이의 절충을 탐구하는 또 다른 접근법이다.[19]정식 규격에서 코드가 자동으로 생성되는 상황에서, 모두 규격에 부합하는 소스 코드의 복수 버전 형태의 소프트웨어 다양성을 생성하도록 코드 생성기를 돌리는 것이 가능하다.[20]

천연 소프트웨어 다양성

일부 기능은 여러 개의 상호 교환 가능한 구현에서 이용할 수 있다고 알려져 있는데, 이를 천연 소프트웨어 다양성이라고 한다. 예를 [4]들어 유사한 기능을 구현하는 라이브러리의 다양성은 소프트웨어 저장소에 자연스럽게 나타난다.[21]이러한 자연적 다양성을 이용할 수 있으며, 예를 들어 클라우드 시스템의 보안을 강화하는 것이 가치 있는 것으로 나타났다.[22]자연적 다양성은 다른 도구의 장점을 결합하는 데도 사용될 수 있다. 예를 들어, 많은 디컴파일러를 결합하면, 결과적인 메타 디컴파일러가 더 효과적이다.[23]

참조

  1. ^ Deswarte, Y.; Kanoun, K.; Laprie, J.-C. (July 1998). Diversity against accidental and deliberate faults. Proceedings Computer Security, Dependability, and Assurance: From Needs to Solutions (Cat. No.98EX358). IEEE Comput. Soc. pp. 171–181. CiteSeerX 10.1.1.27.9420. doi:10.1109/csda.1998.798364. ISBN 978-0769503370. S2CID 5597924.
  2. ^ Knight, John C. (2011), "Diversity", Dependable and Historic Computing, Lecture Notes in Computer Science, vol. 6875, Springer Berlin Heidelberg, pp. 298–312, doi:10.1007/978-3-642-24541-1_23, ISBN 9783642245404
  3. ^ Just, James E.; Cornwell, Mark (2004-10-29). Review and analysis of synthetic diversity for breaking monocultures. ACM. pp. 23–32. CiteSeerX 10.1.1.76.3691. doi:10.1145/1029618.1029623. ISBN 978-1581139709. S2CID 358885.
  4. ^ a b Baudry, Benoit; Monperrus, Martin (2015-09-29). "The Multiple Facets of Software Diversity: Recent Developments in Year 2000 and Beyond". ACM Computing Surveys. 48 (1): 16. arXiv:1409.7324. doi:10.1145/2807593. ISSN 0360-0300. S2CID 215812499.
  5. ^ Schaefer, Ina; Rabiser, Rick; Clarke, Dave; Bettini, Lorenzo; Benavides, David; Botterweck, Goetz; Pathak, Animesh; Trujillo, Salvador; Villela, Karina (2012-07-28). "Software diversity: state of the art and perspectives". International Journal on Software Tools for Technology Transfer. 14 (5): 477–495. CiteSeerX 10.1.1.645.1960. doi:10.1007/s10009-012-0253-y. ISSN 1433-2779. S2CID 7347285.
  6. ^ Hosseinzadeh, Shohreh; Rauti, Sampsa; Hyrynsalmi, Sami; Leppanen, Ville (December 2015). Security in the Internet of Things through obfuscation and diversification. 2015 International Conference on Computing, Communication and Security (ICCCS). pp. 1–5. doi:10.1109/cccs.2015.7374189. ISBN 978-1-4673-9354-6. S2CID 9855649.
  7. ^ Allier, Simon; Barais, Olivier; Baudry, Benoit; Bourcier, Johann; Daubert, Erwan; Fleurey, Franck; Monperrus, Martin; Song, Hui; Tricoire, Maxime (January 2015). "Multitier Diversification in Web-Based Software Applications". IEEE Software. 32 (1): 83–90. doi:10.1109/ms.2014.150. S2CID 218184081.
  8. ^ Franz, Michael (21 September 2010). "E unibus pluram". E unibus pluram: massive-scale software diversity as a defense mechanism. pp. 7–16. doi:10.1145/1900546.1900550. ISBN 9781450304153. S2CID 7248879.
  9. ^ Cabrera Arteaga, Javier; Floros, Orestis; Vera Perez, Oscar; Baudry, Benoit; Monperrus, Martin (2021). "CROW: Code Diversification for WebAssembly" (PDF). Proceedings 2021 Workshop on Measurements, Attacks, and Defenses for the Web. Internet Society. arXiv:2008.07185. doi:10.14722/madweb.2021.23004. ISBN 978-1-891562-67-9.
  10. ^ "Protecting Applications with Automated Software Diversity". Galois, Inc. 2018-09-10. Retrieved 2019-02-12.
  11. ^ Coppens, Bart; De Sutter, Bjorn; Volckaert, Stijn (2018-03-01), "Multi-variant execution environments", The Continuing Arms Race: Code-Reuse Attacks and Defenses, ACM, pp. 211–258, doi:10.1145/3129743.3129752, ISBN 9781970001839
  12. ^ Cohen, Frederick B. (1993). "Operating system protection through program evolution" (PDF). Computers & Security. 12 (6): 565–584. doi:10.1016/0167-4048(93)90054-9. ISSN 0167-4048.
  13. ^ Chenxi Wang; Davidson, J.; Hill, J.; Knight, J. (2001). Protection of software-based survivability mechanisms (PDF). Proceedings International Conference on Dependable Systems and Networks. IEEE Comput. Soc. pp. 193–202. CiteSeerX 10.1.1.1.7416. doi:10.1109/dsn.2001.941405. ISBN 978-0769511016. S2CID 15860593.
  14. ^ Forrest, S.; Somayaji, A.; Ackley, D.H. (1997). Building diverse computer systems (PDF). Proceedings. The Sixth Workshop on Hot Topics in Operating Systems (Cat. No.97TB100133). IEEE Comput. Soc. Press. pp. 67–72. CiteSeerX 10.1.1.131.3961. doi:10.1109/hotos.1997.595185. ISBN 978-0818678349. S2CID 1332487.
  15. ^ Schulte, Eric; Fry, Zachary P.; Fast, Ethan; Weimer, Westley; Forrest, Stephanie (2013-07-28). "Software mutational robustness" (PDF). Genetic Programming and Evolvable Machines. 15 (3): 281–312. arXiv:1204.4224. doi:10.1007/s10710-013-9195-8. ISSN 1389-2576. S2CID 11520214.
  16. ^ Baudry, Benoit; Allier, Simon; Monperrus, Martin (2014-07-21). "Tailored source code transformations to synthesize computationally diverse program variants". Proceedings of the 2014 International Symposium on Software Testing and Analysis - ISSTA 2014. ACM. pp. 149–159. arXiv:1401.7635. doi:10.1145/2610384.2610415. ISBN 9781450326452. S2CID 215812773 – via HAL Open Science.
  17. ^ "Automated Software Diversity: Sometimes More Isn't Merrier". Galois, Inc. 2018-09-10. Retrieved 2019-02-12.
  18. ^ Harrand, Nicolas; Allier, Simon; Rodriguez-Cancio, Marcelino; Monperrus, Martin; Baudry, Benoit (2019-06-25). "A journey among Java neutral program variants". Genetic Programming and Evolvable Machines. 20 (4): 531–580. arXiv:1901.02533. doi:10.1007/s10710-019-09355-3. ISSN 1389-2576. S2CID 57759345.
  19. ^ Tsoupidi, Rodothea Myrsini; Castañeda Lozano, Roberto; Baudry, Benoit (2020), "Constraint-Based Software Diversification for Efficient Mitigation of Code-Reuse Attacks", Principles and Practice of Constraint Programming, Springer International Publishing, pp. 791–808, doi:10.1007/978-3-030-58475-7_46, ISBN 978-3-030-58474-0, retrieved 2021-08-18
  20. ^ Morin, Brice; Høgenes, Jakob; Song, Hui; Harrand, Nicolas; Baudry, Benoit (2018-10-14). "Engineering Software Diversity: a Model-Based Approach to Systematically Diversify Communications". Proceedings of the 21th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems. Copenhagen Denmark: ACM: 155–165. doi:10.1145/3239372.3239393. ISBN 978-1-4503-4949-9.
  21. ^ Soto-Valero, Cesar; Benelallam, Amine; Harrand, Nicolas; Barais, Olivier; Baudry, Benoit (May 2019). "The Emergence of Software Diversity in Maven Central". 2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR). Montreal, QC, Canada: IEEE: 333–343. arXiv:1903.05394. doi:10.1109/MSR.2019.00059. ISBN 978-1-7281-3412-3.
  22. ^ Gorbenko, Anatoliy; Kharchenko, Vyacheslav; Tarasyuk, Olga; Romanovsky, Alexander (2011), "Using Diversity in Cloud-Based Deployment Environment to Avoid Intrusions", Lecture Notes in Computer Science, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 145–155, doi:10.1007/978-3-642-24124-6_14, ISBN 978-3-642-24123-9
  23. ^ Harrand, Nicolas; Soto-Valero, César; Monperrus, Martin; Baudry, Benoit (2020). "Java decompiler diversity and its application to meta-decompilation". Journal of Systems and Software. 168: 110645. arXiv:2005.11315. doi:10.1016/j.jss.2020.110645. S2CID 218870447.