🔍 CVE-2023-48703

7.5
CVSS Score
HIGH
2024-03-06
2026-06-17 06:34
✅ 완료

🇰🇷 한글 설명

Go 언어로 작성된 SAML 클라이언트 라이브러리인 RobotsAndPencils/go-saml의 모든 버전에서 인증 우회 취약점이 발견되었습니다. 이는 내부적으로 사용하는 xmlsec1 도구가 서명 검증 시 공개 키의 출처를 제한하지 않아 발생하며, 공격자가 직접 서명한 SAML 어설션을 제공할 수 있습니다.

💡 쉬운 설명

로그인 확인 과정에서 사용하는 도구가 검증용 열쇠의 출처를 제대로 확인하지 않는 결함이 있습니다. 이로 인해 해커가 가짜 열쇠를 직접 만들어 보내더라도 시스템이 이를 진짜로 믿고 로그인을 허용할 수 있습니다.

🇺🇸 원문 (English)

RobotsAndPencils go-saml, a SAML client library written in Go, contains an authentication bypass vulnerability in all known versions. This is due to how the `xmlsec1` command line tool is called internally to verify the signature of SAML assertions. When `xmlsec1` is used without defining the enabled key data, the origin of the public key for the signature verification is, unfortunately, not restricted. That means an attacker can sign the SAML assertions themselves and provide the required public key (e.g. an RSA key) directly embedded in the SAML token. Projects still using RobotsAndPencils/go-saml should move to another SAML library or alternatively remove support for SAML from their projects. The vulnerability can likely temporarily be fixed by forking the go-saml project and adding the command line argument `--enabled-key-data` and specifying a value such as `x509` or `raw-x509-cert` when calling the `xmlsec1` binary in the verify function. Please note that this workaround must be carefully tested before it can be used.

📍 영향받는 시스템

RobotsAndPencils/go-saml (모든 알려진 버전)

⚔️ 공격 벡터

공격자가 임의의 공개 키를 포함하여 직접 서명한 조작된 SAML 토큰을 전송하여 인증을 우회함

🛡️ 대응 방법

다른 SAML 라이브러리로 교체하거나, xmlsec1 호출 시 --enabled-key-data 인자를 추가하여 공개 키 출처를 제한하도록 코드를 수정해야 함

🔧 검증 코드

명령어 결과에 go-saml 패키지가 나타나면 해당 라이브러리를 사용 중인 것이므로 취약할 수 있습니다.

Shell / Script
go list -m all | grep go-saml

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N