user mode에서 VMCALL이나 VMMCALL을 발행하게 되면 어떻게 되는지
알아야 되는 상황에 있습니다.
VMM으로 전환 될 수 있을지, 아니면 무시될지, 아니면 exception이 발생될지...
저나 저희 회사에서 실험을 해보고 싶지만,
모두 다른 일들로 바빠서 실험하기 곤란하네요.
혹시 HVM을 환경을 가지고 계신 분이 계시다면 한번 실험 좀 해주세요.
댓글 6
-
백창우
2010.11.17 13:44
-
박은병
2010.11.17 15:10
제가 요즘 촘 한가한 관계로 테스트 해봤는데요..^^..
간단히 Xen에서 실험해봤습니다. intel vmx입니다.
아시겠지만, Xen에서 VMCALL은 hypercall from HVM 에서 사용되네요.
이번에 알았네요..ㅋㅋ
어쨌건..
여하튼, 간단하게 드라이버에서 VMCALL을 해보고 유저 프로그램에서 VMCALL을 해보았는데
둘다 XEN에게 제어권이 잘 넘어갑니다.
잘 넘어간다는 얘기는 XEN에서
xen/arch/x86/hvm/vmx/vmx.c에 있는
vmx_vmexit_handler로 제어권이 잘 넘어간다는 이야기입니다.
근데 이게 원래 user 영역에서 VMCALL을 맘대로 해도 되는건가요??
-
백창우
2010.11.17 15:17
우와~~~ 정말 감사합니다. ^^
이제 필요한 모든 정보를 확보했네요. ㅋㅋ
사실 저도 user mode에서 안될거라 생각했습니다.
하지만 약간의 가능성을 두고 테스트 해보길 바랬던거고요.
은병씨 결과를 듣고보니, VMM 제어 application 같은데서 VMM에 진입하고자 할때 필요하지 않을까라고 생각해봤습니다.
하지만 경우에 따라서 언제든 악용의 소지는 있을것 같습니다.
정말 감사합니다. 저번보다 두배 더 사랑해드릴께요. ㅋㅋㅋ
-
백창우
2010.11.17 15:20
PS. 이런 이야기를 해도 누군가 이해하고 들어줄 사람이 있다는게 참 좋네요.
저희 스터디가 자랑스럽습니다.
-
백창우
2010.11.18 12:51
조금 재미난 생각을 해봤습니다. ㅋㅋㅋ
다음에 만나면 이야기해드릴께요. ㅋ
-
박은병
2010.11.17 21:17
도움이 되었다니 다행입니다..^^..
지금 xen 코드를 자세히 보지 못해서 모르겠지만, hypercall from HVM 에서
hypercall을 유저 프로그램이 맘대로 호출하면 안되니까,
VMM이 유저 프로그램에서 VMCALL로 인한 VMexit이 발생했으면, hypercall을 실행하지 못하게끔 해야할 것 같네욤.
Xen의 경우에 VMM 제어 application은 모두 dom0에 있으니까 제어는 모두 dom0에게 맡기면 될 것 같구요.
근데 무슨 용도로 사용하실려고...ㅋㅋ혹시 rootkit 은 아니라 믿습니다.ㅋㅋㅋㅋ ^^..
.
김태훈님, 박은병님, 이상철님, 문대혁님, 이홍우님, 김우중님.
혹시 여유가 되시는 분이 계신가요?