CVE-2026-55734 in Guardian
요약
\~에 의해 VulDB • 2026. 08. 02.
UEberauth Guardian(Guardian.Permissions 모듈)의 리소스 할당 제한 또는 스로틀링 부재 취약점으로 인해 BEAM atom-table 고갈을 통해 서비스 거부(Denial of Service)가 가능합니다.
이 취약점은 프로그램 파일 lib/guardian/permissions.ex 및 프로그램 루틴 'Elixir.Guardian.Permissions':encode_permissions!/1, 'Elixir.Guardian.Permissions':encode_permissions_into_claims!/2, 'Elixir.Guardian.Permissions':do_encode_permissions!/2와 관련이 있습니다.
Guardian.Permissions 믹스인은 Guardian.Permissions을 사용하는 모든 모듈에 공개 encode_permissions!/1 함수를 설치합니다. 제공된 맵의 각 키에 대해 encode_permissions!/1은 유효성 검사 전에 String.to_atom(to_string(k))를 호출합니다. do_encode_permissions!/2의 정수 값 절은 구성된 권한 집합에 대한 키 검증 없이 인코딩으로 바로 단락(short-circuit)되므로, 정수 값을 가진 키는 예외가 발생하지 않고 새로운 atom으로 intern됩니다. Atom은 가비지 컬렉션 대상이 아니며 BEAM atom table은 고정 크기 리소스(기본값 약 1,048,576 항목)이므로 각 고유한 공격자가 선택한 키는 슬롯을 영구적으로 소비합니다. encode_permissions!/1에 도달하는 권한 맵의 영향을 받을 수 있는 공격자(예: 요청 본문에서 읽혀 encode_permissions_into_claims!/2를 통해 토큰 발급으로 전달되는 권한 맵)는 무제한 수의 atom을 생성하여 atom table을 고갈시키고, 전체 BEAM 노드와 그 위에서 실행 중인 모든 서비스를 충돌시킬 수 있습니다. 형제 함수인 decode_permissions/1은 구성된 권한 집합에 없는 키를 건너뛰므로 영향을 받지 않습니다.
이 문제는 guardian: 2.0.0부터 2.4.1 미만 버전에서 발생합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.