위키득계정 ↗
기술

Atheris

Atheris기술
대상
Python 코드와 CPython 확장
기반
libFuzzer
Python 계측
바이트코드 계측
네이티브 검사 연계
AddressSanitizer와 UBSan
Atheris는 Python 코드와 CPython 네이티브 확장을 대상으로 하는 커버리지 유도 퍼징 엔진이다. libFuzzer를 기반으로 입력을 변형하고 실행 결과를 관찰한다.

입력 하나를 처리하는 함수

검사 대상에 데이터를 전달하는 함수를 준비하고 퍼징 엔진이 그 함수를 반복해서 호출하도록 연결한다. Python 코드에서 처리되지 않은 예외가 발생하면 실패로 보고한다. 예상된 입력 거부와 실제 결함을 구분하도록 테스트 함수를 설계해야 한다.

커버리지 계측의 범위

가져오는 모듈이나 개별 함수, 이미 로드된 함수에 계측을 적용할 수 있다. 정작 대상 코드까지 계측이 도달하지 않으면 유용한 탐색 피드백을 얻기 어렵다. 실행된 코드와 계측된 코드를 구분해 설정을 확인한다.

네이티브 확장과 결합

C 계열로 작성된 확장을 검사할 때는 메모리 오류 검사 도구를 함께 사용할 수 있다. 이 경우 Atheris에 포함된 libFuzzer와 컴파일러의 호환성을 맞춰야 할 수 있다. 순수 Python용 패키지 설치가 네이티브 계측 환경까지 자동으로 완성하는 것은 아니다.

관련 문서

CrossHair / Pynguin / FuzzTest / Fuzzilli