Linux 커널에서는 다음 취약점이 해결되었습니다. bpf, skmsg: ktls rx를 사용한 sk_data_ready 경주 평결 수정 sk_psock_strp_data_ready()는 이미 tls_sw_has_ctx_rx()를 확인하고 TLS RX 컨텍스트가 존재할 때 psock->saved_data_ready를 따릅니다. TLS strparser의 수신 소유권과의 충돌 방지 queue (e91de6afa81c 커밋, "bpf: sk_skb 프로그램 유형 실행 수정 ktls"). sk_psock_verdict_data_ready()에는 이에 상응하는 가드가 없습니다. 소켓일 때 에 삽입됩니다
Linux 커널에서는 다음 취약점이 해결되었습니다.
bpf, skmsg: ktls rx를 사용한 sk_data_ready 경주 평결 수정
sk_psock_strp_data_ready()는 이미 tls_sw_has_ctx_rx()를 확인하고 TLS RX 컨텍스트가 존재할 때 psock->saved_data_ready를 따릅니다. TLS strparser의 수신 소유권과의 충돌 방지 queue (e91de6afa81c 커밋, "bpf: sk_skb 프로그램 유형 실행 수정 ktls").
sk_psock_verdict_data_ready()에는 이에 상응하는 가드가 없습니다. 소켓일 때 TLS RX가 실행되기 전에 sockmap(BPF_SK_SKB_VERDICT)에 삽입됩니다. 구성됨, tls_sw_strparser_arm()은 sk_psock_verdict_data_ready를 저장합니다. rx_ctx->saved_data_ready로. 데이터 도착 시:
tls_data_ready -> tls_strp_data_ready -> tls_rx_msg_ready -> save_data_ready() = sk_psock_verdict_data_ready() -> tcp_read_skb()는 __skb_unlink()를 통해 sk_receive_queue를 비웁니다. tcp_eat_skb()를 호출하지 않으므로 Copy_seq는 진행되지 않습니다.
tls_strp_msg_load()는 tcp_inq() >= full_len(부실)을 찾아 호출합니다. 이제 비어 있는 대기열의 tcp_recv_skb()는 WARN_ON_ONCE(!first)에 도달하고 psock 소유를 가리키는 rx_ctx->strp.anchor.frag_list로 반환됩니다. (잠재적으로 해제된) skb. tls_decrypt_sg()는 이후에 이를 수행합니다. frag_list: 사용 후 사용.
sk_psock_strp_data_ready()와 동일한 수정 사항을 적용합니다. TLS RX 컨텍스트인 경우 존재하는 경우 psock->saved_data_ready(sock_def_ready)를 호출하여 깨우세요. recv() 대기자를 호출하고 즉시 반환하여 수신 대기열을 떠납니다. 손대지 않은. TLS는 대기열의 단독 소유권을 보유하고 tls_sw_recvmsg()를 통해 정상적으로 녹화됩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 98.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 98.00 |
VPI 공식 vpi-v1 기준