Park, Geon (re-st)

퍼징 연구 신뢰 확보는 통제된 실험환경에서부터

[essay] 2 min read

Abstract

퍼징 실험의 신뢰성과 재현성을 확보하기 위해서는 외부 변수를 모두 일정하게 통제하고 그 내용을 공개해야 한다. 여기에는 실험이 실행되는 장비 등 하드웨어뿐 아니라 실험이 돌아가는 가상환경도 포함된다. 연구자는 실험 환경이 결과에 미치는 영향을 이해해야 하며, 또한 실험이 시스템의 불확실한 요소에 방해를 받지 않게 섬세히 설계해야 한다.

본문

퍼징도 실험 연구이니만큼, 결과에 대해 타인에게 신뢰를 주기 위해서는 신뢰성과 재현성이 필요하다. 이는 외부 변인을 모두 제거했다는 근거와, 실험을 재현해 동일한 결과를 얻을 수 있는 충분한 정보를 제공하는 걸 뜻한다. 따라서 신뢰 받는 연구자는 이런 실험 환경을 일정하게 유지하기 위해 최선을 다한다.

실험 환경은 하드웨어와 가상환경 설정으로 구성된다. 하드웨어는 실험을 돌린 컴퓨터의 스펙 등으로 실행 속도, 병렬 처리 성능, 데이터 입출력 속도와 관계된다. 가상환경은 주로 도커 이미지로 제공되며, 외부 변수로부터 격리된 일관된 소프트웨어 환경을 제공한다. 가상환경을 쓰는 이유는 시스템 동작이나 네트워크 트래픽 등의 컴퓨터의 생리적 현상에서 실험을 분리하기 위해서이다. 가상환경을 만들 때는 실험 외의 프로세스를 최소한으로 해 퍼징에 할당되는 자원을 일정하게 유지해야 한다. 또한, 가상환경은 가능한 바로 받아볼 수 있는 이미지나 빌드 파일로 제공해야 한다.

이뿐 아니라 가상환경 생성 시에도 환경에 할당할 메모리와 스택 용량 등을 일정하게 설정해야 하는데, 이는 오류 발생 시간에 큰 영향을 미치기 때문이다.

또한, 오류를 흘려 보내지 않고 일관되게 탐지할 수 있도록 안전벨트 (sanitizer)를 사용하고, 트리아지 (오류 분류 규칙)를 명확히 공유해야 한다. 퍼징 실험에서는 보통 메모리 주소 안전벨트 (Address Sanitizer)를 사용하여 메모리 침범 오류 등을 감지한다. 보고된 오류가 원하는 유형인지 판단하는 트리아지도 타인이 쓸 수 있도록 명확하게 정의되어야 한다.

마지막으로, 여러 실험이 동시에 진행될 경우 자원 과사용을 피해야 한다. 시스템 전체에서 실험이 차지하는 자원이 많아 자원 경쟁이 발생하면 실험 결과가 왜곡될 수 있기 때문이다. 우리는 서버의 일부 코어만 퍼징에 할당하여 자원 충돌을 방지하고 있다.

이와 같이, 환경 통제는 퍼징 실험의 재현성을 높이는 핵심 요소이며, 이를 통해 실험 결과의 신뢰를 확보할 수 있다.

#Essay  #Weekly-Writing 

<< Previous Post

|

Next Post >>

← 뒤로