tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Proposal to automatically make the owner/user of an accepted socket the current process



On Fri, 6 Jun 2025 14:21:05 +0000
Emmanuel Nyarko <emmankoko519%gmail.com@localhost> wrote:

> > On 6 Jun 2025, at 2:07 PM, Vadim Goncharov <vadimnuclight%gmail.com@localhost> wrote:
> > 
> > On Fri, 6 Jun 2025 08:45:43 -0400
> > Thor Lancelot Simon <tls%panix.com@localhost> wrote:
> >   
> >> On Fri, Jun 06, 2025 at 07:33:37AM +0000, Emmanuel Nyarko wrote:  
> >>>   
> >>>> On 5 Jun 2025, at 11:12???PM, Thor Lancelot Simon <tls%panix.com@localhost> wrote:
> >>>> 
> >>>> What will happen when a socket changes hands by file descriptor passing
> >>>> over a Unix domain socket?    
> >>> 
> >>> But the reason is I want to add this support is for NPF to be able to
> >>> give a user based security to Unix servers in network layer. Like being
> >>> able to allow or deny certain users on a server from giving out
> >>> resources. so maybe for now, even if I???m doing it as opt-in, I can
> >>> still exempt UDS from it because I don???t think it will add anything to
> >>> Unix Domain Sockets    
> >> 
> >> I don't think you understand.  I can accept a TCP connection on an AF_INET
> >> socket, then take the resulting file descriptor and transfer it to a
> >> completely unrelated process using a control message on an AF_UNIX socket.
> >> That process can be owned by a different user.  What do you intend to
> >> happen to the AF_INET socket that is passed in this way?  
> > 
> > Does that matter at all? For the common needed case, e.g. FreeBSD's ipfw(8)
> > has uid/gid (and then also jail id) support for decades - not without
> > layering violation problems in code, though. The BUGS section lists:
> > 
> >     Rules using uid or gid may not behave as expected.  In particular,
> >     incoming SYN packets may have no uid or gid associated with them since
> >     they do not yet belong to a TCP connection  
> listening sockets are loaded into the pcb table in NetBSD AFAIK. So can
> easily locate the socket using a daddr and dport lookup for them sockets.
> And that should be easily found. Maybe FreeBSD doesn’t load the
> bound/listening sockets into the pcbtable.

FreeBSD also uses inpcb table as derived from common BSD ancestor. Actually
"layering violation problems" means "locking problems" - how to do things both
correct and fast on SMP systems, caching (stale info) and so on.

> > , and the uid/gid associated
> >     with a packet may not be as expected if the associated process calls
> >     setuid(2) or similar system calls.  
> 
> > 
> > -- 
> > WBR, @nuclight  
> 
> A scoffer seeks wisdom in vain, but knowledge is easy for a man of
> understanding. Emmanuel

-- 
WBR, @nuclight


Home | Main Index | Thread Index | Old Index