security - Drag/Drop between medium/high integrity level processes in Windows Vista -


In Windows Vista, I am unable to drag / drop files on the window of my application because it is running as a process of high integrity level I

. I need to run it as high, but I should be able to accept files left with low / medium integrity-level processes like Windows Explorer. I believe this is a UII that is blocking the drag / drop operation. I know that I can use the ChangeWebFilter function to allow some Windows messages to bypass the UIPI, but I'm not sure which message to add to the drag / drop operation. I want to changeWindowMessage Filter the right approach to allow, or is there a better way? Thanks!

Considering the title of this blog entry:
"", I think it The best way is not;)

Now, it may seem like a great approach to the first - after all, you'll only use ChangeWindowMessageFilter when you are sure That you can fully validate a received message even if it is from an unreliable source, there is no way that someone is wrong, right?

The problem is that if you do this, then you are often opening your program to attack you unknowingly .
For a window, consider how custom window messages are commonly used; Virtually all general controls in the custom class message category (such as WM_USER and friends) have "dangerous" messages.

In addition to this, many programs and third-party libraries have confused WM_USER and WM_APP , so you can cross-process both the notation Through "Code"> WM_USER and WM_APP , you can use to communicate through "dangerous" messages or include pointer parameters.


In the comments of this blog entry, an alternative approach was discussed, but with the very same conclusion:

I < Code> RegisterWindowMessage and then allow it through the ChangeWindowMessageFilter . However, keep in mind that you can not design cross-process window messaging interface which passes points or other unreliable values ​​or you are creating a security hole.

For this reason, I would have to avoid using the window at all, for the most cross-process IPC (if possible) ssages, because generally non-trivial things are protected by them. Very difficult to do in the form.


Note: This entry indicates the same problem, and indicates practical articles of Raymond Chen:

For both extensions of this issue, this server-level question includes some answers, but no quick-wins.

See also


Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -