search
Twitter Rss Feeds
MicrosoftArticlesForumsGroups
C# .NET
VB.NET
Visual Studio .NET
ADO.NET
Xml/Xslt
VB 6.0
.NET CF
GDI+
LINQ
Deployment
Security
FoxPro
Silverlight / WPF
Entity Framework
RIA Services

Web ProgrammingArticlesForumsGroups
JavaScript
ASP
ASP.NET
Web Services

Non-MicrosoftArticlesForumsGroups
NHibernate
Perl
PHP
Ruby
Java
Linux / Unix
Apple
Open Source

DatabasesArticlesForumsGroups
SQL Server
Access
Oracle
MySQL
Other Databases

OfficeArticlesForumsGroups
Microsoft Excel
Microsoft Word
Microsoft Powerpoint
Publisher
Money

Operating SystemsArticlesForumsGroups
Windows 7
Windows Server
Windows Vista
Windows XP
Windows Update
MAC
Linux / UNIX

Server PlatformsArticlesForumsGroups
Share Point
BizTalk
Site Server
Exhange Server
IIS
Transaction Server

Graphic DesignArticlesForumsGroups
Macromedia Flash
Adobe PhotoShop
Microsoft Expression

OtherArticlesForumsGroups
Subversion / CVS
Ask Dr. Dotnetsky
Active Directory
Networking
Uninstall Virus
Job Openings
Reviews
Search Engines
Resumes

 

Previous Thread:   Exporting Passwords

1/15/2006 6:47:24 PM    Questions about the artical "DCOM Security Enhancements" for Windows Server 2003 SP1
Hi,  
  
A remote DCOM gives access denied error in our program after the server  
  
is upgraded to the SP1. The article "DCOM Security Enhancements" seems  
  
to address this issue  
  
(http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/BookofSP1/4c9a2873-2010-4dbb-b9dd-6a7d1e275f0f.mspx).  
  
But I am quite confused. Here are my questions:  
  
1. Is the "Computerwide restriction" the same thing as "machine-wide"  
  
restriction used before but with different semantics?  
  
2. If I am so desperate to change the "computerwide" settings, should I  
  
do it the same way as change "machine-wide" settings? (through  
  
Component Service, properties of the interested machine)  
  
3. What is the difference between launch permission and activation  
  
permission? To me, both are the permissions that allow a client to  
  
create a server object on the server machine.  
  
4. Most confusing part is here. If a remote client does not have the  
  
remote launch/activation permission, how could s/he possibly access a  
  
remote DCOM object? The default setting is that Everyone does not have  
  
the remote launch and activation permission but has the remote access  
  
permission. And the doc mentions that:  
  
"By default, the Everyone and Anonymous groups are granted remote  
  
access permissions. This enables most COM client scenarios, including  
  
the common case where a COM client passes a local reference to a remote  
  
server, in effect turning the client into a server."  
  
What does this paragraph really mean? Is it in some language other than  
  
English?  
  
Thanks for your help  
  
hshen

1/15/2006 10:41:00 PM    Re: Questions about the artical "DCOM Security Enhancements" for Windows Server 2003 SP1
I will take a try at your questions, but do not take these  
  
as the final word . . .  
  
<hshen.ca@gmail.com> wrote in message  
  
news:1137379643.986369.318610@f14g2000cwb.googlegroups.com...  
  
I take computer-wide and machine-wide as stating the same.  
  
However, I am not familiar with what you refer to as "used before".  
  
The service pack added a new layer that did not exist before.  
  
Previously there was (and there still is) a set of default permissions  
  
for launch and access.  Previously (and still) components could have  
  
set their own component unique permissons for these, or could not  
  
and so default.  The new layer controls use of defaulted components.  
  
The Component services UI was enhanced for the new settings  
  
I take activation and launch to be the same, i.e. to spin up a server obj.  
  
some other security principal launched the factory, and then, with it  
  
running the account with only access does just that  
  
That a reasonable question.  
  
I take it to mean, we are controlling how a COM factory gets spun up,  
  
but are not controlling what happens to it at that point.  
  
Again, this is for components with their security defaulted.

1/16/2006 6:49:27 AM    Re: Questions about the artical "DCOM Security Enhancements" for Windows Server 2003 SP1
Hi Roger,  
  
Thanks for your quick response. My comments and questions are inline  
  
Thanks!  
  
hshen  
  
Roger Abell [MVP] wrote:  
  
"Before" means before SP1. I knew that the machine-wide default  
  
settings are there before SP1. But the semantics are different before  
  
and after, that is the source of trouble (or benefit) of SP1. Before  
  
SP1, the default settings take effect only when the components do not  
  
customize their own settings. In SP1, the default settings play the  
  
role as bottom line - means that if the default settings denies the  
  
request, the request will fail no matter what is set in the component  
  
customized settings.  
  
Then, why does Microsoft bother to have two separate permissions for  
  
launch and activation (for Windows Server 2003 SP1 as well as Windows  
  
XP SP2)?  
  
Still not clear to me. Do you mean that the client program uses one  
  
account with high privilege to launch/activate the remote object and  
  
then fallbacks to common user account to access the object? I don't  
  
think that this scheme provides any security benefit. Where does the  
  
client program get the high privilege security credential? If the  
  
client program can get it without human involved, a malicious user can  
  
get it either (at least in theory).  
  
Another possible scenario is that somebody launches the factory in  
  
remote server, and somehow let the remote access the factory object. I  
  
am puzzled how to do it?

1/16/2006 1:04:07 PM    Re: Questions about the artical "DCOM Security Enhancements" for Windows Server 2003 SP1
Thanks!  
  
Roger Abell [MVP] wrote:

1/16/2006 1:13:43 PM    Re: Questions about the artical "DCOM Security Enhancements" for Windows Server 2003 SP1
Thanks for the clarification.  
  
On your last point, it is not the client application that needs to do  
  
everything  
  
(launch and then access).  The component can be instanciated by other code  
  
in different security context, perhaps not ever remote.  
  
Access controls access - which implies component has been spun up.  
  
Remote client does not have to do it all.  Consider case of a service that  
  
makes its remote methods available by instancing components.  You do  
  
not want the remote client to cause the instancing, but only the use.  
  
On the Launch vs Activation you are right, things really are clouded in  
  
the docs, are they not.  I notice in current MSDN on-line lib one finds  
  
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/c9f6d06c-da24-48ea-908a-2462c33f7ee3.asp  
  
<quote>  
  
Activation security (also called launch security) helps control who can  
  
launch a server. Activation security is automatically applied by the Service  
  
Control Manager (SCM) of a particular machine.   . . .  
  
</quote>  
  
but one can also find  
  
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/3474f8ad-f041-4886-ad39-ff0603c5c69e.asp  
  
<quote>  
  
If the client does not specify an explicit COAUTHINFO structure and  
  
instead sets the pointer to NULL, COM will attempt to authenticate the  
  
client. If it cannot authenticate the client, COM checks the launch  
  
permission  
  
security descriptor to see whether there is a NULL DACL or an ACL that  
  
allows access to Everyone. If this check succeeds, the server is launched.  
  
Therefore, even if the client does not specify a COAUTHINFO structure,  
  
unsecure activation may take place when the server allows it.  
  
</quote>  
  
Roughly speaking (as a non-Com-programmer) it seems to be saying that  
  
to use a component there are two things involved.  Getting use of the  
  
methods  
  
of the component and the other getting the RPC transport established for  
  
this.  
  
It is sounding like activation is a function of the last.  If it is not in  
  
use then only  
  
the prior call based security governs what does or does not happen, while if  
  
it is in use it functions much like share level permissions do for remote  
  
access  
  
to NTFS storage in that one must first pass that check and it sets limit of  
  
what  
  
call-level can allow.  
  
You might want to check the notes for the coserverinfo structure,  and  
  
notice  
  
how it may be used to alter the credentials or auth methods used by RPC and  
  
hence subsequent COM calls  
  
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/html/88c94a7f-5cf0-4d61-833f-91cba45d8624.asp  
  
Again, I am not a COM programmer.  
  
<hshen.ca@gmail.com> wrote in message  
  
news:1137422967.874150.287990@o13g2000cwo.googlegroups.com...


Pete's Blog   |    Pete's Resume   |    Robbe's Blog   |    Robbe's Resume   |    Archive #2   |    Archive #3   |    Dotnetslackers   |    XmlPitStop   |    Advertise   |   Contact Us   |   Privacy   |   Copyright (c) 2000 - 2009 eggheadcafe.com  All rights reserved.