Installation

March 5, 2026 · View on GitHub

BlueToolkit

Extensible Bluetooth vulnerability testing framework for BR/EDR and BLE.

DocsInstallationUsageExploitsHardwareTODOs Automotive EvaluationBluetooth ResourcesLicense


BlueToolkit is a modular, black-box Bluetooth security testing framework for Bluetooth Classic (BR/EDR) and Bluetooth Low Energy (BLE). It supports semi-automated testing and has three main modules:

  • Recon: gathers Bluetooth capabilities and security configuration.
  • Exploit: executes tests for (currently) 43 public exploits (MitM, RCE, DoS, etc.). The vulnerability templates are in the exploits folder. Support for more can be added by TODO.
  • Report: generates structured, machine- and human-readable JSON reports.

We evaluated BlueToolkit on 22 cars from different vendors (Audi, BMW, Chevrolet, Honda, Hyundai, Mercedes-Benz, Mini, Opel, Polestar, Renault, Skoda, Toyota, VW, Tesla) and uncovered 128 vulnerabilities.

In addition, we show how to Hijack online accounts via MAP for already established connections or with a MitM position.

This work led to a research paper accepted at WOOT 25': add missing link when we have it

Installation

BlueToolkit can be installed on bare metal Ubuntu/Debian systems (recommended) or using a Virtual Machine. In both cases the installer will prompt to install the specific modules for Braktooth and BluetoothAssistant, which require specific hardware devices to be available and plugged in. Standalone modules installation can also be done separately by running the installer again.

Normal Installation Installation:
git clone https://github.com/sgxgsx/BlueToolkit
chmod +x ./BlueToolkit/install.sh
sudo ./BlueToolkit/install.sh [-dev]
VM Installation

Prerequisites:

git clone https://github.com/sgxgsx/BlueToolkit --recurse-submodules
cd BlueToolkit/vagrant
vagrant up

After Installation:

  • You need to allow the virtual machine to access the Bluetooth module or additional hardware through USB, which requires you to do the following:
  • USB support is already switched on, that's why open VirtualBox
  • Find a running virtual machine and click on "Show"
  • Click on "Devices" -> "USB"
  • You will be presented with multiple devices that you can switch on for the virtual machine
  • Tick any device that you need (Bluetooth module, hardware, phone) or tick all devices to be sure.

Usage

Run bluekit -h to display BlueToolkit usage information:

usage: bluekit [-h] [-t TARGET] [-l] [-c] [-ct] [-ch] [-v VERBOSITY] [-ex EXCLUDEEXPLOITS [EXCLUDEEXPLOITS ...]] [-e EXPLOITS [EXPLOITS ...]] [-r] [-re] [-rej] [-hh HARDWARE [HARDWARE ...]] ...

positional arguments:
  rest

options:
  -h, --help            show this help message and exit
  -t TARGET, --target TARGET
                        target MAC address
  -l, --listexploits    List exploits or not
  -c, --checksetup      Check whether Braktooth is available and setup
  -ct, --checktarget    Check connectivity and availability of the target
  -ch, --checkpoint     Start from a checkpoint
  -v VERBOSITY, --verbosity VERBOSITY
                        Verbosity level
  -ex EXCLUDEEXPLOITS [EXCLUDEEXPLOITS ...], --excludeexploits EXCLUDEEXPLOITS [EXCLUDEEXPLOITS ...]
                        Exclude exploits, example --exclude exploit1, exploit2
  -e EXPLOITS [EXPLOITS ...], --exploits EXPLOITS [EXPLOITS ...]
                        Scan only for provided --exploits exploit1, exploit2; --exclude is not taken into account
  -r, --recon           Run a recon script
  -re, --report         Create a report for a target device
  -rej, --reportjson    Create a report for a target device
  -hh HARDWARE [HARDWARE ...], --hardware HARDWARE [HARDWARE ...]
                        Scan only for provided exploits based on hardware --hardware hardware1 hardware2; --exclude and --exploit are not taken into account

Some usage examples are:

  • List all available exploits (no root required):

    bluekit -l

  • Run recon:

    sudo bluekit -t AA:BB:CC:DD:EE:FF -r

  • Test connectivity:

    sudo bluekit -t AA:BB:CC:DD:EE:FF -ct

  • Test one or more exploits (space separated):

    sudo bluekit -t AA:BB:CC:DD:EE:FF -e invalid_max_slot au_rand_flooding internalblue_knob

More documentation is available in our wiki

Hardware

Some attacks require specific hardware:

  • ESP-WROVER-KIT-VE for Braktooth vulnerabilities
  • Nexus5 phone for Internalblue. Could be replaced with a CYW20735 but two exploits won't work and it would need a new hardware profile.
  • CYW920819M2EVB-01 for BIAS, BLUR and BLUFFS attacks.

Available Bluetooth Vulnerabilities and Attacks

BlueToolkit automatically downloads all vulnerability and hardware templates. BlueToolkit templates repository provides a full list of ready-to-use templates. Additionally, you can write your own templates and checks as well as add new hardware by following BlueToolkit's templating guide The YAML reference syntax is available here

We collected and classified Bluetooth vulnerabilities in an "Awesome Bluetooth Security" way. We used the following sources - ACM, IEEE SP, Blackhat, DEFCON, Car Hacking Village, NDSS, and Google Scholars. Looked for the following keywords in Search Engines such as Google, Baidu, Yandex, Bing - Bluetooth security toolkit, Bluetooth exploits github, Bluetooth security framework, bluetooth pentesting toolkit. We also parsed all Github repositories based on the following parameters - topic:bluetooth topic:exploit, topic:bluetooth topic:security.

Currently BlueToolkit check the following vulnerabilities and attacks:

For manual attacks refer to the documentation.

VulnerabilityCategoryTypeVerification typeHardware req.Tested
Always pairableChainingChainingManual
Only vehicle can initiate a connectionChainingChainingManual
Fast rebootChainingChainingManual
SC not supportedChainingInfoAutomated
possible check for BLURChainingInfoAutomated
My name is keyboardCriticalRCESemi-automated
CVE-2017-0785CriticalMemory leakAutomated
CVE-2018-19860CriticalMemory executionAutomated
V13 Invalid Max Slot TypeDoSDoSAutomated
V3 Duplicated IOCAPDoSDoSAutomated
NiNo checkMitMMitMSemi-automated
Legacy pairing usedMitMMitMAutomated
KNOBMitMMiTMSemi-automated
CVE-2018-5383MitMMiTMAutomated
Method Confusion attackMitMMiTMAutomated
SSP supported <= 4.0 weak crypto or SSP at allMitMInfo/MitMAutomated
CVE-2020-24490CriticalDoSAutomated
CVE-2017-1000250CriticalInfo leakAutomated
CVE-2020-12351CriticalRCE/DoSAutomated
CVE-2017-1000251CriticalRCE/DoSAutomated
V1 Feature Pages ExecutionCriticalRCE/DoSAutomated
Unknown duplicated encapsulated payloadDoSDoSAutomated
V2 Truncated SCO Link RequestDoSDoSAutomated
V4 Feature Resp. FloodingDoSDoSAutomated
V5 LMP Auto Rate OverflowDoSDoSAutomated
V6 LMP 2-DH1 OverflowDoSDoSAutomated
V7 LMP DM1 OverflowDoSDoSAutomated
V8 Truncated LMP AcceptedDoSDoSAutomated
V9 Invalid Setup CompleteDoSDoSAutomated
V10 Host Conn. FloodingDoSDoSAutomated
V11 Same Host ConnectionDoSDoSAutomated
V12 AU Rand FloodingDoSDoSAutomated
V14 Max Slot Length OverflowDoSDoSAutomated
V15 Invalid Timing AccuracyDoSDoSAutomated
V16 Paging Scan DeadlockDoSDoSAutomated
Unknown wrong encapsulated payloadDoSDoSAutomated
Unknown sdp unknown element typeDoSDoSAutomated
Unknown sdp oversized element sizeDoSDoSAutomated
Unknown feature req ping pongDoSDoSAutomated
Unknown lmp invalid transportDoSDoSAutomated
CVE-2020-12352CriticalInfo leakAutomated

Novel attacks

These attacks a novel/new and are tested by the framework

VulnerabilityCategoryTypeVerification typeHardware req.Tested
Insecure NC implementationMitMMitMManual
Vehicular NiNoMitMInfoManual
Contact ExtractorCriticalBACManual

Vulnerabilities to be added soon

VulnerabilityCategoryTypeVerification typeHardware req.TestedScheduled to be added
BLURMitM?-
BIASMitM?-
BLUFFSMitM?-
BlueRepliCriticalBAC-
CVE-2020-26555MitMMiTM-

TODO List

  • Add Support for BLE (Bluetooth Low Energy)
    • Implement BLE functionality to enhance the project's connectivity capabilities.
  • Continuously (Re-)Develop Proofs of Concept (PoCs)
    • Develop new PoCs to explore additional use cases or features.

Bluetooth Vulnerabilities and Attacks

Additionally, we found the following Bluetooth Classic and Bluetooth Low Energy (BLE) vulnerabilities. The table has the following information about the attacks and vulnerabilities - name, type either implementation-specific, protocol-specific or affecting a BT profile, Bluetooth Type (BLE, BT, BT + BLE), BT versions affected, number of exploits, year released, CVE if available, CVSS if available, Hardware if required, Proof of Concept if available and additional information in the comment section with additional links or explanation.

Exp. FamilyNameTypeBT TypeBT verexp. #YearCVECVSSHardwarePoCLinkComment
Qualcomm WSA8835 attckImpBLE12023https://www.cvedetails.com/cve/CVE-2023-21647/?q=CVE-2023-21647Improper GATT packet verification
Auth bypass, spoofingImpBLE12022https://fmsh-seclab.github.io/Authentication Bypass by Spoofing in Tesla Keys
unauth MITMProtBLE4.0 - 5.312022https://www.cvedetails.com/cve/CVE-2022-25836/Check CVE for details, relies on Method Confusion
BLE Proximity Auth relayRelBLE4.0 - 5.312022https://research.nccgroup.com/2022/05/15/technical-advisory-tesla-ble-phone-as-a-key-passive-entry-vulnerable-to-relay-attacks/BLE Proximity Authentication Vulnerable to Relay Attacks
SniffleSnifBLE4.0-5.012022TI CC1352/CC26x2https://github.com/nccgroup/Sniffle
InjectaBLEProtBLE4.0 - 5.212021nRF52840https://github.com/RCayre/injectable-firmwarehttps://hal.laas.fr/hal-03193297v2/documentMITM, Send malicious packets, post-exploitation after the session was established/hijacked (Imp and model specific)
jacknimbleImpBLE2020nRF52840https://github.com/darkmentorllc/jackbnimblehttps://i.blackhat.com/USA-20/Wednesday/us-20-Kovah-Finding-New-Bluetooth-Low-Energy-Exploits-Via-Reverse-Engineering-Multiple-Vendors-Firmwares.pdf3 exploits for specific hardware, CVE-2020-15531
SweynToothImpBLE122020nRF52840https://github.com/Matheus-Garbelini/sweyntooth_bluetooth_low_energy_attackshttps://asset-group.github.io/disclosures/sweyntooth/
BlueDoorProtBLE4.0 - 5.212020nRF51822http://tns.thss.tsinghua.edu.cn/~jiliang/publications/MOBISYS2020_BlueDoor.pdfMITM
Downgrade attackProtBLE4.2 - 5.012020TICC2640 & Adafruit Bluefruit LE Sniffehttps://www.usenix.org/system/files/sec20-zhang-yue.pdfMITM through downgrade (SCO) CVE-2020-35473
BLESASpoofBLE12020https://www.usenix.org/system/files/woot20-paper-wu.pdfSpoofing to establish MITM and disable encryption
SweynToothCypress PSoc 4 BLEImpBLE12019https://www.cvedetails.com/cve/CVE-2019-16336/?q=CVE-2019-16336DoS
SweynToothCypress PSoc 4 BLEImpBLE12019https://www.cvedetails.com/cve/CVE-2019-17061/?q=CVE-2019-17061Buffer Overflow
SweynToothNXP KW41Z up to 2.2.1ImpBLE12019https://www.cvedetails.com/cve/CVE-2019-17060/?q=CVE-2019-17060BLE Link layer buffer overflow
SweynToothSTMicroelectronics BLE StackImpBLE12019https://www.cvedetails.com/cve/CVE-2019-19192/?q=CVE-2019-19192through 1.3.1 for STM32WB5x devices does not properly handle consecutive ATT requests on reception
Co-located app BLEBLE12019Theoryhttps://www.usenix.org/system/files/sec19-sivakumaran_0.pdfCo-located apps can get BLE data, and thus exfiltrate needed info??? can we do a relay with it?
BleedingBitImpBLE4.2 - 5.012018https://www.armis.com/research/bleedingbit/
GATTackingProtBLE4.012016CSR 8510-based USB donglehttps://github.com/securing/gattackerhttps://www.blackhat.com/docs/us-16/materials/us-16-Jasek-GATTacking-Bluetooth-Smart-Devices-Introducing-a-New-BLE-Proxy-Tool.pdfMITM BLE
CrackleProtBLE412013https://github.com/mikeryan/cracklehttps://www.usenix.org/system/files/conference/woot13/woot13-ryan.pdfcrack ble encryption
BluezMynameIsKeyboardImpBT12023CVE-2023-458668.8https://github.com/marcnewlin/hi_my_name_is_keyboard-CVE-2023-45866, CVE-2023-45866, CVE-2023-45866
AntonioliBLUFFSProtBT4.2-5.262023CVE-2023-240236.8CYW920819EVB-02https://github.com/francozappa/bluffs
-ProtBT12022https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9833777Cross-stack illegal access attack (formal methods) + CVE-2020-26560 and CVE-2020-15802 mentioned in other entries
BlackToothProtBT12022CYW920819EVB-02https://dl.acm.org/doi/pdf/10.1145/3548606.35606681 new attack (connection stage) + KNOB and other attacks that were reused
BLAPProtBT12022Theoryhttps://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9833575Extract Link Key from the HCI dump needs physical access to the car (applicable in car sharing only)
Blue's CluesProtBT<=5.32022CVE-2022-246954.3Ubertooth & USRP B210 SDRhttps://github.com/TylerTucker/BluesClueshttps://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10179358CVE-2022-24695 affects Privacy, defeats non-discoverable feature of BT/EDR
unauth MITMProtBT1.0B-5.312022CVE-2022-258377.5https://www.cvedetails.com/cve/CVE-2022-25837/Check CVE for details, relies on Method Confusion, CVE-2022-25837
BraktoothBrakToothImpBT3.0 - 5.2162021CVE-2021-281398.8ESP-WROVER-KIThttps://github.com/Matheus-Garbelini/braktooth_esp32_bluetooth_classic_attackshttps://asset-group.github.io/disclosures/braktooth/
BleedingTooth BadChoiceImpBT4.2-5.212020CVE-2020-123526.5https://github.com/google/security-research/security/advisories/GHSA-7mh3-gq28-gfrqhttps://google.github.io/security-research/pocs/linux/bleedingtooth/writeup.htmlInformation leak
BleedingTooth BadKarmaImpBT5.012020CVE-2020-123518.8https://github.com/google/security-research/security/advisories/GHSA-7mh3-gq28-gfrqhttps://google.github.io/security-research/pocs/linux/bleedingtooth/writeup.htmlstack-based info leak BlueZ
BleedingTooth BadVibesImpBT5.0+12020CVE-2020-244906.5https://github.com/google/security-research/security/advisories/GHSA-ccx2-w2r4-x649https://google.github.io/security-research/pocs/linux/bleedingtooth/writeup.htmlRequires BT 5.0 and higher
Snapdragon Auto CVEsImpBT42020https://www.cvedetails.com/cve/CVE-2020-3703/?q=CVE-2020-3703CVE-2020-11156 Snapdragon Auto, no exploits CVE-2020-11154 CVE-2020-11155, CVE-2020-3703
BlueRepliImpBT12020No exploit so farhttps://i.blackhat.com/USA-20/Wednesday/us-20-Xu-Stealthily-Access-Your-Android-Phones-Bypass-The-Bluetooth-Authentication.pdfhttps://github.com/DasSecurity-HatLab/BlueRepli-Plus
UberToothSnifBTALL12020Ubertoothhttps://github.com/greatscottgadgets/ubertoothhttps://ubertooth.readthedocs.io/en/latest/Sniffing
AntonioliBIASProtBT<=5.042019CVE-2020-101355.4CYW920819, possibly CYW920819M2EVB-01https://github.com/francozappa/biashttps://francozappa.github.io/about-bias/CVE-2020-10135
MITM SSP BT 5.0ProtBT512018https://link.springer.com/article/10.1007/s00779-017-1081-6passkey entry association model is vulnerable to the MITM
BlueBorneCVE-2017-0785ImpBT12017CVE-2017-07856.5
BlueBorneCVE-2017-1000251ImpBT542017CVE-2017-10002518.0https://github.com/ArmisSecurity/bluebornehttps://www.armis.com/research/blueborne/
Lexus BT Heap OverflowImpBT12017CVE-2020-55518.8Theoryhttps://keenlab.tencent.com/en/2020/03/30/Tencent-Keen-Security-Lab-Experimental-Security-Assessment-on-Lexus-Cars/RCE in Lexus (LC, LS, NX, RC, RC F), TOYOTA CAMRY, and TOYOTA SIENNA manufactured not in Japan from Oct. 2016 to Oct. 2019
BlueEarSnifBTALL12016Ubertooth (2)https://github.com/albazrqa/BluEarhttps://www.cs.cityu.edu.hk/~jhuan9/papers/blueear16mobisys.pdfSniffing, extending the code of Ubertooth
CVE-2018-19860ImpBT12014CVE-2018-198608.8Nexus 5 (internalblue)internalblue Nexus 5 examplesImp. specific attacks on Broadcom chips BCM4335C0, BCM43438A1, and some other from 2012-2014 (DoS)
NINO MITM attackProtBT22010Nexus 5 (internalblue)Theory + a PoC from internalblue + easy exploit similar to method confusionhttps://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5374082NINO - no input no output (mitm + out-of-band mitm attacks). https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4401672
Attacks on PairingProtBT2.112008https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=ac095564c820f02b2793694018d419ce99279de0MITM, attack on 2.1
Cracking Bluetooth PINBruteBT12005Theoryhttps://www.usenix.org/legacy/event/mobisys05/tech/full_papers/shaked/shaked.pdf6
Key extractionBT1.0B12001https://link.springer.com/chapter/10.1007/3-540-45353-9_14Old attack on very old version 1.0B
BadBluetoothProtBT + adj12019Theoryhttps://staff.ie.cuhk.edu.hk/~khzhang/my-papers/2019-ndss-bluetooth.pdfToo high assumptions (malicious app installed + compromised device)
BlueMirrorBlueMirror BT Mesh profile bruteProtBT Profile2.1-5.212021CVE-2020-265567.5Brute-force insufficient random AuthValue in BT Mesh 1.0 and 1.0.1 to complete authentication
BlueMirrorBlueMirror BT Mesh profile brute 2ProtBT Profile2.1-5.212021CVE-2020-265577.5Determine Authvalue in BT Mesh 1.0 and 1.0.1 via brute-force attack
BlueMirrorBlueMirror BT Mesh profile no bruteProtBT Profile2.1-5.212021CVE-2020-265598.8Auth bypass in Mesh profile 1.0, 1.0.1, can determine authvalue and other data without brute-force
BlueMirrorBlueMirror BT Mesh profileProtBT Profile1.0B-5.212020CVE-2020-265608.1https://kb.cert.org/vuls/id/799380CVE-2020-26560 - Auth bypass in Mesh profile 1.0, 1.0.1  https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9474325
BlueMirrorBlueMirror Legacy pairingProtBT/BLE2.1-5.212021CVE-2020-265555.4https://kb.cert.org/vuls/id/799380Complete pairing without knowledge of the PIN  https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9474325     https://www.ieee-security.org/TC/SP2021/SPW2021/WOOT21/files/woot21-claverie-slides.pdf
BlueMirrorBlueMirror passkey leakProtBT/BLE2.1-5.212021CVE-2020-265584.2MitM attacker can determine passkey value through reflection of the public key (can leak passkey value 1 bit at a time)
AntonioliBLURToothProtBT/BLE4.2, 5.0, 5.1, 5.242020CVE-2020-158025.9https://github.com/francozappa/blurhttps://hexhive.epfl.ch/BLURtooth/CVE-2020-15802
Fixed Coord. Inv. AttackImpBT/BLE2.1-5.212019CVE-2018-5383Nexus 5 (internalblue) or CY5677internalblue Nexus 5 exampleshttps://biham.cs.technion.ac.il/BT/MITM exploiting crypto (implementation/protocol attack) CVE-2018-5383
AntonioliKNOBProtBT/BLE<=5.012019CVE-2019-95068.1Nexus 5 (internalblue)https://github.com/francozappa/knobhttps://knobattack.com/CVE-2019-9506
Ghost attackProtBT/BLE?22023https://www.ndss-symposium.org/wp-content/uploads/2023/02/ndss2023_s119_paper.pdfGhost attack and group guessing attack
Qualcomm 9206ImpBT/BLE?12022CVE-2022-405038.2https://www.cvedetails.com/cve/CVE-2022-40503/?q=CVE-2022-40503Buffer overread in A2DP profile
Qualcomm APQ8009ImpBT/BLE?12022CVE-2022-405377.3https://www.cvedetails.com/cve/CVE-2022-40537/?q=CVE-2022-40537Memory corruption while processing AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT AVRCP response
Qualcomm WSA8815ImpBT/BLE?12022CVE-2022-332807.3https://www.cvedetails.com/cve/CVE-2022-33280/?q=CVE-2022-33280Memory corruption while processing AVRCP packet
Qualcomm WSA8835ImpBT/BLE?12022CVE-2022-332558.2https://www.cvedetails.com/cve/CVE-2022-33255/?q=CVE-2022-33255Bluetooth HOST Buffer overread while processing GetFolderItems, GetItemAttributes
Qualcomm WSA8835ImpBT/BLE?12022CVE-2022-220889.8https://www.cvedetails.com/cve/CVE-2022-22088/?q=CVE-2022-22088Bluetooth Host Buffer overflow while processing response from remote
SnapDragon AutoImpBT/BLE?12021CVE-2021-350689.8https://www.cvedetails.com/cve/CVE-2021-35068/?q=CVE-2021-35068Null pointer dereference while freeing the HFP profile
Method ConfusionProtBT/BLE?2.1-5.212020CVE-2020-101346.3huge selection with different capabilities.https://github.com/maxdos64/BThackhttps://www.sec.in.tum.de/i20/publications/method-confusion-attack-on-bluetooth-pairing/@@download/file/conference-proceeding.pdfMITM between 2 BLE or BR/EDR devices. Strange hardware needed, CVE-2020-10134
BlueSnarf revisitedImpOBEX12011https://inria.hal.science/hal-01587858/documentOBEX path traversal (FTP)

The YAML DSL reference syntax is available here.

License

Shield: CC BY-NC-SA 4.0

BlueToolkit is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

For inquiries contact at https://linktr.ee/schwytz

CC BY-NC-SA 4.0