<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx</link><description>Knowing your limits when trying to protect against a denial of service.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639730</link><pubDate>Tue, 20 Jun 2006 19:07:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639730</guid><dc:creator>Adam</dc:creator><description>One of the many ways that you hinted at that sprang to my mind here was &amp;quot;listening on a specific network port&amp;quot;, as a webserver does. Only one process can listen for connections on port 80 for a given IP address. If someone else is already doing it, you don't get to.&lt;br&gt;&lt;br&gt;Consequently, if one instance of your program has wedged, you can't just start another one and expect it to start listening. You have to kill the old one first.&lt;br&gt;&lt;br&gt;The security priveliges that can be used in this case is to only allow specific users/executables to listen to certain ports. I know that most unix-style systems require a process to be running as root to bind to ports &amp;lt; 1024; ISTR something along the lines that Windows systems *can* administered to require an ACL to be set for an executable that will allow it to bind to a specific port?&lt;br&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639804</link><pubDate>Tue, 20 Jun 2006 19:39:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639804</guid><dc:creator>BryanK</dc:creator><description>And for people wondering how to set up an ACL on the named mutex, see this sample code page on MSDN (at least, I assume it works; I've never actually used it yet):&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secbp/security/creating_a_dacl.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secbp/security/creating_a_dacl.asp&lt;/a&gt;&lt;br&gt;&lt;br&gt;That function takes a pointer to the SECURITY_ATTRIBUTES structure that you later pass to CreateMutex (or OpenMutex, but the Create version is probably preferred for single instance detection).</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639838</link><pubDate>Tue, 20 Jun 2006 19:49:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639838</guid><dc:creator>Brian Friesen</dc:creator><description>Interesting. &amp;nbsp;I've written single-instance programs in the past, and the thought never entered my mind that someone might intentionally use my mutex handle to prevent my program from running. &amp;nbsp;I guess my mind isn't malicious enough to think of things like this. &amp;nbsp;I'll have to keep this in mind the next time I consider a single-instance program.&lt;br&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639843</link><pubDate>Tue, 20 Jun 2006 19:52:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639843</guid><dc:creator>Mike</dc:creator><description>This is an interesting dilemma. I have myself a program that needs to be the single instance per winsta. It registers a few kbdhooks, and performs a system-wide well defined and most certainly useful function (ok, it's a volume control). This way it works for all desktops I create too. I use a global atom as the named object.&lt;br&gt;&lt;br&gt;As I obviously also cannot safeguard against the mentioned scenario (nothing can, not even things like e.g. Task Manager, that I suspect must use a desktop-local object, as even that you can not bring up another instance of it on &amp;nbsp;another desktop using the kbd shortcut, you can get another instance starting if you run taskmgr.exe from e.g. a command prompt on another desktop - or is this a sign of things started by winlogon having named object created in another &amp;quot;instance of something&amp;quot; and therefore is not checked when checking for such a named object from another desktop?), is a global atom the best option for this scenario? I mean, let's say two or more clients are connected to a terminal server^2-running machine, would the installed hooks and the named object I check for be confined to the same scope (namespace lookup and hooking behaviour)? Would a NULL/non-null security context make a difference, should I switch to (mis-)using a mutex instead?</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639922</link><pubDate>Tue, 20 Jun 2006 20:24:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639922</guid><dc:creator>Gabe</dc:creator><description>I believe most programs single-instance themselves by just looking for their window class. If they see a window with that class already in existence, they bring it to the foreground and exit, otherwise they open their own window. This makes the instance per-desktop.&lt;br&gt;&lt;br&gt;Mac OS (prior to version X, at least) had a much different way of single-instancing all programs. It would look at the file, and if that file was already running, it would just switch to the running version instead of launching it. This meant that you could run multiple instances of an app just by copying the main executable.&lt;br&gt;&lt;br&gt;That brings up an interesting point. Instead of naming your mutex/atom/window class/whatever a constant that any attacker can compile into their program, you can use your EXE's path. That means any attacker would have to somehow determine at runtime what your shared &amp;quot;secret&amp;quot; is, which would be almost impossible when you consider your program could run from the network. This method also allows the user to override your single-instancing by creating a copy of the EXE and running that.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#639953</link><pubDate>Tue, 20 Jun 2006 20:45:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:639953</guid><dc:creator>Teis Johansen</dc:creator><description>One particular problem I have come across with the global mutex approach is when running as a low-privilege user and an administrator, or more generally when there are multiple users logged in. If you use a global mutex in to ensure a single instance, your application will seem to fail (ie. never launch) for the second user to launch it. I have come across this behavior even in expensive commercial applications (yes, I run as a low-privilege user and yes, even when writing software)</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640067</link><pubDate>Tue, 20 Jun 2006 21:41:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640067</guid><dc:creator>Sean W.</dc:creator><description>I've thought for a while now that the whole notion of a single-instance program was an inherently bad one, and even though I've installed thousands of programs over the years, I've yet to find one where single-instance behavior would be better than multiple-instance behavior from a usability perspective. &amp;nbsp;Denial of service indeed: &amp;nbsp;Single-instance software does little more than deny the user his right to use his software how he wants. &amp;nbsp;I think the easiest way around this &amp;quot;security hole&amp;quot; is to just design your software to allow multiple instances.&lt;br&gt;&lt;br&gt;(Oh, and Raymond, you have a minor thinko in one of your sentences: &amp;nbsp;&amp;quot;Consequently, you cannot protect AGAINST yourself perfectly against a denial of service...&amp;quot;)</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640222</link><pubDate>Tue, 20 Jun 2006 23:00:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640222</guid><dc:creator>Boris Zakharin</dc:creator><description>I disagree. What if you are an installer? Or an audio player or a CD burning software? What if you are a Windows shell or the display properties control panel?</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640313</link><pubDate>Tue, 20 Jun 2006 23:39:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640313</guid><dc:creator>Pieter van Ginkel</dc:creator><description>I was wondering. You can create DLL's with shared memory using following statement in the DEF file: &lt;BR&gt;&lt;BR&gt;SECTIONS .SECTIONNAME READ WRITE SHARED &lt;BR&gt;&lt;BR&gt;If you use that block of memory to e.g. keep a reference count; wouldn't that be a fail safe way of implementing this feature? This cannot be hijacked if you, e.g., check the path of the modules that increase or decrease the ref count. &lt;BR&gt;&lt;BR&gt;Am I missing something?&lt;BR&gt;&lt;BR&gt;&lt;DIV CLASS=post&gt;[&lt;I&gt;You're replacing one security hole with an even bigger security hole. -Raymond&lt;/I&gt;]&lt;/DIV&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640314</link><pubDate>Tue, 20 Jun 2006 23:40:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640314</guid><dc:creator>Sean W.</dc:creator><description>Boris: &amp;nbsp;Explain to me why any of those should be prohibited from having multiple instances. &amp;nbsp;I can come up with legitimate reasons for each one you named to have multiple instances:&lt;br&gt;&lt;br&gt;Installer: You want multiple installations to different directories for different users, and to save time, you want to run the installations in parallel (this kind of time saving is especially significant in corporate and university environments).&lt;br&gt;&lt;br&gt;Audio player or CD burner: &amp;nbsp;What if the user has multiple CD-ROM drives or audio systems? &amp;nbsp;I have a friend in the recording business who has three audio cards in his computer, and sometimes uses all three at once. &amp;nbsp;He often uses special audio software solely to get around the single-instance limitations that many audio/video programs have.&lt;br&gt;&lt;br&gt;Shell: &amp;nbsp;The user wants to compare different settings on the shell to see their effects, so she runs two copies, one as the &amp;quot;control&amp;quot; and one as the &amp;quot;experiment&amp;quot;.&lt;br&gt;&lt;br&gt;Display properties: &amp;nbsp;I have three monitors on this very computer. &amp;nbsp;The fact that I'm only allowed one Display Properties dialog is often irritating to me, as I often want to change properties of the monitors separately --- but can't.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640368</link><pubDate>Wed, 21 Jun 2006 00:04:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640368</guid><dc:creator>David Walker</dc:creator><description>Some applications that bring up modal windows for things that IMHO should not be modal -- such as SQL Server 2000's Enterprise Manager -- force me to bring up two or three copies of the application.&lt;br&gt;&lt;br&gt;When I'm editing a stored procedure in Enterprise Manager, it uses a modal window to let me edit the procedure. &amp;nbsp;I often need to glance at another procedure, or look at the definition of a table, or even add a field to a table, while I'm editing the stored proc.&lt;br&gt;&lt;br&gt;It irritates me to no end that E.M. uses a modal window for something that shouldn't be modal. &lt;br&gt;&lt;br&gt;I would be *really* annoyed if Enterprise Manager limited itself to one running copy on my system; thankfully, it doesn't.&lt;br&gt;&lt;br&gt;(As an aside, the SQL 2005 tools are much better than the 2000 ones.)&lt;br&gt;&lt;br&gt;David&lt;br&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640371</link><pubDate>Wed, 21 Jun 2006 00:07:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640371</guid><dc:creator>Tim</dc:creator><description>I've written a program that lets you keep notes on the desktop - it automatically saves periodically to a file in the user's My Documents folder.&lt;br&gt;&lt;br&gt;I prevent multiple instances (by the same user), because otherwise data corruption could (i.e. would) occur.&lt;br&gt;&lt;br&gt;I could change the app so you can configure where to save the data, but that would make it more complicated (one of the points of the program is its simplicity), and hardly any one would use the feature. &amp;nbsp;Lots of people would be confused by it. &amp;nbsp;The user interface would be pointlessly split between multiple instances too. &amp;nbsp;There would be multiple icons in the notification area, too. &amp;nbsp;Cats and dogs living together, etc.&lt;br&gt;&lt;br&gt;I think people who can't think of any examples of where single-instance programs are a good idea aren't thinking all that hard. &amp;nbsp;There aren't many, but they certainly exist.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640388</link><pubDate>Wed, 21 Jun 2006 00:15:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640388</guid><dc:creator>Chris Grove</dc:creator><description>Sean W,&lt;br&gt;&lt;br&gt;Kiosk and other &amp;quot;embedded&amp;quot; applications are usually single-instance programs. It makes very little sense that multiple instances are available in closed or limited systems. &lt;br&gt;&lt;br&gt;In our embedded Windows system (running under Windows XP), there is a strong coupling between our hardware configuration and the user application state. There would be very little gain to allow the user an additional instance as it would have to configured identically to the original.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640428</link><pubDate>Wed, 21 Jun 2006 00:43:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640428</guid><dc:creator>Adam</dc:creator><description>Sean: You mention a focus on usability. Do you intend your comments to also hold for system level services/daemons? e.g. the system logger, the RPC daemon, the SMB service, a threaded webserver, a database server, etc...&lt;br&gt;&lt;br&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640490</link><pubDate>Wed, 21 Jun 2006 01:26:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640490</guid><dc:creator>Brian</dc:creator><description>Things that run full screen (ie: video games) are almost always single instanced because triple-clicking the icon would launch two full-screen versions of the game and they'd both run super slow. &amp;nbsp;The user wouldn't know what's going on and think the game is just slow and buggy.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640491</link><pubDate>Wed, 21 Jun 2006 01:26:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640491</guid><dc:creator>A. Skrobov</dc:creator><description>&amp;gt; Task Manager, that I suspect must use a&lt;br&gt;&amp;gt; desktop-local object, as even that you can&lt;br&gt;&amp;gt; not bring up another instance of it on&lt;br&gt;&amp;gt; another desktop using the kbd shortcut, you&lt;br&gt;&amp;gt; can get another instance starting if you run&lt;br&gt;&amp;gt; taskmgr.exe from e.g. a command prompt on&lt;br&gt;&amp;gt; another desktop &lt;br&gt;Task Manager must be broadcasting a secret message to all windows (on current desktop), and waiting for a response within certain time.&lt;br&gt;When the machine is loaded too high (creating a hundred top-level windows is usually enough), you can launch any number of taskmgr's with the keyboard shortcut.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640676</link><pubDate>Wed, 21 Jun 2006 03:28:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640676</guid><dc:creator>Coderjoe</dc:creator><description>One big reason for a program being single-instance is when it uses some limited hardware resource, such as a framegrabber in a system doing manufacturing process control system. You can't really have two programs trying to access the same card at the same time. If you tried, they would usually interfere, if the drivers even allowed you to do so.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640705</link><pubDate>Wed, 21 Jun 2006 03:58:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640705</guid><dc:creator>Miral</dc:creator><description>Even so, the program itself shouldn't single-instance, it should just protect the single-instance nature of the resource.&lt;br&gt;&lt;br&gt;In your example, you should be able to launch multiple instances of the process control software, provided that each one is talking to a different framegrabber.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640717</link><pubDate>Wed, 21 Jun 2006 04:09:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640717</guid><dc:creator>Coderjoe</dc:creator><description>This process control software generally runs similar to a kiosk. It needs to start up and start running pretty much without any user intervention whatsoever, even if humans will be looking at the screen to see if there is a problem or not.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#640743</link><pubDate>Wed, 21 Jun 2006 04:21:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:640743</guid><dc:creator>Norman Diamond</dc:creator><description>&amp;gt; A single-instance program is its own denial&lt;br&gt;&amp;gt; of service! [...] Your program requirements&lt;br&gt;&amp;gt; are themselves a security vulnerability.&lt;br&gt;&lt;br&gt;True and mostly false, respectively. &amp;nbsp;If the denial of service is a security vulnerability then the program requirements are a security vulnerability, but maybe that just means you have to find another way to avoid the security vulnerability.&lt;br&gt;&lt;br&gt;If your program is going to run on a Windows Mobile Smartphone or Pocket PC, then the program requirements include this denial of service. &amp;nbsp;Even though you Mr. Chen didn't set this requirement, ordinary programmers didn't set it either. &amp;nbsp;Your company lets you and us contend with this requirement.&lt;br&gt;&lt;br&gt;Tuesday, June 20, 2006 5:04 PM by David Walker &lt;br&gt;&amp;gt; It irritates me to no end that E.M. uses a&lt;br&gt;&amp;gt; modal window for something that shouldn't be&lt;br&gt;&amp;gt; modal. [...] I would be *really* annoyed if&lt;br&gt;&amp;gt; Enterprise Manager limited itself to one&lt;br&gt;&amp;gt; running copy on my system;&lt;br&gt;&lt;br&gt;Try Outlook Express. &amp;nbsp;When you open a Message Source window it's modal, so you have to open another running copy of Outlook Express in order to create a new mail message and switch back and forth between the Message Source of one and the text of the other, except that Outlook Express doesn't let you open another running copy.&lt;br&gt;&lt;br&gt;Tuesday, June 20, 2006 6:26 PM by A. Skrobov&lt;br&gt;&amp;gt; When the machine is loaded too high (creating&lt;br&gt;&amp;gt; a hundred top-level windows is usually&lt;br&gt;&amp;gt; enough), you can launch any number of&lt;br&gt;&amp;gt; taskmgr's with the keyboard shortcut.&lt;br&gt;&lt;br&gt;I didn't need a hundres top-level windows. &amp;nbsp;Windows 2000 frequently hanged for no visible reason with only about 10 windows open but idle. &amp;nbsp;Taskmgr wouldn't respond. &amp;nbsp;Ctrl-Alt-Delete could create another taskmgr. &amp;nbsp;After opening around 20 taskmgr windows, *those* saturated the CPU for a while, but the underlying problem didn't go away and was still unknown.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641009</link><pubDate>Wed, 21 Jun 2006 08:32:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641009</guid><dc:creator>steveg</dc:creator><description>Is this something that could (or should have) be[en] added to the OS? Add a flag against an EXE. Single-instance executables are such a common thing to do.&lt;br&gt;&lt;br&gt;Hmmmm... it could probably be done to a &amp;quot;mostly good enuf&amp;quot; level.&lt;br&gt;&lt;br&gt;The sort of thing that needs to be avoided is an app impersonating your virus scanner or firewall.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641119</link><pubDate>Wed, 21 Jun 2006 09:11:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641119</guid><dc:creator>Mark Steward</dc:creator><description>Norman: It's actually the Properties page that's modal for some obscure reason. &amp;nbsp;Try pressing Ctrl+F3.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641338</link><pubDate>Wed, 21 Jun 2006 14:40:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641338</guid><dc:creator>Francois Boucher</dc:creator><description>We use a named mutex with the name of the EXE and also use the psapi.dll to check if the exe is really started using the full path. &lt;BR&gt;&lt;BR&gt;Trusting a mutex only is dangerous.&lt;BR&gt;&lt;BR&gt;&lt;DIV CLASS=post&gt;[&lt;I&gt;PSAPI doesn't give you the path to mutex owner. How do you know that the mutex owner is another copy of yourself? -Raymond&lt;/I&gt;]&lt;/DIV&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641340</link><pubDate>Wed, 21 Jun 2006 14:41:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641340</guid><dc:creator>Pascal</dc:creator><description>Pieter:&lt;br&gt;Raymond discussed why .shared sections are a security hole here: &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/oldnewthing/archive/2004/08/04/208003.aspx"&gt;http://blogs.msdn.com/oldnewthing/archive/2004/08/04/208003.aspx&lt;/a&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641367</link><pubDate>Wed, 21 Jun 2006 15:26:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641367</guid><dc:creator>pvginkel</dc:creator><description>Pascal:&lt;br&gt;Thank you. I was wondering why Raymond didn't approve :).</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#641981</link><pubDate>Thu, 22 Jun 2006 00:00:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:641981</guid><dc:creator>Dan McCarty</dc:creator><description>Raymond said: &lt;BR&gt;"Your program requirements are themselves a security vulnerability." &lt;BR&gt;&lt;BR&gt;So then why does the Windows shell single-instance itself?&lt;BR&gt;&lt;BR&gt;&lt;DIV CLASS=post&gt;[&lt;I&gt;Engineering is about trade-offs. In exchange for the benefits of single-instance, you become susceptible to a name squatting attack from a same-privileged user. The benefit outweighs the cost, seeing as a same-privilege user can just TerminateProcess explorer if it wants to. -Raymond&lt;/I&gt;]&lt;/DIV&gt;</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#642524</link><pubDate>Thu, 22 Jun 2006 11:01:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:642524</guid><dc:creator>IanA</dc:creator><description>Apologies, not directly a 'A single-instance program is its own denial of service' question, but sort of related. What Mutex namespace do applications running as Scheduled Tasks use? From experience it does not seem to be the same as Desktop Apps.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#642573</link><pubDate>Thu, 22 Jun 2006 12:24:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:642573</guid><dc:creator>Jules</dc:creator><description>One of my many security mantras is &amp;quot;you can't protect yourself from malware running with your own priveleges&amp;quot;. &amp;nbsp; That applies to this situation, and to a number of others.&lt;br&gt;&lt;br&gt;For example, I never really understood the point of outbound connection filtering on a software firewall, yet I so frequently see people saying that the Windows firewall is useless because it doesn't do it. &amp;nbsp;Err.. no, it's not useless. &amp;nbsp;The feature's useless, because it is trivial for any application to circumvent it if you have the privelege to use your own network connection. &amp;nbsp;Which I assume you do.&lt;br&gt;&lt;br&gt;So quit worrying about malware running in your own context. &amp;nbsp;There's nothing you can do about it other than prevent it from getting there.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#642703</link><pubDate>Thu, 22 Jun 2006 12:59:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:642703</guid><dc:creator>Aaargh!</dc:creator><description>&amp;quot;For example, I never really understood the point of outbound connection filtering on a software firewall&amp;quot;&lt;br&gt;&lt;br&gt;That's easy. the point is to increase the visibility of the firewall software. If you sell a firewall that installs and then is never heard from again, people feel like they spent money on something that doesn't do anything. If, however, the firewall pops up every few hours users get the impression that it's doing a really good job protecting them. </description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#642752</link><pubDate>Thu, 22 Jun 2006 14:24:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:642752</guid><dc:creator>pvginkel</dc:creator><description>A different reason of course is to disallow browser helper objects and zombie processes to connect to their respective servers or send their SPAM. Of course, having a computer that has these processes running is fully (brain) dead. But then again, whom are these firewalls targeted at?</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#642756</link><pubDate>Thu, 22 Jun 2006 14:31:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:642756</guid><dc:creator>Mike</dc:creator><description>Aaargh! wrote about outbound filtering:&lt;br&gt;&amp;quot;That's easy. the point is to increase the visibility of the firewall software.&amp;quot;&lt;br&gt;&lt;br&gt;If you say so.&lt;br&gt;&lt;br&gt;In more security concious circles it's however used to block traffic (-attempts) that otherwise could reach unintended or outright unwanted destinations (such as the internet), where it doesn't belong. For examples of such traffic, one could mention both src and dst ports 135-139 and 445.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#643474</link><pubDate>Fri, 23 Jun 2006 03:23:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:643474</guid><dc:creator>Norman Diamond</dc:creator><description>Incoming spams in Outlook Express used to persuade Outlook Express to call home to spam servers, informing spammers of which e-mail addresses were working and increasing the amounts of spam sent to those addresses. &amp;nbsp;Outbound filtering in firewalls stopped Outlook Express from download graphics and stopped Outlook Express from sending HTTP requests to servers other than the mail servers allowed by the users, so a lot of that feedback stopped. &amp;nbsp;XP SP2 helped stop some of this without the need for outbound firewalls any more, except where XP SP2 didn't stop it, and except for W2K and W98 etc.</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#645606</link><pubDate>Sat, 24 Jun 2006 12:56:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:645606</guid><dc:creator>Dewi Morgan</dc:creator><description>The reason that outbound firewalls work at the moment (and are a very, very good thing to have) is that they are in the minority: very few users have them, and there are several available. That means it's not worth writing malware to dodge them: you'd be writing malware for a tiny target market.&lt;br&gt;&lt;br&gt;Once Vista brings outbound filtering in, malware will need to find a way to dodge it because EVERYONE will have it. Dodging outbound filtering would have become the norm instead of the exception. So, if I understand right, the Vista outbound filtering required some core changes to how services are identified, giving each one an allegedly-unspoofable unique ID.&lt;br&gt;&lt;br&gt;Of course that's still fairly trivial to get around for the malware, but if MS hadn't raised the bar at least a little, then there would have been absolutely no point at all in putting outbound filtering into Vista.&lt;br&gt;&lt;br&gt;Far be it from me to point out that, with their FW doing outbound filtering, and being the only FW that protects the system at bootup, MS are looking to push the other FW producers out the market...</description></item><item><title>re: A single-instance program is its own denial of service</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#646683</link><pubDate>Sun, 25 Jun 2006 20:06:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:646683</guid><dc:creator>name that is required</dc:creator><description>ghm... I'm always using volatile keys under HKCU/Software instead of mutexes. Just for reason above.</description></item><item><title>
	blog.iridescence.no
</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/20/639479.aspx#1941563</link><pubDate>Sat, 24 Mar 2007 13:47:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1941563</guid><dc:creator>
	blog.iridescence.no
</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://blog.iridescence.no/Posts/CreatingaSingleInstanceApplicationinC.aspx"&gt;http://blog.iridescence.no/Posts/CreatingaSingleInstanceApplicationinC.aspx&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>