🇰🇷 한글 설명
temporalio/sqlparser에서 MySQL 버전 주석이 비어 있거나 1~5자리의 숫자만 포함된 경우 패닉이 발생할 수 있는 취약점입니다. 공격자가 조작된 SQL을 제출하면 Go 런타임 패닉이 발생하여 서비스가 중단될 수 있으며, 특히 Temporal Server의 ListWorkers API가 활성화된 경우 인증된 사용자에 의해 서비스 거부(DoS) 공격이 가능합니다.
💡 쉬운 설명
특수하게 조작된 SQL 문구를 입력하면 프로그램이 갑자기 멈춰버리는 버그입니다. 이를 이용해 공격자가 서비스를 계속 중단시켜 정상적인 이용을 방해할 수 있습니다.
🇺🇸 원문 (English)
temporalio/sqlparser can panic when Parse, ParseStrictDDL, or ParseNext processes a MySQL version comment whose contents are empty or consist only of one to five decimal digits. ExtractMysqlComment does not check the -1 result returned by strings.IndexFunc before using it as a slice boundary. The resulting Go runtime panic propagates unless the caller recovers it on the parsing goroutine, so applications that parse attacker-controlled SQL can terminate. Temporal Server exposes the affected parser through ListWorkers. When that API is enabled, an authenticated caller with namespace read permission can submit a malformed query that terminates the receiving Matching process. Repeated requests can sustain a denial of service. The issue affects availability only; no confidentiality or integrity impact was identified.
📍 영향받는 시스템
temporalio/sqlparser 라이브러리를 사용하는 Temporal Server (ListWorkers API 활성화 시)
⚔️ 공격 벡터
인증된 사용자가 조작된 MySQL 버전 주석을 포함한 SQL 쿼리를 ListWorkers API를 통해 전송
🛡️ 대응 방법
sqlparser 라이브러리를 최신 패치 버전으로 업데이트하고, 불필요한 경우 ListWorkers API 접근 권한을 제한하십시오.
🔧 검증 코드
출력된 라이브러리 버전을 확인하여 취약점이 해결된 버전인지 대조하십시오.
go list -m temporalio/sqlparser
💻 영향받는 소프트웨어
IBM WebSphere Application Server