Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Binvariants — 레지스터 수준 불변성 기반 퍼징 프레임워크로, 클로즈드 소스 바이너리를 대상으로 가능성 있는 불변성 위반을 활용하여 바이너리 실행 파일에서 충돌 및 버그를 발견합니다. | Kitploit
도구/GitHubGitHub/futureslab/binvariants
Vulnerability AnalysisExploitationFuzzingBinary Analysis
GitHubfutureslab/binvariants

Binvariants

레지스터 수준 불변성 기반 퍼징 프레임워크로, 클로즈드 소스 바이너리를 대상으로 가능성 있는 불변성 위반을 활용하여 바이너리 실행 파일에서 충돌 및 버그를 발견합니다.

저장소 보기
511개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Binvariants: 레지스터 수준 불변 조건 기반 바이너리 퍼징

Binvariants logo

이 저장소는 Binvariants의 소스 코드를 제공합니다. 이는 바이너리 퍼징을 위해 레지스터 수준의 잠재적 불변 조건 위반을 활용하는 프로토타입 퍼징 프레임워크입니다.

본 연구는 2026 ACM 국제 소프트웨어 공학 기초 학회(FSE’26)에서 발표될 논문 Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants에서 소개되었습니다.

  • Binvariants 설치
  • Binvariants 사용
  • 추가 참고 사항
  • 버그 트로피 사례


Binvariants 워크플로
Binvariants 워크플로

이 저장소 인용: @inproceedings{yang:binvariants, title = {Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants}, author = {Zao Yang and Stefan Nagy}, year = {2026}, issue_date = {July 2026}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {FSE}, journal = {Proc. ACM Softw. Eng.}}
개발자:Zao Yang ([email protected]) 및 Stefan Nagy ([email protected])
라이선스:MIT 라이선스
면책 조항:이 소프트웨어는 어떠한 보증도 없이 제공됩니다.

Binvariants 설치

Binvariants는 AFL++ 및 QEMU-AFL 위에 구축되었습니다. Binvariants를 설정하기 전에 이 프로젝트들이 필요로 하는 종속성을 설치하십시오:

root@kitploit:~
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev
# try to install llvm-18 and install the distro default if that fails
sudo apt-get install -y lld-18 llvm-18 llvm-18-dev clang-18 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev
sudo apt-get install -y meson ninja-build # for QEMU mode

Binvariants는 두 가지 구성 요소로 구성됩니다:

  • 1-Invariant_Learner/
  • 2-Fuzzer/

각 구성 요소를 빌드하려면 해당 디렉터리로 이동하여 다음 명령을 실행하십시오:

root@kitploit:~
./1_patch.sh
./2_build.sh

Binvariants 사용

Example/에는 Binvariants를 사용하여 nconvert 바이너리를 퍼징하기 위한 예제 스크립트와 테스트 케이스가 포함되어 있습니다. 다른 바이너리를 퍼징하려면 스크립트를 수정할 수 있습니다.

설정

Binvariants를 사용하기 전에, 불변 조건 학습과 퍼징 간에 일관된 기본 블록 주소가 필요하므로 ASLR을 비활성화하십시오:

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

레지스터 수준 잠재적 불변 조건(RLI) 학습

불변 조건을 학습하려면 다음을 실행하십시오:

root@kitploit:~
./Example/1-learn_invs.sh [Binvariants_Root]

추론된 RLI는 1-learn_invs.sh의 BINV_TRACES_DIR에 지정된 디렉터리에 [PROGRAM]_trace_qemu_invs 이름으로 저장됩니다.

RLI를 사용한 퍼징

Binvariants로 퍼징을 시작하려면 다음을 실행하십시오:

root@kitploit:~
./Example/2-fuzz.sh [Binvariants_Root] [Fuzz_Time] [Trial_Number]

예를 들어, Binvariants 루트 디렉터리에서 48시간 퍼징 캠페인의 첫 번째 시도를 실행하려면:

root@kitploit:~
./Example/2-fuzz.sh $PWD 48h 1

추가 참고 사항

아래는 Binvariants에 대한 잠재적 개선 사항입니다.

적응형 불변 조건 학습

현재 Binvariants는 퍼징 전에 불변 조건을 학습한 후 별도로 퍼징을 실행합니다. 가능한 개선 사항은 퍼징 중에 불변 조건을 학습하고 위반이 발생할 때 업데이트하여 피드백이 시간이 지남에 따라 진화할 수 있도록 하는 것입니다.

가능한 설계 고려 사항:

  1. 나중에 충돌하거나 시간 초과되는 테스트 케이스 실행 중에 불변 조건이 업데이트되면, 업데이트를 되돌려야 할 수 있습니다. 실용적인 해결책은 불변 조건의 복사본에 업데이트를 적용하고 테스트 케이스가 정상적으로 완료(즉, FSRV_RUN_OK)된 경우에만 커밋하는 것입니다.
  2. 퍼징이 실행되고 불변 조건이 업데이트됨에 따라 위반이 자연스럽게 덜 빈번해집니다. 이로 인해 AFL++가 초기 단계 테스트 케이스(더 많은 위반을 유발하지만 덜 진화된 프로그램 상태를 나타냄)를 반복적으로 선택할 위험이 있습니다. 나중의 더 대표적인 테스트 케이스가 선택되도록 AFL++ 측에서 weight/perf_score/top_rated 조정이 필요할 수 있습니다.

교차 기본 블록 불변 조건

Binvariants는 현재 단일 블록 불변 조건에 초점을 맞추고 있습니다. 가능한 개선 사항은 교차 블록 불변 조건을 지원하는 것입니다. 이를 위해서는 블록 경계를 넘어 레지스터 값을 추적하는 새로운 데이터 구조와 제어가 블록 간에 전환될 때 위반을 확인하기 위한 추가 계측이 필요합니다.

버그 트로피 사례

Binvariants를 사용하여 다른 버그를 발견하시면 알려주십시오!

감사의 말

이 연구는 미국 국립과학재단(NSF) 시상 번호 2419798, 그리고 미국 국방고등연구계획국(DARPA) 시상 번호 FA8750-24-2-0002, 하위 시상 번호 GR105409-SUB00001384의 지원을 받았습니다.

도구 다운로드
프로그램보고된 버그
nconverthttps://newsgroup.xnview.com/viewtopic.php?t=49598
xls2csvhttps://github.com/vbwagner/catdoc/issues/6, https://github.com/vbwagner/catdoc/issues/7, https://github.com/vbwagner/catdoc/issues/8, https://github.com/vbwagner/catdoc/issues/9, https://github.com/vbwagner/catdoc/issues/10, https://github.com/vbwagner/catdoc/issues/11, https://github.com/vbwagner/catdoc/issues/12, https://github.com/vbwagner/catdoc/issues/13
gpmfhttps://github.com/gopro/gpmf-parser/issues/201, https://github.com/gopro/gpmf-parser/issues/202, https://github.com/gopro/gpmf-parser/issues/203
hdf5https://github.com/HDFGroup/hdf5/issues/5831, https://github.com/HDFGroup/hdf5/issues/5832, https://github.com/HDFGroup/hdf5/issues/5834
stormhttps://github.com/ladislav-zezula/StormLib/issues/397, https://github.com/ladislav-zezula/StormLib/issues/398
mp4splithttps://github.com/axiomatic-systems/Bento4/issues/1038, https://github.com/axiomatic-systems/Bento4/issues/1039
cpdfhttps://github.com/johnwhitington/camlpdf/issues/75
sfconverthttps://github.com/mpruett/audiofile/issues/73