libcurl-using applications can ask for a specific client certificate to be
used in a transfer. This is done with the CURLOPT_SSLCERT
option (--cert
with the command line tool).
When libcurl is built to use the macOS native TLS library Secure Transport, an application can ask for the client certificate by name or with a filename - using the same option. If the name exists as a file, it is used instead of by name.
If the application runs with a current working directory that is writable by
other users (like /tmp
), a malicious user can create a filename with the
same name as the app wants to use by name, and thereby trick the application
to use the file based cert instead of the one referred to by name making
libcurl send the wrong client certificate in the TLS connection handshake.