🇰🇷 한글 설명
Linux 커널의 net: bridge: mrp 모듈에서 MRP 테스트 프레임을 생성할 때 초기화되지 않은 바이트가 포함되는 취약점이 발견되었습니다. br_mrp_alloc_test_skb() 함수가 skb의 특정 영역을 명확히 초기화하지 않아, MRA MRP_Test 프레임 전송 시 3바이트의 미초기화 데이터가 노출될 수 있습니다.
💡 쉬운 설명
네트워크 통신을 위한 데이터 패킷을 만들 때, 메모리에 남아있던 이전의 데이터 조각이 실수로 포함되어 전송되는 문제입니다. 이로 인해 시스템 내부의 민감한 정보가 외부로 유출될 가능성이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: bridge: mrp: fix uninitialised bytes on the wire
br_mrp_alloc_test_skb() builds MRP test frames on an skb from
dev_alloc_skb(), which does not clear the linear data area. On the MRA
ring-role branch the sub-option TLV header is appended with
sub_tlv = skb_put(skb, sizeof(*sub_tlv));
sub_tlv->type = BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR;
so sub_tlv->length is never written, and the two trailing alignment bytes
are appended with a bare skb_put() that does not clear them either. The
neighbouring oui and sub_opt regions are explicitly zeroed, so three
uninitialised bytes are left in every MRA MRP_Test frame that goes out.
Put the sub-option TLV header and the alignment padding in a single
skb_put_zero(), which clears both. The AUTO_MGR sub-TLV carries no
payload, so the zeroed length field is already the value it should have.
📍 영향받는 시스템
Linux kernel (net: bridge: mrp 모듈 사용 환경)
⚔️ 공격 벡터
네트워크를 통해 전송되는 MRP 테스트 프레임에 포함된 미초기화 메모리 데이터를 가로채는 방식
🛡️ 대응 방법
skb_put() 대신 skb_put_zero()를 사용하여 데이터 영역을 명확히 초기화하도록 커널 패치를 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인합니다.