Thread (6 messages) 6 messages, 2 authors, 2021-01-27

Re: [PATCH bpf-next v3 1/2] bpf: allow rewriting to ports under ip_unprivileged_port_start

flat view

From: Stanislav Fomichev <hidden>
Date: 2021-01-27 12:48:24
Also in: bpf

On Tue, Jan 26, 2021 at 10:01 AM Martin KaFai Lau [off-list ref] wrote:
On Tue, Jan 26, 2021 at 08:51:03AM -0800, Stanislav Fomichev wrote:
quoted
At the moment, BPF_CGROUP_INET{4,6}_BIND hooks can rewrite user_port
to the privileged ones (< ip_unprivileged_port_start), but it will
be rejected later on in the __inet_bind or __inet6_bind.

Let's add another return value to indicate that CAP_NET_BIND_SERVICE
check should be ignored. Use the same idea as we currently use
in cgroup/egress where bit #1 indicates CN. Instead, for
cgroup/bind{4,6}, bit #1 indicates that CAP_NET_BIND_SERVICE should
be bypassed.

v3:
- Update description (Martin KaFai Lau)
- Fix capability restore in selftest (Martin KaFai Lau)

v2:
- Switch to explicit return code (Martin KaFai Lau)
[ ... ]
quoted
@@ -499,7 +501,8 @@ int __inet_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len,

      snum = ntohs(addr->sin_port);
      err = -EACCES;
-     if (snum && inet_port_requires_bind_service(net, snum) &&
+     if (!(flags & BIND_NO_CAP_NET_BIND_SERVICE) &&
+         snum && inet_port_requires_bind_service(net, snum) &&
The same change needs to be done on __inet6_bind()
and also adds a test for IPv6 in patch 2.
Oh, damn, I did add the flag but forgot to handle it. Thanks for
catching this, will do!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help