Linux 커널에서는 다음 취약점이 해결되었습니다. xfrm: iptfs: __input_process_payload의 first_skb에서 use-after-free 수정 __input_process_payload()는 first_skb를 xtfs->ra_newskb에 저장합니다. 부분 재조립을 시작할 때 drop_lock을 누른 다음 잠금을 해제하고 중단합니다. 처리 루프의 사후 루프 검사에서는 xtfs->ra_newskb를 읽습니다. 잠금 없이 first_skb가 여전히 소유되어 있는지 확인합니다. if (first_skb && first_iplen && !defer && first_skb != xtfs->ra_newskb) 스파이 사이
Linux 커널에서는 다음 취약점이 해결되었습니다.
xfrm: iptfs: __input_process_payload의 first_skb에서 use-after-free 수정
__input_process_payload()는 first_skb를 xtfs->ra_newskb에 저장합니다. 부분 재조립을 시작할 때 drop_lock을 누른 다음 잠금을 해제하고 중단합니다. 처리 루프의 사후 루프 검사에서는 xtfs->ra_newskb를 읽습니다. 잠금 없이 first_skb가 여전히 소유되어 있는지 확인합니다.
if (first_skb && first_iplen && !defer && first_skb != xtfs->ra_newskb)
spin_unlock과 이 읽기 사이에 동시 CPU 실행 iptfs_reassem_cont()(또는 drop_timer hrtimer)는 완료할 수 있습니다. 재조립하고 NULL xtfs->ra_newskb를 실행하고 skb를 해제합니다. 그 때 수표 first_skb != NULL을 true로 평가하고 pskb_trim/ip_summed/consume_skb 해제된 skb에서 작동 — skbuff_head_cache의 해제 후 사용.
잠금 해제된 읽기를 다음 여부를 기록하는 로컬 부울로 대체합니다. 현재 호출에서 first_skb가 리어셈블리 상태로 전달되었습니다. 는 플래그는 기존 spin_unlock 이후, 중단 이전에 다음을 사용하여 설정됩니다. 해당 시점에서 안정적인 포인터 동등성(first_skb == skb iff first_skb는 ra_newskb에 저장되었습니다).
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 88.00 |
VPI 공식 vpi-v1 기준