Linux 커널에서는 다음 취약점이 해결되었습니다. net: tls: 래핑된 sk_msg 링에 대한 sg_chain 항목 수를 하나씩 수정합니다. sk_msg 스캐터리스트 링이 래핑되면(sg.end < sg.start), tls_push_record()는 링의 꼬리 부분을 머리에 연결합니다. sg_chain()을 사용합니다. sg 배열의 추가 항목은 다음을 위해 예약되어 있습니다. 이: 구조체 sk_msg_sg { [...] /* 추가 두 요소: * 1) 목록이 다음과 같을 때 앞부분과 부분을 연결하는 데 사용됩니다. *
Linux 커널에서는 다음 취약점이 해결되었습니다.
net: tls: 래핑된 sk_msg 링에 대한 sg_chain 항목 수를 하나씩 수정합니다.
sk_msg 스캐터리스트 링이 래핑되면(sg.end < sg.start), tls_push_record()는 링의 꼬리 부분을 머리에 연결합니다. sg_chain()을 사용합니다. sg 배열의 추가 항목은 다음을 위해 예약되어 있습니다. 이:
구조체 sk_msg_sg { [...] /* 추가 두 요소: * 1) 목록이 다음과 같을 때 앞부분과 부분을 연결하는 데 사용됩니다. * 분할됨(예: end < start) 암호화 API에는 다음이 필요합니다. * 연결; * 2) 메시지 뒤에 tailer SG 항목을 연결합니다. */ 구조체 스캐터리스트 데이터[MAX_MSG_FRAGS + 2];
현재 코드는 MAX_SKB_FRAGS + 1을 링 크기로 사용합니다.
sg_chain(&msg_pl->sg.data[msg_pl->sg.start],
MAX_SKB_FRAGS - msg_pl->sg.start + 1,
msg_pl->sg.data);
그러면 체인 포인터가 다음 위치에 배치됩니다.
sg_chain(데이터[시작], (MAX_SKB_FRAGS - msg_start + 1) .. = &data[시작] + (MAX_SKB_FRAGS - msg_start + 1) - 1 = 데이터[시작 + (MAX_SKB_FRAGS - 시작 + 1) - 1] = 데이터[MAX_SKB_FRAGS]
실제 마지막 항목 대신. 이는 '인종' 때문일 가능성이 높습니다. Fixes 랜딩 아래의 커밋은 다음과 같습니다. 커밋 031097d9e079("bpf: sk_msg, psock down의 zap 수신 대기열")
ARRAY_SIZE로 변환하고 데이터를 삭제합니다[start] / - start(제안된 대로) 사브리나).
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준