🇰🇷 한글 설명
Wire의 Swift 런타임에서 ProtoReader.skipGroup 함수가 알 수 없는 START_GROUP 필드 내의 LENGTH_DELIMITED 필드에 대해 음수 길이를 허용하는 취약점이 발견되었습니다. 이로 인해 음수 값이 Foundation Data로 전달되어 예외 처리가 불가능한 프로세스 트랩을 유발하며, 공격자가 조작된 protobuf 데이터를 전송할 경우 인증 없이 앱을 강제 종료시킬 수 있습니다.
💡 쉬운 설명
악의적으로 조작된 데이터를 보내면 앱이 오류를 처리하지 못하고 즉시 꺼져버리는 현상입니다. 사용자가 아무것도 하지 않아도 앱이 갑자기 종료될 수 있습니다.
🇺🇸 원문 (English)
Wire provides gRPC and protocol buffers for Android, Kotlin, Swift, and Java. Prior to 6.4.1 and 7.0.0-alpha04, Wire's Swift runtime ProtoReader.skipGroup(expectedEndTag:unknownFieldsWriter:) accepts a negative length for a LENGTH_DELIMITED field inside an unknown START_GROUP field. ProtoReader.readData() forwards the negative count to ReadBuffer.readData(count:), whose upper-bound-only check permits the value to reach Foundation Data(bytes:count:) and trigger an unrecoverable process trap instead of a catchable ProtoDecoder.Error. Any Swift process decoding untrusted protobuf bytes can be crashed without authentication, user interaction, or knowledge of the target schema. This issue is fixed in versions 6.4.1 and 7.0.0-alpha04.
📍 영향받는 시스템
Wire Swift runtime versions prior to 6.4.1 and 7.0.0-alpha04
⚔️ 공격 벡터
인증되지 않은 공격자가 조작된 protobuf 데이터를 전송하여 대상 Swift 프로세스를 강제 종료(DoS)시킴
🛡️ 대응 방법
Wire 라이브러리를 6.4.1 또는 7.0.0-alpha04 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 Wire 라이브러리의 버전이 6.4.1 미만이거나 7.0.0-alpha04 미만인지 확인하십시오.
swift package list | grep -E 'Wire'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
Microsoft Edge for Android