Subject: Re: [PATCH net-next v3 10/24] ovpn: implement basic RX path (UDP)

From: Sabrina Dubroca <[email-masked]>
Date: Thu, 18 Jul 2024 15:40:42 +0200

2024-07-18, 15:27:42 +0200, Antonio Quartulli wrote:
> On 18/07/2024 15:11, Sabrina Dubroca wrote:
> > > basically the idea is: with our encapsulation we can guarantee that what
> > > entered the tunnel is also exiting the tunnel, without corruption.
> > > Therefore we claim that checksums are all correct.
> > 
> > Can you be sure that they were correct when they went into the tunnel?
> > If not, I think you have to set CHECKSUM_NONE.
> 
> I can't be sure, because on the sender side we don't validate checksums
> before encapsulation.
> 
> If we assume that outgoing packets are always well formed and they can only
> be damaged while traveling on the link, then the current code should be ok.
> 
> If we cannot make this assumption, then we need the receiver to verify all
> checksums before moving forward (which is what you are suggesting).
> 
> Is it truly possible for the kernel to hand ovpn a packet with invalid
> checksums on the TX path?

The networking stack shouldn't generate packets with broken checksums,
but it could happen. On a VPN server that's giving access to an
internal network, I think the packet could get corrupted on the
internal network and may be pushed without verification into the
tunnel.

It's also possible to inject them with packet sockets for
testing. Using scapy to send packets over your ovpn device should
allow you to do that.

-- 
Sabrina