본문 바로가기

Windows/Kernel

FltQueryInformationFile - TopLevel IRP 인 경우 호출 불가

Symptom/Steps/Outputs (증상,재현방법,결과)

  • 클라우드 스토리지(G드라이브)가 설치된 PC에 Insights Agent 설치 시 PC Hang 발생

Caused by (원인)

  • G드라이브 제품은 네트워크 드라이브 형태의 가상 스토리지를 제공
  • GDrive.exe >> cbfsconnect2017.sys >> xfilter64.sys 로 전달된 I/O 처리 과정에서 파일사이즈를 구하기 위해 FltQueryInformationFile 호출 후 DeadLock 발생
  • MSDN의 FltQueryInformationFile api에 대한 기술 내용 검토 중 Deadlock 관련 추정되는 원인을 확인 (TopLevelIrp 가 설정된 경우, 사용자로부터 유발된 IRP가 아니라는 의미)

    NOTE: Do not call this routine with a non-NULL top level IRP value, as this can cause a system deadlock.

Fix Plan (해결방안)

  • FltQueryInformationFile 호출 전 TopLevelIrp 값 설정 여부를 체크하여, 설정된 경우 FileSize를 구하지 않고 Skip하도록 수정
  • G드라이브에서 발생하는 네트워크 경로를 parsing할 수 있도록 경로 parsing 로직 개선

 

태형의 이슈 이야기.

'Windows > Kernel' 카테고리의 다른 글

Create process from kernel mode  (0) 2021.02.15
DNS 쿼리 탐지 및 변조  (0) 2021.01.18
NT vs. Zw  (0) 2020.09.07
Thread Start Address  (0) 2020.09.05
프로세스 고유ID(ProcGuid)/부록: Kernel 모드에서 md5 해시 구하기.  (0) 2020.08.22