Find out how a vulnerability in macOS Finder system allows remote attackers to trick users into running arbitrary commands.
A vulnerability in macOS Finder allows files whose extension is
inetloc to execute arbitrary commands, these files can be embedded inside emails which if the user clicks on them will execute the commands embedded inside them without providing a prompt or warning to the user.
An independent security researcher, Park Minchan, has reported this vulnerability to the SSD Secure Disclosure program.
- macOS Big Sur and prior
The vendor has notified us that
file:// has been silently patched the vulnerability in Big Sur and has not assigned it a CVE. We have notified Apple that
FiLe:// (just mangling the value) doesn’t appear to be blocked, but have not received any response from them since the report has been made. As far as we know, at the moment, the vulnerability has not been patched.
A vulnerability in the way macOS processes
inetloc files causes it to run commands embedded inside, the commands it runs can be local to the macOS allowing the execution of arbitrary commands by the user without any warning / prompts.
inetloc files are shortcuts to an Internet location, such as an RSS feed or a telnet location; and contain the server address and possibly a username and password for SSH and telnet connections; can be created by typing a URL in a text editor and dragging the text to the Desktop.
The case here
inetloc is referring to a
file:// “protocol” which allows running locally (on the user’s computer) stored files.
inetloc file is attached to an email, clicking on the attachment will trigger the vulnerability without warning.
Newer versions of macOS (from Big Sur) have blocked the
file:// prefix (in the
com.apple.generic-internet-location) however they did a case matching causing
fIle:// to bypass the check.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>URL</key> <string>FiLe:////////////////////////System/Applications/Calculator.app</string> </dict> </plist>