ruzzy은(는) 무엇을 하나요?
Ruzzy는 Trail of Bits에서 개발한 커버리지 기반 Ruby 퍼저입니다. 순수 Ruby 코드와 Ruby C 확장을 퍼징하는 데 사용됩니다.
설치
gem install ruzzy
또는 Bundler를 사용하는 경우 Gemfile에 추가:
gem 'ruzzy'
사용법
Ruzzy는 ruzzy CLI를 제공합니다. 기본적인 퍼징 워크플로는 다음과 같습니다:
- 퍼징 대상 함수를 정의하는 Ruby 파일을 만듭니다.
ruzzy명령어로 퍼징을 실행합니다.
예제: 문자열 파서 퍼징
# fuzz_target.rb
require 'ruzzy'
Ruzzy.fuzz do |data|
# 테스트하려는 코드 호출
MyParser.parse(data)
rescue => e
# 예외 발생 시 무시 (또는 기록)
end
ruzzy --target fuzz_target.rb --corpus ./corpus/
주요 기능
- 커버리지 가이드 퍼징: AFL 스타일의 엣지 커버리지를 사용하여 효율적으로 입력을 변형합니다.
- 순수 Ruby 퍼징: 별도의 C 확장 없이 Ruby 코드만으로 퍼징 가능.
- C 확장 퍼징: clang으로 컴파일된 네이티브 젬도 커버리지 계측 가능.
- 간단한 API:
Ruzzy.fuzz블록에 퍼징할 코드를 작성하고 CLI로 실행.
지원 환경
- Ruby 2.7 이상
- Linux, macOS (Windows는 현재 미지원)
- C 확장 퍼징을 위한 clang 컴파일러
자세한 정보
- GitHub 저장소
- 문서
- 라이선스: Apache-2.0