영향
누락된 보안 헤더는 클릭재킹, 크로스 사이트 스크립팅(XSS)을 수행하거나 서버 환경 [S2]에 대한 정보를 수집하는 데 악용될 수 있습니다. Content-Security-Policy(CSP) 또는 X-Frame-Options와 같은 헤더가 경로 전체에 일관되게 적용되는 경우 공격자는 보호되지 않은 특정 경로를 표적으로 삼아 사이트 전체 보안 제어 [S2]를 우회할 수 있습니다.
근본 원인
Next.js를 사용하면 개발자는 headers 속성 [S2]를 사용하여 next.config.js에서 응답 헤더를 구성할 수 있습니다. 이 구성은 와일드카드 및 정규식 [S2]를 지원하는 경로 일치를 사용합니다. 보안 취약점은 일반적으로 다음과 같은 이유로 발생합니다.
- 불완전한 경로 적용 범위: 와일드카드 패턴(예:
/path*)은 의도한 모든 하위 경로를 포함하지 않아 보안 헤더 [S2] 없이 중첩된 페이지를 남길 수 있습니다. - 정보 공개: 기본적으로 Next.js에는
X-Powered-By헤더가 포함될 수 있습니다. 이 헤더는poweredByHeader구성 [S2]를 통해 명시적으로 비활성화하지 않는 한 프레임워크 버전을 표시합니다. - CORS 잘못된 구성:
headers어레이 내에서Access-Control-Allow-Origin헤더를 부적절하게 정의하면 중요한 데이터 [S2]에 대한 출처 간 무단 액세스가 허용될 수 있습니다.
구체적인 수정
- 감사 경로 패턴:
next.config.js의 모든source패턴이 적절한 와일드카드(예:/:path*)를 사용하여 필요한 [S2]에 전역적으로 헤더를 적용하는지 확인하세요. - 핑거프린팅 비활성화:
X-Powered-By헤더가 [S2]로 전송되는 것을 방지하려면next.config.js에서poweredByHeader: false를 설정합니다. - CORS 제한:
headers구성 [S2]에서 와일드카드가 아닌 신뢰할 수 있는 특정 도메인으로Access-Control-Allow-Origin를 설정합니다.
FixVibe가 이를 테스트하는 방법
FixVibe는 애플리케이션을 크롤링하고 다양한 경로의 보안 헤더를 비교하여 활성 게이트 프로브를 수행할 수 있습니다. FixVibe는 다양한 경로 깊이에 걸쳐 X-Powered-By 헤더와 Content-Security-Policy의 일관성을 분석함으로써 next.config.js의 구성 격차를 식별할 수 있습니다.
