Software Immune System

Abstract

반복되는 오류의 패치 이식에 대한 연구가 패치 자동화 문제를 풀 수 있는 실마리를 쥐고 있다고 생각한다. 오늘날의 소프트웨어의 결함 처리 방식은 생물의 면역 체계와 차이점이 있다. 하지만 반복되는 오류의 패치 이식 아이디어는 생물의 면역체계와 닮아 있다. 따라서 소프트웨어 면역체계는 생물의 면역체계보다 훌륭한 해결책이 될 수 있는 여지가 있다고 생각한다.

I believe that research on the transplantation of patches for recurring errors holds the key to solving the problem of patch automation. The current approach to handling software defects differs from the biological immune system. However, the idea of transplanting patches for recurring errors is similar to the biological immune system. Therefore, I think that the software immune system has the potential to be a better solution than the biological immune system.


현재 진행하고 있는 반복되는 오류의 패치 이식에 대한 연구가 패치 자동화 문제를 풀 수 있는 실마리를 쥐고 있다고 생각한다. 컴퓨터 공학에서는 문제의 해결방안을 자연 법칙으로부터 찾는 경우가 많다. 폰 노이먼 구조, 유전 알고리즘, 신경망 이론 등이 이에 속한다. 지도 교수님께서 연구의 큰 목표 중 하나로 말씀해 주시는 소프트웨어의 면역체계 또한 이와 같은 문제 해결법 중에 하나라고 생각한다.

데이터 기반의 AI를 활용한 자동 코드 수정 기술의 상용화가 시작되었다. 최근 Github는 Copilot에 GPT의 기능을 탑재시킨 CopilotX를 출시하였다. CopilotX는 기존의 코드 생성 뿐만이 아닌 코드 관련 문답, 결함 발견, 코드 자동 수정 등의 기능을 추가로 가지고 있고 이와 같은 기능들 또한 상당히 높은 성능을 보여주며 개발자들로부터 호평을 받고있다. 또한 Qualys의 Travis Smith이 조사한 바에 따르면 현재 크롬과 윈도우에 적용된 데이터 기반 자동 패치 기술이 사람이 직접 디버깅 하는것보다 45\% 더 자주, 38\% 더 빠르게 취약점을 수정하는 것으로 밝혀졌다.

하지만 오늘날의 소프트웨어의 결함 처리 방식은 생물의 면역 체계와 차이점이 있다. 소프트웨어의 버그를 생물의 체내에 침투하는 병균이라 생각했을 때, 디버깅은 병균을 물리치는 메커니즘으로 볼 수 있다. 디버깅은 결함 발견, 재생산, 테스트, 코드 수정 등의 세분화된 과정을 포함한다. 오늘날 상용되는 데이터 기반의 AI 코드 수정 기술은 검증의 어려움이 있어 디버깅 과정을 완전 자동화 하는데에 한계가 존재한다. 반면에 인간의 면역 체계는 고성능의 완전 자동 항원 퇴치 메커니즘으로 항원 인식, 항원 제거, 항체 생성, 면역 형성의 과정을 거친다. 두 메커니즘은 자동화의 여부 뿐만 아니라 과정에 있어서도 큰 차이가 있다. 따라서 소프트웨어에 현존하는 결함을 수정하는 문제와 결함에 대한 궁극적인 방어체계를 만드는 문제는 다른 문제인 것이다.

반면에 반복되는 오류의 패치 이식과 입력 이식의 아이디어는 생물의 면역체계와 닮아 있다. 반복되는 오류의 특징을 밝혀내서 자동으로 패치를 이식하는 방식은 백혈구가 항원의 세포구조를 인식할 수 있도록 정보를 전달하는 것과 흡사하다. 병균이 계속해서 변이하는 것에 반해 대부분의 소프트웨어의 오류는 반복된다는 것을 생각했을때 소프트웨어 면역체계는 생물의 면역체계보다 훌륭한 해결책이 될 수 있는 여지가 있다고 생각한다.

I believe that ongoing research on the transplantation of patches for recurring errors holds the key to solving the problem of patch automation. In computer science, it is common to seek solutions to problems from natural laws. Examples include the von Neumann architecture, genetic algorithms, and neural network theory. I also consider the software immune system, which my advisor mentioned as one of the major goals of research, to be one of these problem-solving approaches.

The commercialization of AI-based automatic code correction using data has begun. Recently, GitHub released CopilotX, which incorporates the capabilities of GPT into Copilot. CopilotX not only generates code but also includes features such as code-related Q&A, defect discovery, and code auto-correction, all of which have shown impressive performance and received positive feedback from developers. Furthermore, according to Travis Smith of Qualys, data-driven automatic patching technology currently applied to Chrome and Windows fixes vulnerabilities 45% more frequently and 38% faster than manual debugging.

However, the current approach to handling software defects differs from the biological immune system. If we consider software bugs as pathogens infiltrating a biological organism, debugging can be seen as the mechanism to defeat those pathogens. Debugging involves processes such as defect discovery, reproduction, testing, and code modification. Commercial data-driven AI code correction technologies currently available face difficulties in verification, limiting their ability to fully automate the debugging process. In contrast, the human immune system undergoes a process of high-performance complete antigen elimination, including antigen recognition, antigen removal, antibody generation, and immune system formation. The two mechanisms not only differ in terms of automation but also in the nature of the processes involved. Therefore, addressing the problem of fixing existing software defects and creating an ultimate defense system against defects are different challenges.

On the other hand, the ideas of patch transplantation for recurring errors and input transplantation are similar to the biological immune system. Automatically transplanting patches by identifying the characteristics of recurring errors is analogous to white blood cells conveying information to recognize the cellular structure of antigens. Considering that most software errors are repetitive, unlike pathogens that continually mutate, I believe that the software immune system has the potential to be a better solution than the biological immune system.