Linux 커널에서는 다음 취약점이 해결되었습니다. iommu/vt-d: PASID 항목 교체 중 경합 상태 수정 Intel VT-d PASID 테이블 항목은 512비트(64바이트)입니다. 교체시 활성 PASID 항목(예: 도메인 교체 중), 현재 구현에서는 스택의 새 항목을 계산하고 이를 스택에 복사합니다. 단일 구조 할당을 사용하는 테이블. struct pasid_entry *pte, new_pte; pte = intel_pasid_get_entry(dev, pasid); pasid_pte_c
Linux 커널에서는 다음 취약점이 해결되었습니다.
iommu/vt-d: PASID 항목 교체 중 경합 상태 수정
Intel VT-d PASID 테이블 항목은 512비트(64바이트)입니다. 교체시 활성 PASID 항목(예: 도메인 교체 중), 현재 구현에서는 스택의 새 항목을 계산하고 이를 스택에 복사합니다. 단일 구조 할당을 사용하는 테이블.
struct pasid_entry *pte, new_pte;
pte = intel_pasid_get_entry(dev, pasid);
pasid_pte_config_first_level(iommu, &new_pte, ...);
*pte = new_pte;
하드웨어가 512비트 PASID 항목을 여러 번 가져올 수 있기 때문에 128비트 청크, 활성 상태인 동안 전체 항목 업데이트(현재 비트 세트) "찢어진" 읽기 위험이 있습니다. 이 시나리오에서는 IOMMU 하드웨어 일관되지 않은 상태를 관찰할 수 있습니다. 부분적으로는 새로운 데이터이고 부분적으로는 오래된 데이터 - 예측할 수 없는 동작이나 허위 오류로 이어집니다.
안전하지 않은 "교체" 도우미를 제거하고 다음을 수행하여 이 문제를 해결하세요. 현재 비트가 지워지고 새로운 무효화 핸드셰이크가 완료되기 전에 필요한 무효화 핸드셰이크가 완료됩니다. 구성이 적용됩니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 88.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 88.00 |
VPI 공식 vpi-v1 기준