On 07/10/2015 04:57 PM, Jason Gunthorpe wrote: > On Fri, Jul 10, 2015 at 01:56:36PM -0400, Doug Ledford wrote: > >> Are there security issues? Yes. Are we going to solve them in this >> patch set? No. Especially since those security issues extend beyond >> iSER + iWARP. > > I think my biggest concern is we don't inadvertently open a security > hole on a machine that just happens to have an iwarp card installed, > but has nothing to do with HPC. Given the number of Chelsio cards utilized in things like TCP Offload and iSCSI offload situations versus HPC, this isn't an unreasonable thing to consider. However, the attack vector is limited to a situation where all of the below are true: 1) An RDMA connection exists or can be created (TOE and iSCSI offload do not do this, so something else would have to be listening and accepting incoming RDMA connections) 2) A global rkey exists (so it's not sufficient that any old RDMA app be running, at least one app/ULP *must* create the global writable rkey) 3) The QP of the RDMA connection belongs to the same PD as the global rkey (so our attack surface is limited to the bad server app/ULP and the existence of this does not put other apps/ULPs at risk) 4) For maximum damage, the global rkey must also belong to an app/ULP with elevated privilege or direct memory access (kernel ULPs are prime targets, as a user app would have a mapped address space and the global rkey in its domain would apply to it's process space, limiting the damage that can be done). Given all these requirements, I don't see this as a possibility. In order to be at risk, there *must* be a listening app/ULP, and we should be able to print out a nice, dire warning in dmesg if that app/ULP opens itself up in this way. > The clearest scary path I see is a server listening on a QP and using > IB_ACCESS_REMOTE_WRITE. That sure looks easy to exploit. This goes back to the trust domain. For a server, you simply can't allow untrusted clients. Period. But that's easy enough to do with access controls and connection filtering. The app/ULP itself doesn't even need to be filter aware as you can do the filtering in the TCP stack on the primary listening socket using the netfilter tools. And that goes back to the kernel warning I referred to in my previous email. Let users know what module is making this risky decision and it becomes easy to filter any ports that module's services are listening on. > A client doing this.. It is alot harder to exploit.. iSER is client > only, so less worrying. Can anyone else think of a way to attack the > client? TCP injection only is all I've got. -- Doug Ledford <dledford@xxxxxxxxxx> GPG KeyID: 0E572FDD
Attachment:
signature.asc
Description: OpenPGP digital signature