Description of problem: Lynx reads .mailcap and .mime.types from its CWD, making it possible for a malicious person to make it execute arbitrairy code when user launches lynx while its working directory contains attacker-provided contents. Steps to Reproduce: $ cat .mime.types application/x-bug bug $ cat .mailcap application/x-bug; xmessage 'Hello, World!' $ cat poc.bug $ lynx poc.bug ( xmessage 'Hello, World!' ) < /home/lkundrak/L28618-1037TMP.bin ... Fix: Make lynx read files from ~ instead of CWD. Debian patch is unusable here, they completly remove code for reading the files in question.
This is more accurate than the Debian report, which does not distinguish between the starting directory and directories which lynx may visit. I prefer (unless someone can point out a flaw) to use IsOurFile() to verify that the file is safe to read.
Depending on the use, the Debian patch has some limited value. As I noted, I added logic to use IsOurFile() to reduce the scope (and that patch is easily resync'd to 2.8.5). Properly handling the user's mailcap/mime file settings is harder. The effect of the Debian patch is to always append that setting to the user's home-path. It doesn't check if the global setting is not a relative path. I added a check for the latter, and chose to address the user's settings by making tilde-expansion in those work - and then enforcing absolute pathnames for the user's settings. That's in lynx 2.8.7dev.4 (resyncing the tilde expansion stuff is more work). I'd suggest adding the 2.8.6rel.3 patch (for IsOurFile), and combining that with the Debian patch for fixes to older releases.
I'll work on this, this evening to put together a possible patch to combine the different aspects.
See http://lynx.isc.org/lynx2.8.6/patches/ http://lynx.isc.org/lynx2.8.5/patches/ http://lynx.isc.org/lynx2.8.4/patches/
For the sake of completeness... This issue was fixed upstream in 2.8.6rel.4. As of this version, lynx will not search current working directory for PERSONAL_MAILCAP (.mailcap by default) and PERSONAL_EXTENSION_MAP (.mime.types by default) files, but will only try to find those files in the user's home directory. Patches for older versions: ftp://lynx.isc.org/lynx2.8.5/patches/2.8.5rel.6.patch.gz ftp://lynx.isc.org/lynx2.8.4/patches/lynx2.8.4rel.1e.patch
CVE id CVE-2006-7234 was assigned to this issue: Untrusted search path vulnerability in Lynx before 2.8.6rel.4 allows local users to execute arbitrary code via malicious (1) .mailcap and (2) mime.types files in the current working directory.
This issue was addressed in: Red Hat Enterprise Linux: http://rhn.redhat.com/errata/RHSA-2008-0965.html
Reporter changed to security-response-team by request of Jay Turner.