SAML 인증 우회 취약점 (SAML Ignore Comments)
Weak Authentication due to SAML XML Comment Processing
설명
SAML(Security Assertion Markup Language)은 XML 기반의 인증 및 권한 부여 시스템입니다.
org.opensaml.xml.parse.BasicParserPool의 setIgnoreComments(false)를 호출하면, XML 문서 내의 주석(<!-- -->)을 처리하게 되어 공격자가 이를 악용하여 인증 우회를 시도할 수 있습니다.
특히, 공격자는 SAML 토큰 내의 Subject 또는 Username 필드를 주석을 삽입하여 분할할 수 있으며, 이로 인해 인증 검증이 우회될 수 있습니다.
잠재적 영향
인증 우회: SAML 토큰 내의 필드를 조작하여 특정 사용자로 인증될 수 있음.
권한 상승: 공격자가 다른 사용자의 세션을 가로채거나 관리자 계정으로 인증될 가능성이 있음.
SAML 변조 공격: 주석을 이용하여 서명되지 않은 SAML 어설션을 삽입할 수 있음.
해결 방법
XML 주석을 무시하도록 설정 유지 (
setIgnoreComments(true))BasicParserPool객체에서setIgnoreComments(false)를 호출하지 않도록 합니다.기본적으로
ignoreComments값은true이며, 이는 안전한 설정입니다.
SAML 토큰 검증 강화
XML Signature를 사용하여 변조 방지 검증을 수행합니다.서명된 어설션만 신뢰하고, 서명이 없는 경우 인증을 거부합니다.
정확한 사용자 검증 수행
SAML 응답에서 주석이 포함된 경우 무시하고, 명확한 사용자 식별 값을 사용합니다.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드:
setIgnoreComments(false)를 설정하면 XML 문서 내 주석이 처리되어 SAML 변조 공격이 가능해짐.
안전한 코드:
setIgnoreComments(true)를 유지하여 XML 주석을 무시함으로써 공격을 방지.
참조
Last updated