Skip to content

gym 코퍼스 퍼징 발견 엔진 — DoS 근본원인 클러스터링 (#4828) - #4829

Closed
kevin9327 wants to merge 1 commit into
edwardkim:develfrom
kevin9327:gym_fuzz_corpus_tool
Closed

gym 코퍼스 퍼징 발견 엔진 — DoS 근본원인 클러스터링 (#4828)#4829
kevin9327 wants to merge 1 commit into
edwardkim:develfrom
kevin9327:gym_fuzz_corpus_tool

Conversation

@kevin9327

Copy link
Copy Markdown
Contributor

gym 코퍼스 퍼징 발견 엔진 — DoS 를 근본원인별로 색출

robustness.py(#4814)는 릴리스 게이트(바운드·"패닉/행 0" 강제)다. 그 앞단의
발견 엔진이 없다 — 전 코퍼스를 여러 명령·여러 손상으로 exhaustive 하게 두들겨
아직 안 고쳐진 DoS 를 찾아 소스 위치별로 묶어주는 도구.

이 캠페인의 실제 DoS(렌더러/파서 오버플로·무한루프·스택 오버플로)는 전부 이런 병렬
퍼징으로 찾았다. 그 방법을 재사용 가능한 gym 도구로 정식화해, 어떤 에이전트든 돌려
새 DoS 를 발견→수정→(robustness 게이트가 회귀 차단)하게 한다.

제안

gym/tools/fuzz_corpus.py: 전 코퍼스 × 다명령(info·export-text·export-structure·
export-render-tree 기본, 지정 가능) × 결정적 변형(절단·플립·biglen)을 ThreadPoolExecutor
로 병렬 실행. 패닉을 panicked at file:line 로 클러스터(스택오버플로·어보트 별도),
무한루프를 timeout 으로 버킷. JSON/사람용 리포트. 바이너리-없는 가드 5건.

Done when

  • fuzz_corpus.py --bin <rhwp> 가 코퍼스를 병렬 퍼징해 고유 패닉 위치·행 클러스터를 낸다.
  • 가드(test_gym_fuzz_corpus.py)가 변형 결정성·분류·클러스터링을 바이너리 없이 시험, CI 등록.

robustness.py(edwardkim#4814)가 릴리스 게이트(바운드·패닉/행 0 강제)라면, fuzz_corpus.py는
그 앞단의 발견 엔진이다. 전 코퍼스 × 다명령 × 결정적 손상을 ThreadPoolExecutor로
병렬 퍼징해, 안 고쳐진 DoS를 소스 위치(file:line)별로 클러스터링한다.

- gym/tools/fuzz_corpus.py: 명령 지정(기본 info/export-text/export-structure/
  export-render-tree)·결정적 변형(절단·플립·biglen)·병렬·패닉 클러스터(스택오버플로·
  어보트 별도 버킷)·무한루프 timeout 버킷. JSON/사람용 리포트.
- 이 캠페인의 실제 DoS(렌더러·파서 오버플로·무한루프·스택오버플로)를 전부 이 방식으로
  발견했고, 그 방법을 재사용 가능한 도구로 정식화. 에이전트가 돌려 rhwp를 계속 경화.
- 가드: test_gym_fuzz_corpus(변형 결정성·분류·클러스터링, 바이너리 없이 목킹 5건),
  ci.yml 등록, gym/README 문서.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@jangster77

Copy link
Copy Markdown
Collaborator

통합 PR #4883(4412546)로 병합 완료했습니다.

원 head와 CI를 다시 확인해 누적 반영했고, 상세 검토·메인터너 보정·검증 근거는 archive 검토 기록에 남겼습니다.

중복 병합을 막기 위해 이 원 PR을 닫습니다. 감사합니다.

@jangster77 jangster77 closed this Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants