🇰🇷 한글 설명
GoBGP의 4.6.0 미만 버전에서 BGP OPEN 메시지의 기능(capability) 파싱 오류가 발견되었습니다. 특정 기능 디코더가 지정된 길이(CapLen)를 무시하고 전체 버퍼를 읽음으로써, 잘못된 형식의 메시지가 들어올 경우 다음 기능의 데이터를 현재 기능의 일부로 잘못 해석할 수 있습니다. 특히 4-octet AS 기능에서 길이가 0일 경우 다음 데이터가 AS 값으로 오인되어 BGP 세션 수립 시 AS 검증에 영향을 줄 수 있습니다.
💡 쉬운 설명
네트워크 연결 설정 과정에서 데이터의 길이를 잘못 계산하여, 뒤에 오는 데이터를 엉뚱한 정보로 착각하는 보안 결함입니다. 이로 인해 공격자가 가짜 네트워크 주소 정보를 주입하여 연결 과정을 방해하거나 조작할 수 있습니다.
🇺🇸 원문 (English)
GoBGP is an open source Border Gateway Protocol (BGP) implementation in the Go Programming Language. Versions prior to 4.6.0 contain a BGP OPEN capability parsing issue where several concrete capability decoders may parse data from the full remaining capability buffer instead of the slice bounded by the declared capability length, `CapLen`. A malformed BGP OPEN message can cause bytes from a following capability to be interpreted as part of the current capability. The most security-relevant case is the 4-octet AS capability, where a capability with `CapLen == 0` may cause the parser to read bytes from the following capability as the 4-octet AS value. This parsed value may later affect peer AS validation during BGP session establishment. Version 4.6.0 patches the issue.
📍 영향받는 시스템
GoBGP versions prior to 4.6.0
⚔️ 공격 벡터
조작된 BGP OPEN 메시지를 전송하여 파싱 오류 유도
🛡️ 대응 방법
GoBGP를 4.6.0 버전 이상으로 업데이트
🔧 검증 코드
출력된 GoBGP 버전이 4.6.0 미만인지 확인합니다.
go version && go list -m all | grep gobgp