Bug 210049

Summary: jails mishandle the default lo0 127.0.0.1 loopback interface
Product: Base System Reporter: Joe Barbish <qjail1>
Component: kernAssignee: freebsd-jail (Nobody) <jail>
Status: New ---    
Severity: Affects Many People CC: crest, dch, jamie, me, pat, zlei
Priority: ---    
Version: 10.3-RELEASE   
Hardware: Any   
OS: Any   

Description Joe Barbish 2016-06-05 13:19:00 UTC
The undocumented behavior of non-vimage jails populated with an port or pkg that defaults to communicating over the lo0 127.0.0.1 loopback interface is to simply map it over with the jails defined primary IP address. This default jail behavior exposes that port/pkg to all the traffic entering the jail over its primary IP address whether from the LAN or public network. This is a security issue. 

This is not the behavior of 127.0.0.1 as defined in [RFC1700, page 5] which states  "127.0.0.0/8 - This block is assigned for use as the Internet host   loopback address. A datagram sent by a higher level protocol to an address anywhere within this block should loop back inside the host."  In a jails case the word "host" would also mean "jail".

The administrators of such jails have to manually activate loopback by adding lo0:127.0.0.x to the jails ip4_addr parameter value alone with the jails primary IP address. Then manually change the conf file of all the applications running in that jail to use that lo0 127.0.0.x IP address. Or an alternate is to add a statement to the hosts rc.conf to clone the lo0 interface and them
code as above. This means each jail has a unique loopback ip address. 

This manual work around is not documented and should not be necessary. The non-vimage jail should just handle loopback localhost by default. The kernel lo0 interface needs to be made jail aware.

This issue has been recently discussed with James Gritton jamie@freebsd.org and he agrees its time to address this long outstanding security issue.
Comment 1 crest 2024-12-18 03:36:32 UTC
Alias jails map 127.0.0.1 and
Comment 2 Zhenlei Huang freebsd_committer freebsd_triage 2024-12-18 08:46:49 UTC
Or we should document this security issue in the **BUGS** section before a final fix ?
Comment 3 crest 2024-12-18 09:26:04 UTC
Alias jails map 127.0.0.1 (and ::1) to their primary alias IP address per address family. This can be quite useful to intentionally expose a service bound to a changing IP address per launch, but it can also expose services that are only meant to listen to the loopback address which a jail with alias networking doesn't have unless the loopback address is one of its alias IP addresses. Documenting this behaviour more prominently is the best we can do without breaking this double-edged feature.