🇰🇷 한글 설명
OpenFGA 1.18.0 미만 버전에서 MySQL을 데이터 저장소로 사용할 때 발생하는 취약점입니다. 대소문자를 구분해야 하는 사용자 문자열이 MySQL의 특성으로 인해 동일하게 취급되어, 서로 다른 권한 요청이 같은 결과를 반환할 수 있습니다.
💡 쉬운 설명
사용자 아이디의 대소문자를 구분하지 못해 발생하는 보안 문제입니다. 예를 들어 'Alice'와 'alice'를 같은 사람으로 착각하여 권한을 잘못 부여할 수 있습니다.
🇺🇸 원문 (English)
OpenFGA is an authorization/permission engine built for developers. Prior to 1.18.0, when MySQL is being used as the datastore and authorization decisions rely on case-sensitive user strings, the tuple, changelog, and authorization_model identifier columns can compare case-distinct values such as user:Alice and user:alice as equivalent, causing two distinct check requests to return the same response. This issue is fixed in 1.18.0.
📍 영향받는 시스템
OpenFGA 1.18.0 미만 버전 (MySQL 데이터 저장소 사용 시)
⚔️ 공격 벡터
대소문자가 다른 사용자 식별자를 사용하여 권한 검사 로직을 우회하거나 잘못된 권한을 획득함
🛡️ 대응 방법
OpenFGA를 1.18.0 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 결과가 VULNERABLE이면 취약한 버전이며, SAFE이면 안전한 버전입니다.
openfga version 2>/dev/null | grep -E 'v[0-9]+\.[0-9]+\.[0-9]+' | awk -F'v' '{print $2}' | awk -F'.' '{if ($1 < 1 || ($1 == 1 && $2 < 18)) print "VULNERABLE"; else print "SAFE"}'