최근 공개된 'StateHunter'와 'AuditGuard'는 단일 페이지 애플리케이션(SPA) 보안 평가의 오랜 사각지대를 해소할 새로운 접근 방식을 제시합니다. 기존 웹 보안 도구들이 네트워크 트래픽 분석에 집중하며 놓쳤던 브라우저 내부의 동적인 상태와 숨겨진 경로들을 탐지하고, 이를 안전하게 검증하는 통합 솔루션입니다. 이는 현대 웹 애플리케이션의 복잡성 증가로 인해 발생했던 보안 공백을 메우는 중요한 진전으로 평가됩니다.
수십 년간 웹 보안 평가는 버프 스위트(Burp Suite)나 OWASP ZAP 같은 프록시 도구를 통해 브라우저와 서버 간의 HTTP 통신을 가로채는 방식이 주를 이뤘습니다. 하지만 리액트(React), 넥스트(Next.js), 뷰(Vue) 등으로 구축된 최신 SPA는 대부분의 로직과 상태를 클라이언트 브라우저 메모리 내에서 처리합니다. 이로 인해 네트워크 프록시로는 접근할 수 없는 세 가지 주요 사각지대가 발생했습니다. 첫째, 코드 분할(code-splitting)로 인해 일반 사용자가 접근하지 않는 관리자 페이지 같은 숨겨진 경로들이 자바스크립트 청크 내에 존재해도 프록시는 이를 인지하지 못합니다. 둘째, 리덕스(Redux)나 피니아(Pinia) 같은 반응형 상태 저장소에 임시 토큰이나 내부 API 키 같은 민감 정보가 저장되어도 네트워크에는 노출되지 않습니다. 셋째, `window.postMessage`를 통한 교차 출처 메시지 통신에서 발생하는 DOM 기반 XSS나 상태 오염 취약점도 네트워크 계층에서는 탐지하기 어렵습니다.
StateHunter는 크롬 개발자 도구(Chrome DevTools) 확장 프로그램으로, 매니페스트 V3(Manifest V3) 기반으로 동작하며 브라우저 런타임 내에서 클라이언트 측 자바스크립트 실행을 실시간으로 분석합니다. 이를 통해 난독화된 프로덕션 청크에서 숨겨진 경로를 역추적하고, `postMessage` 핸들러를 감사하며, 메모리 내의 민감한 상태와 고엔트로피(high-entropy) 키를 추출해냅니다. 이렇게 수집된 정보는 `scope.yaml` 파일로 내보내져 AuditGuard로 전달됩니다. AuditGuard는 이 `scope.yaml`을 기반으로 수학적 경계를 설정하고, 권한 매트릭스를 검증하며, IDOR(Insecure Direct Object Reference) 및 BOLA(Broken Object Level Authorization) 취약점을 탐지합니다. 또한, FIRST.org CVSS v3.1 점수 체계를 적용하여 발견된 취약점의 심각도를 평가하고, 암호화된 안전 항구(Safe Harbor) 방어 인증서를 생성하여 보안 평가의 책임 범위를 명확히 합니다. 이 두 도구의 연동은 발견부터 검증까지의 워크플로우를 자동화하여, 보안 전문가들이 기존에 접근하기 어려웠던 SPA의 내부 상태를 효과적으로 분석하고 안전하게 검증할 수 있도록 돕습니다. 이는 보안 평가의 정확성과 효율성을 크게 향상시키고, 잠재적인 법적 위험으로부터 연구자를 보호하는 데 기여할 것입니다.