🇰🇷 한글 설명
Livebook Teams를 사용하는 Livebook 서버에서 배포 그룹이 삭제될 경우, 인증 상태를 제대로 확인하지 못하고 보안을 해제하는 'Fail Open' 취약점이 발견되었습니다. 이로 인해 인증되지 않은 네트워크 클라이언트가 서버에 대한 전체 권한을 획득하여 코드 실행 및 비밀 정보 탈취가 가능해집니다.
💡 쉬운 설명
서버가 관리 그룹 정보를 찾지 못했을 때, 접속을 차단하는 대신 '보안이 필요 없는 상태'로 잘못 판단하여 문을 열어주는 문제입니다. 이로 인해 아무나 서버에 들어와 중요한 데이터를 보거나 명령을 내릴 수 있습니다.
🇺🇸 원문 (English)
Not Failing Securely ('Failing Open') vulnerability in livebook-dev livebook allows an unauthenticated network client to obtain full access to a Livebook server that enforces identity through Livebook Teams.
A Livebook Agent or App Server connected to Livebook Teams caches the identifier of the deployment group it belongs to, and resolves that identifier against a locally cached list of deployment groups on every request in order to decide whether Teams identity enforcement is active. Livebook.Hubs.TeamClient.handle_call/3 in lib/livebook/hubs/team_client.ex does not distinguish a deployment group that could not be resolved from one that was resolved with identity enforcement switched off: the clause matches only the case where a group was found with enforcement enabled, and falls through to a catch-all that reports enforcement as switched off for everything else. The two neighbouring functions that decide user and application access resolve the same identifier and treat the same unresolved result as a denial.
When the identity status is reported as switched off, Livebook.ZTA.LivebookTeams.authenticate/3 in lib/livebook/zta/livebook_teams.ex returns empty identity metadata and allows the request to continue instead of halting it. LivebookWeb.UserPlug.build_current_user/3 merges that empty metadata into a newly built user, whose access type defaults to full access, and LivebookWeb.AuthPlug.authorized?/1 grants access to any user holding full access.
The cached identifier becomes unresolvable when the deployment group it refers to is deleted while the agent is not connected to receive the change, most concretely when a deployment group is deleted during the window in which an agent is disconnected or reconnecting. The client removes the group from its cached list without clearing the identifier that refers to it. Any client able to reach the affected server over the network is then granted the same access as a fully privileged member of the organisation, including the ability to read notebooks and configured secrets, execute code on the server's runtime, and disrupt its operation.
This issue affects livebook: from 0.19.7 before 0.19.9.
📍 영향받는 시스템
livebook: 0.19.7 미만 0.19.9 버전
⚔️ 공격 벡터
네트워크를 통해 접근 가능한 공격자가 배포 그룹이 삭제된 상태의 서버에 접속하여 인증 없이 전체 권한 획득
🛡️ 대응 방법
Livebook을 0.19.9 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 0.19.9보다 낮으면 취약한 상태입니다.
mix run -e "IO.inspect(Application.get_version())"
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
IBM Verify Identity Access