🇰🇷 한글 설명
Hoverfly의 Diff 모드에서 AddDiff() 함수가 동기화 메커니즘 없이 공유된 responsesDiff 맵에 데이터를 기록하여 발생하는 문제입니다. 여러 프록시 요청이 동시에 처리될 때 Go 언어의 경합 조건(Race Condition)이 발생하여 프로세스가 즉시 종료됩니다. 이는 다수의 동시 요청을 보냄으로써 쉽게 악용될 수 있습니다.
💡 쉬운 설명
여러 요청이 동시에 들어올 때 데이터를 저장하는 공간에 충돌이 발생하여 프로그램이 갑자기 꺼지는 문제입니다. 공격자가 의도적으로 많은 요청을 한꺼번에 보내 서비스가 멈추게 만들 수 있습니다.
🇺🇸 원문 (English)
Hoverfly is an open source API simulation tool. Prior to version 1.12.8, when Hoverfly is running in Diff mode, the `AddDiff()` function writes to the shared `responsesDiff` map without any synchronization (no mutex). When multiple proxy requests are processed concurrently (the normal case for any proxy), the concurrent map writes trigger Go's built-in race detector which causes a `fatal error: concurrent map read and map write`, immediately killing the entire Hoverfly process. This is trivially exploitable by sending multiple simultaneous requests. Version 1.12.8 patches the issue.
📍 영향받는 시스템
Hoverfly 1.12.8 미만 버전
⚔️ 공격 벡터
동시에 다수의 프록시 요청을 전송하여 경합 조건 유도
🛡️ 대응 방법
Hoverfly를 1.12.8 이상의 버전으로 업데이트
🔧 검증 코드
출력된 버전이 1.12.8 미만이면 취약한 상태이며, 1.12.8 이상이면 안전합니다.
hoverfly --version 2>/dev/null | grep -E '1\[\.(10|11|12)\.([0-9]|1[0-7])'