That attack is known in the Microsoft Windows operating system, which offers named objects as an interprocess synchronization mechanism. With named objects, a process may open a synchronization object as a shared resource by just specifying a name. Subsequent processes may use the same name to open that resource and have a way to synchronize with the first process. The squatting attack is possible because, if the legitimate program does not enforce tight security rules for the resources, processes from arbitrary security contexts may gain access to them and ultimately take control of the system.
Consider, for example, antivirus software installed on a Microsoft Windows machine. The solution has two pieces: a service, which monitors and scans every file when it is opened, and a manual scanner, which scans the file system when a user requests it. Under normal conditions the service should scan the system occasionally. However, if a user requests a manual scan, the service must stop temporarily to let the manual scanner work, otherwise every file would be scanned twice: by the manual scanner and by the service. To solve this problem the vendor chooses to implement an event based synchronization mechanism, where the service keeps a named event opened and checks it whenever a file is opened. If the event is unset the file is scanned, otherwise it is ignored. The manual scanner, then, to operate, opens the named event, sets it before scanning (disabling the service), scans the file system and resets the event back when finished. This design is prone to a squatting attack because a malicious program can set the named event and disable the service completely.
- Zhang, Junfeng (2006-04-23). "Private Object Namespace". Retrieved 2007-05-15.
- Farkas, Shawn (2005-04-28). "Whidbey's Security Off Model". Retrieved 2007-05-15.
- The example serves just as an illustration. Additional components might be required for it to work properly, as e.g. a driver.
- Russinovich, Mark (2007-02-12). "PsExec, User Account Control and Security Boundaries". Retrieved 2007-05-15.
- "Object Names". Microsoft Developer Network. Retrieved 2007-05-15.