Atheris, Python 코드 테스트 툴킷

Google 공개 최근 출시 Atheris 프로젝트, 이는 오픈 소스 도구 세트 전문화 파이썬 코드 퍼징 테스트 용 C / C ++로 작성된 CPython 용 확장.

프로젝트 libFuzzer 기반 엔진 사용 Address Sanitizer 및 Undefined Behavior Sanitizer 도구와 함께 사용하여 추가 오류를 감지 할 수 있습니다. 코드는 Apache 2.0 라이선스에 따라 열려 있습니다.

Google Atheris 정보

Google Atheris의 말에 따르면 Python 코드 및 기본 확장에서 오류를 자동으로 찾는 데 사용할 수있는 툴킷입니다. Atheris는 '커버리지 중심'퍼저입니다. 즉, Atheris는 프로그램이 실행되는 것을보고 흥미로운 경로를 찾는 동안 프로그램에 대한 다양한 입력을 반복적으로 시도합니다.

Python 2.7 및 Python 3.3+에 대한 코드 검토가 지원됩니다., 그러나 완전한 안내를 위해 opcode로 opcode 통계를 지원하는 Python 3.8 및 3.9 브랜치를 사용하는 것이 좋습니다.

진행중, Atheris는 입력 데이터의 가능한 조합을 나열하고 보고서를 생성합니다. 감지 된 모든 결함 및 감지되지 않은 예외에 대해

예를 들어 Atheris에서 YAML 구문 분석 라이브러리를 확인할 때 정수 값 대신 "-_"를 지정하거나 키 대신 목록을 사용하는 것과 같은 일부 YAML 구문이 YAMLErrors 표준 오류입니다.

퍼즈 테스트는 프로그래밍 오류를 발견하는 잘 알려진 기술입니다. 이러한 감지 가능한 오류 중 다수는 심각한 보안 문제를 가지고 있습니다. Google은이 기술을 사용할 때 수천 개의 보안 취약점과 기타 버그를 발견했습니다. 퍼징은 전통적으로 C 또는 C ++와 같은 모국어로 사용되지만 작년에 새로운 Python 퍼징 엔진을 만들었습니다. 오늘 우리는 Atheris 퍼징 엔진을 오픈 소스로 출시했습니다.

아테리스 행동의 차이를 식별하는 데 사용할 수도 있습니다. 동일한 작업을 대상으로하는 라이브러리. 예를 들어, 국제화 된 도메인 이름을 디코딩하는 작업을 수행하는 Python 패키지 "idna"및 라이브러리 "libidn2"의 요약 검사에서 항상 동일한 결과를 생성하지 않는 것으로 나타났습니다.

Atheris의 가장 좋은 용도 중 하나는 차동 디퓨저입니다. 이들은 동일한 작업을 수행하는 두 라이브러리의 동작에서 차이점을 찾는 퍼저입니다. Atheris와 함께 번들로 제공되는 예제 fuzzer 중 하나는 Python의 "idna"패키지를 C "libidn2"패키지와 비교하기 위해 정확히이 작업을 수행합니다.

특히 도메인이 유니 코드 시퀀스를 사용하는 경우 "idna"및 "libidn2"는 국제화 된 도메인 이름을 다른 호스트로 변환합니다.

일반적으로 Atheris는 "올바른"동작을 표현하거나 적어도 어떤 동작이 정확하지 않은지 표현하는 방법이있는 한 순수 Python 코드에서 유용합니다. 이는 라이브러리 출력의 정확성을 평가하는 퍼 저의 사용자 지정 코드만큼 복잡 할 수도 있고 예상치 못한 예외가 발생하지 않았는지 확인하는 것처럼 간단 할 수도 있습니다.

다음 사항을 고려하는 것이 중요합니다. 퍼징 테스트는 입력 데이터의 모든 종류의 임의 조합 스트림을 생성합니다. 실제 데이터에 가깝게 (예 : 임의의 태그 매개 변수가있는 html 페이지, 비정상적인 제목이있는 파일 또는 이미지 등) 프로세스에서 가능한 결함을 수정합니다.

시퀀스로 인해 예외가 발생하거나 예상 응답과 일치하지 않는 경우이 동작은 버그 또는 취약성을 나타낼 가능성이 높습니다.

마지막으로 언급했듯이 Atheris는 버전 2.7 및 3.3 이상에서 Python 코드로 작동합니다. Google은 CPython 용으로 작성된 3.8 이상 및 기본 확장을 사용하는 것이 좋습니다.

Windows는 아직 지원되는 운영 체제가 아닙니다., 따라서 엔진은 현재 Linux 및 Mac OS X 사용자에게만 관심이 있습니다.

이러한 플랫폼에서 사용하려면 개발자는 최신 버전의 Clang 컴파일러 프런트 엔드가 설치되어 있어야합니다.

그것에 대해 더 알고 싶다면에서 원본 메모를 확인할 수 있습니다. 다음 링크.


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.