🇰🇷 한글 설명
flightctl의 device-render 워커 내 configureRepoHTTPSClient() 함수에서 발생하는 레이스 컨디션 취약점입니다. 여러 조직의 저장소를 동시에 처리하는 과정에서 전역적으로 설정된 TLS 구성이 덮어씌워져, 한 테넌트의 보안 설정(InsecureSkipVerify 또는 mTLS 인증서 등)이 다른 테넌트의 Git 작업에 유출될 수 있습니다.
💡 쉬운 설명
여러 사용자가 동시에 서비스를 이용할 때, 한 사람의 보안 설정이 다른 사람에게 잘못 적용될 수 있는 오류입니다. 이로 인해 보안이 취약한 설정이 다른 사용자에게 전달되거나 인증 정보가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
A flaw was found in flightctl. The configureRepoHTTPSClient() function in the device-render worker builds a per-repository tls.Config (which may include InsecureSkipVerify, a custom CA bundle, or tenant-supplied mTLS client certificates) and installs it into go-git's process-global client.Protocols map via gitclient.InstallProtocol("https", ...). Because the worker renders devices for multiple organizations concurrently from a shared goroutine pool, whichever tenant's repository configuration is written last wins for all in-flight git.Clone calls.
This race condition can cause one tenant's TLS settings, including InsecureSkipVerify or mTLS client credentials, to leak into another tenant's git operations.
📍 영향받는 시스템
flightctl (device-render worker를 사용하는 버전)
⚔️ 공격 벡터
여러 테넌트가 동시에 Git 클론 작업을 수행할 때 발생하는 경합 상태를 이용한 설정 유출
🛡️ 대응 방법
전역 변수 대신 각 요청별로 독립적인 TLS 설정을 사용하도록 코드를 수정하고, 프로세스 전역의 client.Protocols 맵 수정을 방지해야 합니다.
🔧 검증 코드
출력된 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 제조사의 보안 권고안과 대조하십시오.