Happy New Year! Oh, and if you include GNU's
wget utility in software you write, pull down the new version released on Boxing Day and push out updates to your users.
The popular utility retrieves internet-hosted HTTP/HTTPS and FTP/FTPS content and some years ago began storing extended attributes on disk as URIs.
On Christmas Day, security researcher Gynvael Coldwind (@gynvael) noted on Twitter that the stored attributes can include user credentials:
TIL from @q3k and @marcan42: wget saves downloaded file's source URL (and sometimes referrer) in extended attributes.— Gynvael Coldwind (@gynvael) December 25, 2018
This includes the cases where the URL has a user/password in it 🙃
$ getfattr -d -m - test
Though only stored locally, user IDs and passwords weren't protected, and as Hanno Böck pointed out on the OSS-Sec mailing list, URLs can even contain "secret tokens" used for external services like file hosting.
"The URL of downloads gets stored via filesystem attributes on systems that support Unix extended attributes," Böck wrote, and they were easily accessible on any logged-in machine using the
The bug has been designated CVE-2018-20483 and could be present in other systems as noted by the Mitre entry. "This also applies to Referer information in the user.xdg.referrer.url metadata attribute. According to 2016-07-22 in the Wget ChangeLog, user.xdg.origin.url was partially based on the behavior of fwrite_xattr in tool_xattr.c in curl."
Böck said the same behaviour has been reported to the Chrome team and is awaiting a fix. Hector Martin tweeted that the stored information survives being moved to a different filesystem, so someone wanting to steal stored URLs from can move it from the target's hard drive to a USB key with no trouble.