다음을 통해 공유


DoubleFetch 규칙(wdm)

DoubleFetch 규칙은 드라이버가 IRP를 통해 사용자 공간으로 전달되는 버퍼에 안전하게 액세스하고 있는지 확인하는 중요한 보안 규칙입니다. 드라이버와 사용자 모드 구성 요소 간에 데이터를 안전하게 보내는 적절한 방법은 버퍼링 또는 직접 I/O 사용에서 설명합니다.

드라이버는 데이터 버퍼 액세스 방법에 설명된 지침 및 모범 사례에 따라 데이터 버퍼에 액세스해야 합니다.

이 규칙은 사용자 모드 메모리 포인터에서 이중 가져오기를 확인합니다. 사용자 모드 메모리의 이중 커널 모드 액세스로 인해 경합 상태 보안 문제가 발생할 수 있습니다. 사용자 모드 데이터에 액세스할 때 커널 모드 코드는 사용자 모드 데이터의 복사본을 로컬로 만들고 사용자 모드 데이터에 여러 번 액세스하지 않도록 해야 합니다. 이렇게 하지 않으면 데이터가 처음 액세스된 후 변경될 수 있는 "이중 인출"이라는 유형의 문제가 발생합니다.

이 규칙은 Windows 10 WDK 빌드 20236부터 사용할 수 있습니다. 이 규칙은 WDM제네릭 드라이버 유형에만 사용할 수 있습니다.

드라이버 모델: WDM, 제네릭

테스트 방법

컴파일 시:

  1. 정적 드라이버 검증 도구를 실행하고 더블페치 규칙을 지정합니다.

  2. 다음 단계( 정적 드라이버 검증 도구를 사용하여 Windows 드라이버에서 결함 찾기)를 사용하여 코드 분석을 실행합니다.

자세한 내용은 정적 드라이버 검증 도구를 사용하여 드라이버에서 결함 찾기를 참조하세요.