🇰🇷 한글 설명
Go JOSE 라이브러리는 JWE, JWS, JWT 표준을 구현합니다. 4.1.5 이전 버전에서는 A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 암호화 알고리즘으로 신뢰할 수 없는 JWE 암호문을 복호화할 때, 빈 암호문 버퍼가 CBC-HMAC 패딩 제거 함수에 전달될 수 있습니다. 검증이 부족하여 빈 버퍼 인덱싱으로 패닉이 발생해 서비스 거부(DoS)가 일어날 수 있습니다. 이 문제는 4.1.5 버전에서 수정되었습니다.
💡 쉬운 설명
공격자가 조작한 특정 암호화 데이터를 서버가 해독하려고 하면 프로그램이 비정상 종료될 수 있습니다. 해당 라이브러리를 사용하는 서비스는 업데이트로 이 문제를 막을 수 있습니다.
🇺🇸 원문 (English)
Go JOSE provides an implementation of the Javascript Object Signing and Encryption set of standards in Go, including support for JSON Web Encryption (JWE), JSON Web Signature (JWS), and JSON Web Token (JWT) standards. Prior to 4.1.5, decrypting untrusted JWE ciphertext with A128CBC-HS256, A192CBC-HS384, or A256CBC-HS512 can pass an empty ciphertext buffer to CBC-HMAC unpadding. Insufficient validation allows the empty buffer to be indexed, causing a panic and denial of service. Applications that decrypt attacker-controlled ciphertext with one of these content-encryption algorithms are affected. This issue is fixed in version 4.1.5.
📍 영향받는 시스템
Go JOSE 라이브러리(go-jose) 4.1.5 미만 버전을 사용하며 공격자 제어 JWE 암호문을 복호화하는 애플리케이션
⚔️ 공격 벡터
공격자가 빈 암호문을 포함한 조작된 JWE 토큰을 전송하여 복호화 과정에서 패닉을 유발
🛡️ 대응 방법
go-jose 라이브러리를 4.1.5 이상 버전으로 업데이트하고 go.mod에서 버전을 확인합니다.
🔧 검증 코드
출력된 go-jose 버전이 4.1.5 미만이면 취약하므로 업데이트가 필요하고, 4.1.5 이상이면 패치된 상태입니다.
go list -m all 2>/dev/null | grep -i 'go-jose'