스캐너는 깨끗하게 나왔습니다. 할인 코드는 여전히 40번 작동했습니다.
결제 흐름에 대한 자동화된 보안 스캔 결과 SQL 인젝션이나 크로스 사이트 스크립팅과 같은 전통적인 취약점은 발견되지 않았습니다. 주니어 펜테스터는 스캐너의 결과를 바탕으로 이번 점검에서 중요한 발견 사항이 없다고 결론 내릴 준비가 되어 있었습니다. 그러나 팀원은 할인 코드 적용 엔드포인트가 주문 확인 후에도 코드를 무효화하지 않는다는 점을 발견했습니다. 이 설계 결함으로 인해 일회용 코드가 동시에 여러 번 사용될 수 있었습니다.동일한 요청을 동시에 전송함으로써 일회용 50% 할인 코드가 몇 초 만에 40번 사용되었습니다. 이러한 유형의 취약점인 경쟁 조건(race condition)은 코드 유효성 검사와 사용 표시 사이에 발생하는 간격으로 인해 발생합니다. 자동화된 스캐너는 요청을 순차적으로 테스트하고 동시적으로 테스트하지 않기 때문에 경쟁 조건을 탐지할 수 없습니다. 취약한 엔드포인트는 종종 쿠폰 사용 또는 자금 인출과 같이 "확인 후 실행" 패턴을 포함합니다.경쟁 조건을 악용하려면 네트워크 지터를 최소화하기 위해 요청을 단순히 빠르게가 아니라 동시에 전송해야 합니다. Burp의 race condition 탭 또는 Turbo Intruder와 같은 도구가 이 목적으로 설계되었습니다. 경쟁 조건의 증거는 성공적인 응답 코드뿐만 아니라 코드가 적용된 횟수와 같은 시스템의 최종 상태에 있습니다. 이러한 유형의 비즈니스 로직 결함은 스캐너에서 놓치기 쉬우며 동시 애플리케이션 동작에 대한 수동 조사가 필요합니다. Codelivly의 리소스와 랩은 자동화된 스캔 기능을 넘어서는 이러한 고급 취약점에 중점을 둡니다.