├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── disable_webusb.js └── manifest.json /.gitignore: -------------------------------------------------------------------------------- 1 | extension.zip 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Jonathan Rudenberg 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | extension.zip: manifest.json disable_webusb.js LICENSE 2 | zip -q extension.zip $^ 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Disable WebUSB 2 | 3 | [Disable 4 | WebUSB](https://chrome.google.com/webstore/detail/disable-webusb/klhgchngppoiafianjllcholkbnpbejd) 5 | is a Chrome extension that disables the WebUSB API. It has no configuration 6 | settings, and is suitable for force-installing via Chrome Enterprise management. 7 | 8 | ## Why? 9 | 10 | WebUSB provides access to devices that may not be designed with an adversarial 11 | threat model in mind, protected only by a permissions dialog that does not make 12 | the risks clear. 13 | 14 | Given the lack of widely-deployed uses of WebUSB, disabling it is a prudent 15 | defense-in-depth measure. 16 | 17 | _You may also be interested in [disabling WebBluetooth](https://github.com/titanous/disable-webbluetooth)._ 18 | -------------------------------------------------------------------------------- /disable_webusb.js: -------------------------------------------------------------------------------- 1 | var script = document.createElement('script'); 2 | script.text = ` 3 | if (navigator.usb) { 4 | delete navigator.usb.__proto__.getDevices; 5 | delete navigator.usb.__proto__.requestDevice; 6 | delete navigator.__proto__.usb; 7 | } 8 | `; 9 | document.documentElement.appendChild(script); 10 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Disable WebUSB", 4 | "description": "Disables the WebUSB API for all websites.", 5 | "version": "1.3.0", 6 | "content_scripts": [{ 7 | "matches": ["https://*/*", "http://*/*", "file://*"], 8 | "match_about_blank": true, 9 | "all_frames": true, 10 | "run_at": "document_start", 11 | "js": ["disable_webusb.js"] 12 | }], 13 | "permissions": [ 14 | "tabs", 15 | "https://*/*", 16 | "http://*/*", 17 | "file://*" 18 | ] 19 | } 20 | --------------------------------------------------------------------------------