This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "OWASP Internet of Things Project"

From OWASP
Jump to: navigation, search
(Created page with "=Main= <div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">link=</div> {| style="padding: 0;margin:0;margin-top:10px;t...")
 
 
(256 intermediate revisions by 16 users not shown)
Line 1: Line 1:
=Main=
+
= Main =
  
 
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
 
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
| valign="top"  style="border-right: 1px dotted gray;padding-right:25px;" |
+
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
== OWASP Internet of Things (IoT) Project ==
 +
Oxford defines the Internet of Things as: “A proposed development of the Internet in which everyday objects have network connectivity, allowing them to send and receive data.”
  
==OWASP Internet of Things==
+
''The OWASP Internet of Things Project is designed to help manufacturers, developers, and consumers better understand the security issues associated with the Internet of Things, and to enable users in any context to make better security decisions when building, deploying, or assessing IoT technologies''.
  
Oxford defines the Internet of Things as: “A proposed development of the Internet in which everyday objects have network connectivity, allowing them to send and receive data.
+
The project looks to define a structure for various IoT sub-projects separated into the following categories - Seek & Understand, Validate & Test, and Governance.
 +
 
 +
==Updated!==
 +
 
 +
The OWASP IoT Project for 2018 has been released![[File:OWASP 2018 IoT Top10 Final.jpg|center|thumb|1301x1301px]]
 +
 
 +
== Philosophy ==
 +
The OWASP Internet of Things Project was started in 2014 as a way help Developers, Manufacturers, Enterprises, and Consumers to make better decisions regarding the creation and use of IoT systems.
 +
 
 +
This continues today with the 2018 release of the OWASP IoT Top 10, which represents the top ten things to avoid when building, deploying, or managing IoT systems. The primary theme for the 2018 OWASP Internet of Things Top 10 is simplicity. Rather than having separate lists for risks vs. threats vs. vulnerabilities—or for developers vs. enterprises vs. consumers—the project team elected to have a single, unified list that captures the top things to avoid when dealing with IoT Security.
 +
 
 +
The team recognized that there are now dozens of organizations releasing elaborate guidance on IoT Security—all of which are designed for slightly different audiences and industry verticals. We thought the most useful resource we could create is a single list that addresses the highest priority issues for manufacturers, enterprises, and consumers at the same time.
 +
 
 +
The result is the [https://www.owasp.org/images/1/1c/OWASP-IoT-Top-10-2018-final.pdf 2018 OWASP IoT Top 10].
  
''The OWASP Internet of Things (IoT) Top 10 is a project designed to help manufacturers, developers, and consumers better understand the security issues associated with the Internet of Things, and to enable users in any context to make better security decisions when building, deploying, or assessing IoT technologies''.  
+
== Methodology ==
 +
The project team is a collection of volunteer professionals from within the security industry, with experience spanning multiple areas of expertise, including: manufacturers, consulting, security testers, developers, and many more.
  
The project defines the top ten security surface areas presented by IoT systems, and provides information on threat agents, attack vectors, vulnerabilities, and impacts associated with each. In addition, the project aims to provide practical security recommendations for builders, breakers, and users of IoT systems.
+
The project was conducted in the following phases:
 +
# '''Team Formation''': finding people who would be willing to contribute to the 2018 update, both as SMEs and as project leaders to perform various tasks within the duration of the project.
 +
# '''Project Review:''' analysis of the 2014 project to determine what’s changed in the industry since that release, and how the list should be updated given those changes.
 +
# '''Data Collection''': collection and review of multiple vulnerability sources (both public and private), with special emphasis on which issues caused the most actual impact and damage.
 +
# '''Sister Project Review''': a review of dozens of other IoT Security projects to ensure that we’d not missed something major and that we were comfortable with both the content and prioritization of our release. Examples included: [https://cloudsecurityalliance.org/artifacts/csa-iot-controls-matrix/ CSA IoT Controls Matrix], [https://api.ctia.org/wp-content/uploads/2018/08/CTIA-IoT-Cybersecurity-Certification-Test-Plan-V1_0.pdf CTIA], [http://iot.stanford.edu/ Stanford’s Secure Internet of Things Project], [https://nvlpubs.nist.gov/nistpubs/ir/2018/NIST.IR.8200.pdf NISTIR 8200], [https://www.enisa.europa.eu/publications/baseline-security-recommendations-for-iot/at_download/fullReport ENISA IoT Baseline Report], [https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/747413/Code_of_Practice_for_Consumer_IoT_Security_October_2018.pdf Code of Practice for Consumer IoT Security,] and others.
 +
# '''Community Draft Feedback''': release of the draft to the community for review, including multiple Twitter calls for comments, the use of a public feedback form, and a number of public talks where feedback was gathered. The feedback was then reviewed by the team along with initial Data Collection, as well as Sister Project Review, to create the list contents and prioritization.
 +
# '''Release:''' release of the project to the public in December 2018.
  
==Licensing==
+
== The Future of the OWASP IoT Top 10 ==
The OWASP Internet of Things Top 10 is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
+
The team has a number of activities planned to continue improving on the project going forward.
  
== ==
+
Some of the items being discussed include:
{{Social Media Links}}
+
* Continuing to improve the list on a two-year cadence, incorporating feedback from the community and from additional project contributors to ensure we are staying current with issues facing the industry.
 +
* Mapping the list items to other OWASP projects, such as the ASVS, and perhaps to other projects outside OWASP as well.
 +
* Expanding the project into other aspects of IoT—including embedded security, ICS/ SCADA,etc.
 +
* Adding use and abuse cases, with multiple examples, to solidify each concept discussed.
 +
* Considering the addition of reference architectures, so we can not only tell people what to avoid, but how to do what they need to do securely.
  
| valign="top"  style="padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;" |
+
Participation in the OWASP IoT Project is open to the community. We take input from all participants — whether you’re a developer, a manufacturer, a penetration tester, or someone just trying to implement IoT securely. You can find the team meeting every other Friday in the the #iot-security room of the OWASP Slack Channel.
  
== What is the OWASP Internet of Things Top 10? ==
+
'''''The OWASP IoT Security Team, 2018'''''
  
The OWASP Internet of Things Top 10 provides:
+
==Licensing==
 +
The OWASP Internet of Things Project is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
  
* A list of the 10 Most Significant IoT Security Surface Areas
+
{{Social Media Links}}
* A list of basic recommendations for manufacturers, developers, and consumers
 
  
For each attack surface areas, the following sections are included:
+
| style="padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
* A description of the attack surface
+
== What is the OWASP Internet of Things Project? ==
* Threat agents
 
* Attack vectors
 
* Security weaknesses
 
* Technical impacts
 
* Business impacts
 
* Example vulnerabilities
 
* Example attacks
 
* Guidance on how to avoid the issue
 
* References to OWASP and other related resources
 
  
For each role in Manufacturers, Developers, and Consumer, the following recommendations are included:
+
The OWASP Internet of Things Project provides information on:
  
* For each I''N'' category, list the top few considerations that should be observed in that context
+
* [https://www.owasp.org/index.php/IoT_Attack_Surface_Areas IoT Attack Surface Areas]
 +
* IoT Vulnerabilities
 +
* Firmware Analysis
 +
* ICS/SCADA Software Weaknesses
 +
* Community Information
 +
* [https://www.owasp.org/index.php/IoT_Testing_Guides IoT Testing Guides]
 +
* [https://www.owasp.org/index.php/IoT_Security_Guidance IoT Security Guidance]
 +
* [https://www.owasp.org/index.php/Principles_of_IoT_Security Principles of IoT Security]
 +
* [https://www.owasp.org/index.php/IoT_Framework_Assessment IoT Framework Assessment]
 +
* Developer, Consumer and Manufacturer Guidance
 +
* Design Principles
 +
* IoTGoat
  
 
== Project Leaders ==
 
== Project Leaders ==
Line 50: Line 78:
 
* Daniel Miessler
 
* Daniel Miessler
 
* Craig Smith
 
* Craig Smith
* Jason Haddix
+
* Vishruta Rudresh
 +
* Aaron Guzman
 +
 
 +
== Contributors ==
 +
* [https://www.owasp.org/index.php/User:Justin_C._Klein_Keane Justin Klein Keane]
 +
* Saša Zdjelar
 +
 
 +
== IoT Top 2018 Contributors ==
 +
* Vijayamurugan Pushpanathan
 +
* Alexander Lafrenz
 +
* Masahiro Murashima
 +
* Charlie Worrell
 +
* José A. Rivas (jarv)
 +
* Pablo Endres
 +
* Ade Yoseman
 +
* Cédric Levy-Bencheotn
 +
* Jason Andress
 +
* Amélie Didion - Designer
  
 
== Related Projects ==
 
== Related Projects ==
  
* [https://www.owasp.org/index.php/OWASP_Mobile_Security_Project The OWASP Mobile Top 10 Project]
+
* [[OWASP_Project|OWASP Project Repository]]
* [https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project The OWASP Web Top 10 Project]
+
* [[OWASP_Mobile_Security_Project|OWASP Mobile Security]]
 +
* [[OWASP_Top_Ten_Project|OWASP Web Top 10]]
 +
* [https://www.owasp.org/index.php/OWASP_Embedded_Application_Security OWASP Embedded Application Security]
 +
* [https://www.owasp.org/index.php/C-Based_Toolchain_Hardening OWASP C-based Toolchain Hardening]
 +
 
 +
| style="padding-left:25px;width:200px;" valign="top" |
  
| valign="top"  style="padding-left:25px;width:200px;" |
+
== Collaboration ==
 +
[https://owasp.slack.com The OWASP Slack Channel]
  
== Email List ==
+
Hint: If you're new to Slack, [https://lists.owasp.org/pipermail/owasp-community/2015-July/000703.html join OWASP's slack channel first], then join #iot-security within OWASP's channel.
[https://lists.owasp.org/mailman/listinfo/owasp_internet_of_things_top_ten_project Subcribe here]
 
  
 
== Quick Download ==
 
== Quick Download ==
[https://drive.google.com/file/d/0B52IUvO0LP6ON2VzZVFkNGF6aVE/view?usp=sharing OWASP Internet of Things Top Ten 2014 PDF]
+
[https://www.owasp.org/images/1/1c/OWASP-IoT-Top-10-2018-final.pdf OWASP IoT Top Ten 2018]
 +
 
 +
[https://www.owasp.org/images/3/36/IoTTestingMethodology.pdf IoT Attack Surface Mapping DEFCON 23]
  
[https://drive.google.com/file/d/0B52IUvO0LP6OYVoweHNBeVFDdGs/view?usp=sharing OWASP Internet of Things Top Ten 2014 Infographic]
+
[https://www.owasp.org/images/2/2d/Iot_testing_methodology.JPG IoT Testing Guidance Handout]
  
[https://drive.google.com/file/d/0B52IUvO0LP6OUGVWeGZGdnhleFU/view?usp=sharing OWASP Internet of Things Top Ten 2014 PPT]
+
[https://www.owasp.org/images/7/71/Internet_of_Things_Top_Ten_2014-OWASP.pdf OWASP IoT Top Ten 2014 PDF]
  
[https://drive.google.com/file/d/0B52IUvO0LP6OdW1HMjRpM3VVUVE/view?usp=sharing OWASP IoT Top Ten RSA 2015 Presentation]
+
[https://www.owasp.org/images/b/bd/OWASP-IoT.pptx OWASP IoT Project Overview]
  
 
== News and Events ==
 
== News and Events ==
* [April 2015] Added the IoT Top 10 talk from RSA
+
* OWASP [https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project#tab=IoTGoat IoTGoat Project] underway
* [April 2015] Added an IoT Top 10 Infographic
+
* New firmware security analysis tool, ByteSweep
* IoT day is April 9th!
+
* IoT ASVS and Testing Guide set to kick off in 2019
* [February 2015] Added a PDF containing a walk through of the project and the Top Ten.
+
* Added a [https://owasp-iot-security.slack.com/ Slack channel]
 +
* Added a sub-project; [https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project#tab=IoT_Security_Policy_Project IoT Security Policy Project]
  
 
==Classifications==
 
==Classifications==
Line 81: Line 134:
 
   {| width="200" cellpadding="2"
 
   {| width="200" cellpadding="2"
 
   |-
 
   |-
   | align="center" valign="top" width="50%" rowspan="2"| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]
+
   | rowspan="2" width="50%" valign="top" align="center" | [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]
   | align="center" valign="top" width="50%"| [[File:Owasp-builders-small.png|link=]]   
+
   | width="50%" valign="top" align="center" | [[File:Owasp-builders-small.png|link=]]   
 
   |-
 
   |-
   | align="center" valign="top" width="50%"| [[File:Owasp-defenders-small.png|link=]]
+
   | width="50%" valign="top" align="center" | [[File:Owasp-defenders-small.png|link=]]
 
   |-
 
   |-
   | colspan="2" align="center" | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]
+
   | colspan="2" align="center" | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]
 
   |-
 
   |-
   | colspan="2" align="center" | [[File:Project_Type_Files_DOC.jpg|link=]]
+
   | colspan="2" align="center" | [[File:Project_Type_Files_DOC.jpg|link=]]
 
   |}
 
   |}
  
 
|}
 
|}
  
= OWASP Internet of Things Top 10 for 2014 =
+
= IoT Top 10 =
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
 
 +
== Internet of Things (IoT) Top 10 2018 ==
 +
The [https://www.owasp.org/images/1/1c/OWASP-IoT-Top-10-2018-final.pdf OWASP IoT Top 10 - 2018] is now available.
 +
* I1 Weak Guessable, or Hardcoded Passwords
 +
 
 +
* I2 Insecure Network Services
 +
 
 +
* I3 Insecure Ecosystem Interfaces
 +
 
 +
* I4 Lack of Secure Update Mechanism
 +
 
 +
* I5 Use of Insecure or Outdated Components
 +
 
 +
* I6 Insufficient Privacy Protection
 +
 
 +
* I7 Insecure Data Transfer and Storage
 +
 
 +
* I8 Lack of Device Management
 +
 
 +
* I9 Insecure Default Settings
 +
 
 +
* I10 Lack of Physical Hardening
 +
== Internet of Things (IoT) Top 10 2014 ==
 +
* [[Top 10 2014-I1 Insecure Web Interface|I1 Insecure Web Interface]]
 +
* [[Top 10 2014-I2 Insufficient Authentication/Authorization|I2 Insufficient Authentication/Authorization]]
 +
* [[Top 10 2014-I3 Insecure Network Services|I3 Insecure Network Services]]
 +
* [[Top 10 2014-I4 Lack of Transport Encryption|I4 Lack of Transport Encryption]]
 +
* [[Top 10 2014-I5 Privacy Concerns|I5 Privacy Concerns]]
 +
* [[Top 10 2014-I6 Insecure Cloud Interface|I6 Insecure Cloud Interface]]
 +
* [[Top 10 2014-I7 Insecure Mobile Interface|I7 Insecure Mobile Interface]]
 +
* [[Top 10 2014-I8 Insufficient Security Configurability|I8 Insufficient Security Configurability]]
 +
* [[Top 10 2014-I9 Insecure Software/Firmware|I9 Insecure Software/Firmware]]
 +
* [[Top 10 2014-I10 Poor Physical Security|I10 Poor Physical Security]]
 +
 
 +
= OWASP IoT Top 10 2018 Mapping Project =
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== IoT Top 10 2018 Mapping Project ==
 +
 
 +
The OWASP IoT Mapping Project is intended to provide a mapping of the OWASP IoT Top 10 2018 to industry publications and sister projects. The goal is to provide resources that enable practical uses for the OWASP IoT Top 10 . As with all Top 10 lists, they should be used as a first step and expanded upon according to the applicable IoT ecosystem. 
 +
 
 +
Mappings are structured with control categories, tests, or recommendations in the left column, descriptions in the middle column, and their mapping to the OWASP IoT Top 10 2018 list in the right column. Each mapping may not have a 1 to 1 relation; however, similar recommendations and/or controls are listed. For mappings that are not applicable to the IoT Top 10 2018 list, an "N/A" is provided as the mapping.
 +
 
 +
An example mapping of the IoT Top 10 2014 is provided below.
  
 +
[[File:2014 2018Mapping.png|center|frameless|746x746px]]
 +
 +
For additional mappings, please visit the following link: https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/<nowiki/>{{Social Media Links}}
 +
 +
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 +
== What is the IoT Top 10 Mapping Project? ==
 +
 +
The OWASP IoT Mapping Project is intended to provide a mapping of the OWASP IoT Top 10 2018 to industry publications and sister projects. The goal is to provide resources that enable practical uses for the OWASP IoT Top 10 . As with all Top 10 lists, they should be used as a first step and expanded upon according to the applicable IoT ecosystem. 
 +
 +
Mappings include the following:
 +
* [https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/mappings/owasp-iot-top-10-2014 OWASP IoT Top 10 2014]
 +
* [https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/mappings/gsma-iot-security-assessment-checklist GSMA IoT Security Assessment Checklist]
 +
* [https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/mappings/code-of-practice Code of Practice (UK Government)]
 +
* [https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/mappings/enisa-baseline-security-recommendations-for-iot ENISA Baseline Security Recommendations for IoT]
 +
 +
and more...
 +
 +
== GitBook ==
 +
Mappings are hosted on GitBook using the following link https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/
 +
 +
== Project Leaders ==
 +
 +
* Aaron Guzman
 +
 +
== Collaboration ==
 +
[https://owasp.slack.com The Slack Channel]
 +
 +
|}
 +
 +
= IoTGoat =
 
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 +
== IoTGoat Project ==
 +
 +
IoT Goat is a deliberately insecure firmware based on OpenWrt. The project’s goal is to teach users about the most common vulnerabilities typically found in IoT devices. The vulnerabilities will be based on the top 10 vulnerabilities as documented by OWASP: [[OWASP_Internet_of_Things_Project|https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project]]. IoTGoat is expected to be released by December 2019. 
 +
 +
To get more information on getting started or how to contribute, visit the project's Github: https://github.com/scriptingxss/IoTGoat
 +
 +
{{Social Media Links}}
 +
 +
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 +
== What is the IoTGoat Project? ==
 +
 +
The IoTGoat Project is a deliberately insecure firmware based on OpenWrt. The project’s goal is to teach users about the most common vulnerabilities typically found in IoT devices. The vulnerabilities will be based on the IoT Top 10.
 +
 +
== GitHub ==
 +
https://github.com/scriptingxss/IoTGoat
 +
 +
== Project Leaders ==
 +
 +
* Aaron Guzman
 +
* Fotios Chantzis
 +
* [[User:Calderpwn|Paulino Calderon]]
 +
 +
== Related Projects ==
 +
 +
* WebGoat
 +
* Serverless Goat
 +
* NodeGoat
 +
* RailsGoat
 +
 +
== Collaboration ==
 +
[https://owasp.slack.com The Slack Channel]
 +
 +
[https://groups.google.com/forum/#!forum/iotgoat IoTGoat Google Group]
 +
 +
== Quick Download ==
 +
* [https://docs.google.com/presentation/d/1SJfabCBxvC3GWnmBCqisO5pyLzkB1-EVcR7s8baT0dE/edit?usp=sharing Project Kick-off Slides]
 +
* [https://strozfriedberg.webex.com/recordingservice/sites/strozfriedberg/recording/playback/5529b228ac514bed8cc050a9dee0f0df Project Kick-off Meeting]
 +
* [https://docs.google.com/spreadsheets/d/1KXX2K7ikkve6wmdfAVu-sZONgKEBuAkRij_paJUgX2w/edit?usp=sharing Project Task List]
  
The OWASP Internet of Things Top 10 - 2014 is as follows:
+
== News and Events ==
 +
* Coming Soon
  
* [[Top_10_2014-I1 Insecure Web Interface | I1 Insecure Web Interface]]
+
|}
* [[Top_10_2014-I2 Insufficient Authentication/Authorization | I2 Insufficient Authentication/Authorization]]
 
* [[Top_10_2014-I3 Insecure Network Services | I3 Insecure Network Services]]
 
* [[Top_10_2014-I4 Lack of Transport Encryption | I4 Lack of Transport Encryption]]
 
* [[Top_10_2014-I5 Privacy Concerns | I5 Privacy Concerns]]
 
* [[Top_10_2014-I6 Insecure Cloud Interface | I6 Insecure Cloud Interface]]
 
* [[Top_10_2014-I7 Insecure Mobile Interface | I7 Insecure Mobile Interface]]
 
* [[Top_10_2014-I8 Insufficient Security Configurability | I8 Insufficient Security Configurability]]
 
* [[Top_10_2014-I9 Insecure Software/Firmware | I9 Insecure Software/Firmware]]
 
* [[Top_10_2014-I10 Poor Physical Security | I10 Poor Physical Security]]
 
  
 +
= ByteSweep =
 +
[[File:OWASP_Project_Header.jpg|link=]]
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
== Introduction ==
+
== ByteSweep Project ==
  
Oxford defines the Internet of Things as “a proposed development of the Internet in which everyday objects have network connectivity, allowing them to send and receive data.
+
ByteSweep is a Free Software IoT security analysis platform. This platform will allow IoT device makers, large and small, to conduct fully automated security checks before they ship firmware. A Free Software IoT Firmware Security Analysis Platform
  
The OWASP Internet of Things (IoT) Top 10 is a project designed to help vendors who are interested in making common appliances and gadgets network/Internet accessible. The project walks through the top ten security problems that are seen with IoT devices, and how to prevent them.
+
ByteSweep Features:
 +
* Firmware extraction
 +
* File data enrichment
 +
* Key and password hash identification
 +
* Unsafe function use detection
 +
* 3rd party component identification
 +
* CVE correlation
 +
{{Social Media Links}}
  
Examples of IoT Devices: Cars, lighting systems, refrigerators, telephones, SCADA systems, traffic control systems, home security systems, TVs, DVRs, etc…
+
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
 +
== What is the ByteSweep Project? ==
  
 +
A Free Software IoT Firmware Security Analysis Platform.
  
== Feedback ==
+
== GitLab ==
 +
https://gitlab.com/bytesweep/bytesweep
  
Please let us know how your organization is using the Internet of Things Top 10. Include your name, organization's name, and brief description of how you use the list. Thanks for supporting OWASP!
+
== Project Leaders ==
  
We hope you find the information in the OWASP Internet of Things Top Ten useful. Please contribute back to the project by sending your comments, questions, and suggestions to [email protected], [email protected], or [email protected], Thanks!
+
* Matt Brown
  
== Project Sponsors ==
+
== Collaboration ==
 +
[https://owasp.slack.com The Slack Channel]
  
* [http://www8.hp.com/us/en/software-solutions/fortify-on-demand-application-security/ HP Fortify on Demand]
+
== Quick Download ==
* Contribute and add your name here!
+
* https://gitlab.com/bytesweep/bytesweep/blob/master/INSTALL.md
  
<!-- ==== Project Identification ====
+
|}
{{Template:OWASP OWASP_Top10 Project}} -->
 
  
 +
= Firmware Security Testing Methodology =
 +
[[File:OWASP_Project_Header.jpg|link=]]
  
= Talks =
+
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
RSA Conference San Francisco <br>
+
== Firmware Security Testing Methodology ==
[https://drive.google.com/file/d/0B52IUvO0LP6OdW1HMjRpM3VVUVE/view?usp=sharing Securing the Internet of Things: Mapping IoT Attack Surface Areas with the OWASP IoT Top 10 Project] <br>
 
Daniel Miessler, Practice Principal <br>
 
April 21, 2015 <br>
 
--- <br>
 
Defcon 2015 <br>
 
IoT Security <br>
 
Daniel Miessler <br>
 
August 6-9, 2015
 
  
= In the News =
+
The Firmware Security Testing Methodology (FSTM) is composed of nine stages tailored to enable security researchers, software developers, consultants, hobbyists, and Information Security professionals with conducting firmware security assessments.
 
* [http://www.cmswire.com/internet-of-things/mckinsey-the-iot-is-worth-111t-a-year/?utm_source=MainRSSFeed&utm_medium=Web&utm_campaign=RSS-News "McKinsey: The IoT is Worth $11.1T a Year"] ''CMS Wire.'' CMS Wire 05 July 2015
 
* [http://www.chicagobusiness.com/article/20150704/ISSUE01/307049995/why-caterpillar-is-letting-its-geek-flag-fly "Why Caterpillar is letting its geek flag fly"] ''Crain's.'' Crain's 04 July 2015
 
* [http://www.msn.com/en-us/news/connectedworld/the-cable-box-might-solve-the-internet-of-things-biggest-problem/ar-AAcqB3E?srcref=rss&ocid=winrs "The cable box might solve the Internet of Thing's biggest problem"] ''msn.com.'' msn.com 04 July 2015
 
* [http://www.forbes.com/sites/aarontilley/2015/07/01/the-internet-versus-the-great-california-drought/ "The Internet Versus The Great California Drought"] ''Forbes.'' Forbes 01 July 2015
 
  
= IoT Conferences - July 2015=
+
{| class="wikitable"
 +
|'''Stage'''
 +
|'''Description'''
 +
|-
 +
|1. Information gathering and reconnaissance
 +
|Acquire all relative technical and documentation details  pertaining to the target device’s firmware
 +
|-
 +
|2. Obtaining  firmware
 +
|Attain firmware using one or more of the proposed methods listed
 +
|-
 +
|3. Analyzing firmware
 +
|Examine the target firmware’s characteristics
 +
|-
 +
|4. Extracting  the filesystem
 +
|Carve filesystem contents from the target firmware
 +
|-
 +
|5. Analyzing filesystem contents
 +
|Statically analyze extracted filesystem configuration  files and binaries for vulnerabilities  
 +
|-
 +
|6. Emulating  firmware
 +
|Emulate firmware files and components
 +
|-
 +
|7. Dynamic analysis
 +
|Perform dynamic security testing against firmware and  application interfaces
 +
|-
 +
|8. Runtime  analysis
 +
|Analyze compiled binaries during device runtime
 +
|-
 +
|9. Binary Exploitation
 +
|Exploit identified vulnerabilities discovered in previous  stages to attain root and/or code execution
 +
|}The full methodology release can be downloaded via the following https://github.com/scriptingxss/owasp-fstm/releases/download/v1.0/Firmware_Security_Testing_Methodology_Version1.pdf.
  
* [http://go.softwebsolutions.com/l/12632/2015-06-09/25vn7f Softweb Solutions Internet of Things Workshop Partnered with Microsoft] Downers Grove, US July 09
+
{{Social Media Links}} 
* [https://www.media.mit.edu/events/knotty/overview?utm_content=buffer56e60&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer Knotty Objects | MIT Media Lab Summit | MIT Media Lab] Boston, US July 15 - 16
 
* [http://www.unicomlearning.com/IoTweek/usa/2015/Internet_of_Things Internet of Things Chicago] Chicago, US July 17
 
* [http://iotinfluencers.com/siliconvalley/ APPNATION Internet of Things (IoT) Summit] Santa Clara US July 20 - 21
 
* [https://www.blackhat.com/us-15/training/ Black Hat USA 2015 - Offensive IoT Exploitation] Las Vegas, US August 01 - 06
 
* [https://www.iotvillage.org/ IoT - Internet of Things] Las Vegas US August 06 - 09
 
  
= Community =
+
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
[https://www.iamthecavalry.org/ I Am The Cavalry]
+
== What is the Firmware Security Testing Methodology ==
  
A global grassroots organization that is focused on issues where computer security intersects public safety and human life.
+
The Firmware Security Testing Methodology Project provides:
  
Their areas of focus include:
+
*Attack walkthroughs
* Medical devices
+
*Tool usage examples
* Automobiles
+
*Screenshots
* Home Electronics
+
*Companion virtual machine preloaded with tools (EmbedOS) - <nowiki>https://github.com/scriptingxss/EmbedOS</nowiki>
* Public Infrastructure
 
== ==
 
[https://ifttt.com/ If This Then That (IFTTT)]
 
  
A service that lets you create powerful connections with one simple statement.
+
== Project Leaders ==
  
Channels are the basic building blocks of IFTTT. Channels include:
+
* Aaron Guzman
* Triggers - The ''this'' part of a Recipe
 
* Actions - The ''that'' part of a Recipe
 
== ==
 
[http://builditsecure.ly BuildItSecure.ly]
 
  
A project focused on helping small business connect with security researchers to aid in securing their IoT-based products before going market.
+
== Quick Download ==
 +
* https://github.com/scriptingxss/owasp-fstm/releases
  
Their goals include:
+
|}
* Focus effort towards small business
 
* Build partnerships
 
* Coordinate efforts
 
* Curate informational resources
 
* Present research
 
  
= Manufacturers =
+
= IoT Attack Surface Areas =
  
== Manufacturer IoT Security Guidance ==
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
(DRAFT)
+
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
[[File:Internet_of_Things_Top_10_2014.png]]
+
== IoT Attack Surface Areas Project ==
  
The goal of this page is help manufacturers build more secure products in the Internet of Things space. The guidance below is at a basic level, giving builders of products a basic set of guidelines to consider from their perspective. This is not a comprehensive list of considerations, and should not be treated as such, but ensuring that these fundamentals are covered will greatly improve the security of any IoT product.
+
The OWASP IoT Attack Surface Areas (DRAFT) are as follows:
  
{| border="1" class="wikitable" style="text-align: left"
+
{| class="wikitable" style="text-align: left" border="1"
! Category
+
! Attack Surface
! IoT Security Consideration
+
! Vulnerability
 +
|-
 +
| '''Ecosystem (general)'''
 +
|
 +
* Interoperability standards
 +
* Data governance
 +
* System wide failure
 +
* Individual stakeholder risks
 +
* Implicit trust between components
 +
* Enrollment security
 +
* Decommissioning system
 +
* Lost access procedures
 +
|-
 +
| '''Device Memory'''
 +
|
 +
* Sensitive data
 +
** Cleartext usernames
 +
** Cleartext passwords
 +
** Third-party credentials
 +
** Encryption keys
 
|-  
 
|-  
| '''I1: Insecure Web Interface'''
+
| '''Device Physical Interfaces'''
 
|
 
|
* Ensure that any web interface in the product disallows weak passwords
+
* Firmware extraction
* Ensure that any web interface in the product has an account lockout mechanism
+
* User CLI
* Ensure that any web interface in the product has been tested for XSS, SQLi and CSRF vulnerabilities
+
* Admin CLI
* Ensure that any web interface has the ability to use HTTPS to protect transmitted information
+
* Privilege escalation
* Include web application firewalls to protect any web interfaces
+
* Reset to insecure state
* Ensure that any web interface allows the owner to change the default username and password
+
* Removal of storage media
 +
* Tamper resistance
 +
* Debug port
 +
** UART (Serial)
 +
** JTAG / SWD
 +
* Device ID/Serial number exposure
 +
|-
 +
| '''Device Web Interface'''
 +
|
 +
* Standard set of web application vulnerabilities, see:
 +
** [[:Category:OWASP Top Ten Project|OWASP Web Top 10]]
 +
** [[:Category:OWASP Application Security Verification Standard Project|OWASP ASVS]]
 +
** [[:Category:OWASP Testing Project|OWASP Testing guide]]
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 
|-  
 
|-  
| '''I2: Insufficient Authentication/Authorization'''
+
| '''Device Firmware'''
 
|
 
|
* Ensure that any access requiring authentication requires strong passwords
+
* Sensitive data exposure ([[Top 10 2013-A6-Sensitive Data Exposure|See OWASP Top 10 - A6 Sensitive data exposure]]):
* Ensure that user roles can be properly segregated in multi-user environments
+
** Backdoor accounts
* Implement two-factor authentication where possible
+
** Hardcoded credentials
* Ensure password recovery mechanisms are secure
+
** Encryption keys
* Ensure that users have the option to require strong passwords
+
** Encryption (Symmetric, Asymmetric)
* Ensure that users have the option to force password expiration after a specific period
+
** Sensitive information
* Ensure that users have the option to change the default username and password
+
** Sensitive URL disclosure
 +
* Firmware version display and/or last update date
 +
* Vulnerable services (web, ssh, tftp, etc.)
 +
** Verify for old sw versions and possible attacks (Heartbleed, Shellshock, old PHP versions etc)
 +
* Security related function API exposure
 +
* Firmware downgrade possibility
 
|-  
 
|-  
| '''I3: Insecure Network Services'''
+
| '''Device Network Services'''
 
|
 
|
* Ensure all devices operate with a minimal number of network ports active
+
* Information disclosure
* Ensure all devices do not make network ports and/or services available to the internet via UPnP for example
+
* User CLI
* Review all required network services for vulnerabilities such as buffer overflows or denial of service
+
* Administrative CLI
 +
* Injection
 +
* Denial of Service
 +
* Unencrypted Services
 +
* Poorly implemented encryption
 +
* Test/Development Services
 +
* Buffer Overflow
 +
* UPnP
 +
* Vulnerable UDP Services
 +
* DoS
 +
* Device Firmware OTA update block
 +
* Firmware loaded over insecure channel (no TLS)
 +
* Replay attack
 +
* Lack of payload verification
 +
* Lack of message integrity check
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 
|-  
 
|-  
| '''I4: Lack of Transport Encryption'''
+
| '''Administrative Interface'''
 
|
 
|
* Ensure all communication between system components is encrypted as well as encrypting traffic between the system or device and the internet
+
* Standard set of web application vulnerabilities, see:
* Use recommended and accepted encryption practices and avoid proprietary protocols
+
** [[:Category:OWASP Top Ten Project|OWASP Web Top 10]]
* Ensure SSL/TLS implementations are up to date and properly configured
+
** [[:Category:OWASP Application Security Verification Standard Project|OWASP ASVS]]
* Consider making a firewall option available for the product
+
** [[:Category:OWASP Testing Project|OWASP Testing guide]]
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 +
* Security/encryption options
 +
* Logging options
 +
* Two-factor authentication
 +
* Check for insecure direct object references
 +
* Inability to wipe device
 
|-  
 
|-  
| '''I5: Privacy Concerns'''
+
| '''Local Data Storage'''
 
|
 
|
* Ensure only the minimal amount of personal information is collected from consumers
+
* Unencrypted data
* Ensure all collected personal data is properly protected using encryption at rest and in transit
+
* Data encrypted with discovered keys
* Ensure only authorized individuals have access to collected personal information
+
* Lack of data integrity checks
* Ensure only less sensitive data is collected
+
* Use of static same enc/dec key
* Ensuring data is de-identified or anonymized
 
* Ensuring a data retention policy is in place
 
* Ensuring end-users are given a choice for data collected beyond what is needed for proper operation of the device
 
 
|-  
 
|-  
| '''I6: Insecure Cloud Interface'''
+
| '''Cloud Web Interface'''
 
|
 
|
* Ensure all cloud interfaces are reviewed for security vulnerabilities (e.g. API interfaces and cloud-based web interfaces)
+
 
* Ensure that any cloud-based web interface disallows weak passwords
+
* Standard set of web application vulnerabilities, see:
* Ensure that any cloud-based web interface has an account lockout mechanism
+
** [[:Category:OWASP Top Ten Project|OWASP Web Top 10]]
* Implement two-factor authentication for cloud-based web interfaces
+
** [[:Category:OWASP Application Security Verification Standard Project|OWASP ASVS]]
* Ensure that all cloud interfaces use transport encryption
+
** [[:Category:OWASP Testing Project|OWASP Testing guide]]
* Ensure that any cloud-based web interface has been tested for XSS, SQLi and CSRF vulnerabilities
+
* Credential management vulnerabilities:
* Ensure that users have the option to require strong passwords
+
** Username enumeration
* Ensure that users have the option to force password expiration after a specific period
+
** Weak passwords
* Ensure that users have the option to change the default username and password
+
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 +
* Transport encryption
 +
* Two-factor authentication
 
|-  
 
|-  
| '''I7: Insecure Mobile Interface'''
+
| '''Third-party Backend APIs'''
 
|
 
|
* Ensure that any mobile application disallows weak passwords
+
* Unencrypted PII sent
* Ensure that any mobile application has an account lockout mechanism
+
* Encrypted PII sent
* Implement two-factor authentication for mobile applications (e.g Apple's Touch ID)
+
* Device information leaked
* Ensure that any mobile application uses transport encryption
+
* Location leaked
* Ensure that users have the option to require strong passwords
 
* Ensure that users have the option to force password expiration after a specific period
 
* Ensure that users have the option to change the default username and password
 
 
|-  
 
|-  
| '''I8: Insufficient Security Configurability'''
+
| '''Update Mechanism'''
 
|
 
|
* Ensure password security options are made available (e.g. Enabling 20 character passwords or enabling two-factor authentication)
+
* Update sent without encryption
* Ensure encryption options are made available (e.g. Enabling AES-256 where AES-128 is the default setting)
+
* Updates not signed
* Ensure secure logging is available for security events
+
* Update location writable
* Ensure alerts and notifications are available to the user for security events
+
* Update verification
 +
* Update authentication
 +
* Malicious update
 +
* Missing update mechanism
 +
* No manual update mechanism
 
|-  
 
|-  
| '''I9: Insecure Software/Firmware'''
+
| '''Mobile Application'''
 
|
 
|
* Ensure all system devices have update capability and can be updated quickly when vulnerabilities are discovered
+
* Implicitly trusted by device or cloud
* Ensure update files are encrypted and that the files are also transmitted using encryption
+
* Username enumeration
* Ensure that update files are signed and then validated by the device before installing
+
* Account lockout
* Ensure update servers are secure
+
* Known default credentials
* Ensure the product has the ability to implement scheduled updates
+
* Weak passwords
 +
* Insecure data storage
 +
* Transport encryption
 +
* Insecure password recovery mechanism
 +
* Two-factor authentication
 
|-  
 
|-  
| '''I10: Poor Physical Security'''
+
| '''Vendor Backend APIs'''
 
|
 
|
* Ensure the device is produced with a minimal number of physical external ports (e.g. USB ports)
+
* Inherent trust of cloud or mobile application
* Ensure the firmware of Operating System can not be accessed via unintended methods such as through an unnecessary USB port
+
* Weak authentication
* Ensure the product is tamper resistant
+
* Weak access controls
* Ensure the product has the ability to limit administrative capabilities in some fashion, possibly by only connecting locally for admin functions
+
* Injection attacks
* Ensure the product has the ability to disable external ports such as USB
+
* Hidden services
 +
|-
 +
| '''Ecosystem Communication'''
 +
|
 +
* Health checks
 +
* Heartbeats
 +
* Ecosystem commands
 +
* Deprovisioning
 +
* Pushing updates
 +
|-
 +
| '''Network Traffic'''
 +
|
 +
* LAN
 +
* LAN to Internet
 +
* Short range
 +
* Non-standard
 +
* Wireless (WiFi, Z-wave, XBee, Zigbee, Bluetooth, LoRA)
 +
* Protocol fuzzing
 +
|-
 +
| '''Authentication/Authorization'''
 +
|
 +
* Authentication/Authorization related values (session key, token, cookie, etc.) disclosure
 +
* Reusing of session key, token, etc.
 +
* Device to device authentication
 +
* Device to mobile Application authentication
 +
* Device to cloud system authentication
 +
* Mobile application to cloud system authentication
 +
* Web application to cloud system authentication
 +
* Lack of dynamic authentication
 +
|-
 +
| '''Privacy'''
 +
|
 +
* User data disclosure
 +
* User/device location disclosure
 +
* Differential privacy
 +
|-
 +
| '''Hardware (Sensors)'''
 +
|
 +
* Sensing Environment Manipulation
 +
* Tampering (Physically)
 +
* Damage (Physicall)
 +
 
 +
|-
 
|}
 
|}
  
===General Recommendations===
+
{{Social Media Links}}
 +
 
 +
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== What is the IoT Attack Surface Areas Project? ==
 +
 
 +
The IoT Attack Surface Areas Project provides a list of attack surfaces that should be understood by manufacturers, developers, security researchers, and those looking to deploy or implement IoT technologies within their organizations.
 +
 
 +
== Project Leaders ==
  
Consider the following recommendation for all Internet of Things products:
+
* Daniel Miessler
* Avoid the potential for persistent vulnerabilities in devices that have no update capability by ensuring that all devices and systems are built with the ability to be updated when vulnerabilities are discovered
+
* Craig Smith
* Rebranded devices used as part of a system should be properly configured so that unnecessary or unintended services do not remain active after the rebranding
 
  
[ NOTE: Given the fact that each deployment and every environment is different, it is important to weigh the pros and cons of implementing the advice above before taking each step. ]
+
== Related Projects ==
  
= Developers =
+
* [https://www.owasp.org/index.php/OWASP_Mobile_Security_Project The OWASP Mobile Top 10 Project]
 +
* [https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project The OWASP Web Top 10 Project]
  
== Developer IoT Security Guidance ==
+
== Collaboration ==
 +
[https://owasp.slack.com The Slack Channel]
  
(DRAFT)
+
== Quick Download ==
 +
* Coming Soon
  
The goal of this page is help developers build more secure applications in the Internet of Things space. The guidance below is at a basic level, giving developers of applications a basic set of guidelines to consider from their perspective. This is not a comprehensive list of considerations, and should not be treated as such, but ensuring that these fundamentals are covered will greatly improve the security of any IoT product.
+
== News and Events ==
 +
* Coming Soon
  
{| border="1" class="wikitable" style="text-align: left"
+
|}
! Category
+
 
! IoT Security Consideration
+
= IoT Vulnerabilities =
|-  
+
 
| '''I1: Insecure Web Interface'''
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
 
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== IoT Vulnerabilities Project ==
 +
 
 +
{| class="wikitable" style="text-align: left" border="1"
 +
! Vulnerability
 +
! Attack Surface
 +
! Summary
 +
|-
 +
| '''Username Enumeration'''
 +
|
 +
* Administrative Interface
 +
* Device Web Interface
 +
* Cloud Interface
 +
* Mobile Application
 +
|
 +
* Ability to collect a set of valid usernames by interacting with the authentication mechanism
 +
|-
 +
| '''Weak Passwords'''
 +
|
 +
* Administrative Interface
 +
* Device Web Interface
 +
* Cloud Interface
 +
* Mobile Application
 +
|
 +
* Ability to set account passwords to '1234' or '123456' for example.
 +
* Usage of pre-programmed default passwords
 +
|-
 +
| '''Account Lockout'''
 +
|
 +
* Administrative Interface
 +
* Device Web Interface
 +
* Cloud Interface
 +
* Mobile Application
 +
|
 +
* Ability to continue sending authentication attempts after 3 - 5 failed login attempts
 +
|-
 +
| '''Unencrypted Services'''
 +
|
 +
* Device Network Services
 +
|
 +
* Network services are not properly encrypted to prevent eavesdropping or tampering  by attackers
 +
|-
 +
| '''Two-factor Authentication'''
 +
|
 +
* Administrative Interface
 +
* Cloud Web Interface
 +
* Mobile Application
 +
|
 +
* Lack of two-factor authentication mechanisms such as a security token or fingerprint scanner
 +
|-
 +
| '''Poorly Implemented Encryption'''
 +
|
 +
* Device Network Services
 +
|
 +
* Encryption is implemented however it is improperly configured or is not being properly updated, e.g. using SSL v2
 +
|-
 +
| '''Update Sent Without Encryption'''
 +
|
 +
* Update Mechanism
 +
|
 +
* Updates are transmitted over the network without using TLS or encrypting the update file itself
 +
|-
 +
| '''Update Location Writable'''
 +
|
 +
* Update Mechanism
 +
|
 +
* Storage location for update files is world writable potentially allowing firmware to be modified and distributed to all users
 +
|-
 +
| '''Denial of Service'''
 +
|
 +
* Device Network Services
 +
|
 +
* Service can be attacked in a way that denies service to that service or the entire device
 +
|-
 +
| '''Removal of Storage Media'''
 +
|
 +
* Device Physical Interfaces
 +
|
 +
* Ability to physically remove the storage media from the device
 +
|-
 +
| '''No Manual Update Mechanism'''
 +
|
 +
* Update Mechanism
 +
|
 +
* No ability to manually force an update check for the device
 +
|-
 +
| '''Missing Update Mechanism'''
 +
|
 +
* Update Mechanism
 +
|
 +
* No ability to update device
 +
|-
 +
| '''Firmware Version Display and/or Last Update Date'''
 +
|
 +
* Device Firmware
 
|
 
|
* Ensure that any web interface coding is written to prevent the use of weak passwords
+
* Current firmware version is not displayed and/or the last update date is not displayed
* Ensure that any web interface coding is written to include an account lockout mechanism
+
|-
* Ensure that any web interface coding has been tested for XSS, SQLi and CSRF vulnerabilities
+
| '''Firmware and storage extraction'''
* Ensure that any web interface has the ability to use HTTPS to protect transmitted information
 
* Ensure that any web interface coding is written to allow the owner to change the username and password
 
* Consider the use of web application firewalls to protect any web interfaces
 
|-  
 
| '''I2: Insufficient Authentication/Authorization'''
 
 
|
 
|
* Ensure that applications are written to require strong passwords where authentication is needed
+
* JTAG / SWD interface
* Ensure the application takes into account multi-user environments and includes functionality for role separation
+
* [https://www.flashrom.org/Flashrom In-Situ dumping]
* Implement two-factor authentication where possible
+
* Intercepting a OTA update
* Ensure password recovery mechanisms are written to function in a secure manner
+
* Downloading from the manufacturers web page
* Ensure that applications are written to include the option to require strong passwords
+
* [https://www.exploitee.rs/index.php/Exploitee.rs_Low_Voltage_e-MMC_Adapter eMMC tapping]
* Ensure that applications are written to include the option to force password expiration after a specific period
+
* Unsoldering the SPI Flash / eMMC chip and reading it in a adapter
* Ensure that applications are written to include the option to change the default username and password
 
|-
 
| '''I3: Insecure Network Services'''
 
 
|
 
|
* Ensure applications that use network services don't respond poorly to buffer overflow, fuzzing or denial of service attacks
+
* Firmware contains a lot of useful information, like source code and binaries of running services, pre-set passwords, ssh keys etc. 
* Ensure applications test ports are taken out of service before going to production
+
|-
|-  
+
| '''Manipulating the code execution flow of the device'''
| '''I4: Lack of Transport Encryption'''
 
 
|
 
|
* Ensure all applications are written to make use of encrypted communication between devices and between devices and the internet
+
* JTAG / SWD interface
* Use recommended and accepted encryption practices and avoid proprietary protocols
+
* [https://wiki.newae.com/Main_Page Side channel attacks like glitching]
* Consider making a firewall option available for the application
 
|-
 
| '''I5: Privacy Concerns'''
 
 
|
 
|
* Ensure only the minimal amount of personal information is collected from consumers
+
* With the help of a JTAG adapter and gdb we can modify the execution of firmware in the device and bypass almost all software based security controls.
* Ensure all collected personal data is properly protected using encryption at rest and in transit
+
* Side channel attacks can also modify the execution flow or can be used to leak interesting information from the device
* Ensuring data is de-identified or anonymized
+
|-
* Ensuring end-users are given a choice for data collected beyond what is needed for proper operation of the device
+
| '''Obtaining console access'''
|-  
 
| '''I6: Insecure Cloud Interface'''
 
 
|
 
|
* Ensure all cloud interfaces are reviewed for security vulnerabilities (e.g. API interfaces and cloud-based web interfaces)
+
* Serial interfaces (SPI / UART)
* Ensure that any cloud-based web interface coding is written to disallows weak passwords
 
* Ensure that any cloud-based web interface coding is written to include an account lockout mechanism
 
* Implement two-factor authentication for cloud-based web interfaces
 
* Ensure that any cloud interface coding has been tested for XSS, SQLi and CSRF vulnerabilities
 
* Ensure that all cloud interfaces use transport encryption
 
* Ensure that cloud interfaces are written to include the option to require strong passwords
 
* Ensure that cloud interfaces are written to include the option to force password expiration after a specific period
 
* Ensure that cloud interfaces are written to include the option to change the default username and password
 
|-
 
| '''I7: Insecure Mobile Interface'''
 
 
|
 
|
* Ensure that any mobile application coding is written to disallows weak passwords
+
* By connecting to a serial interface, we will obtain full console access to a device
* Ensure that any mobile application coding is written to include an account lockout mechanism
+
* Usually security measures include custom bootloaders that prevent the attacker from entering single user mode, but that can also be bypassed.
* Implement two-factor authentication for mobile applications (e.g Apple's Touch ID)
+
|-
* Ensure that any mobile application uses transport encryption
+
| '''Insecure 3rd party components'''
* Ensure that mobile interfaces are written to include the option to require strong passwords
 
* Ensure that mobile interfaces are written to include the option to force password expiration after a specific period
 
* Ensure that mobile interfaces are written to include the option to change the default username and password
 
* Ensure that mobile interfaces only collect the minimum amount of personal information needed
 
|-  
 
| '''I8: Insufficient Security Configurability'''
 
 
|
 
|
* Ensure applications are written to include password security options (e.g. Enabling 20 character passwords or enabling two-factor authentication)
+
* Software
* Ensure applications are written to include encryption options (e.g. Enabling AES-256 where AES-128 is the default setting)
 
* Ensure all applications are written to produce logs for security events
 
* Ensure all applications are written to produce alerts and notifications to the user for security events
 
|-
 
| '''I9: Insecure Software/Firmware'''
 
 
|
 
|
* Ensure all applications are written to include update capability and can be updated quickly when vulnerabilities are discovered
+
* Out of date versions of busybox, openssl, ssh, web servers, etc.
* Ensure all applications are written to process encrypted update files and that the files are transmitted using encryption
+
|-
* Ensure all applications are written to process signed files and then validate that file before installation
 
  
|-
 
| '''I10: Poor Physical Security'''
 
|
 
* Ensure applications are written to utilize a minimal number of physical external ports (e.g. USB ports) on the device
 
* Ensure all applications can not be accessed via unintended methods such as through an unnecessary USB port
 
* Ensure all applications are written to allow for disabling of unused physical ports such as USB
 
* Consider writing applications to limit administrative capabilities to a local interface only
 
 
|}
 
|}
  
===General Recommendations===
+
{{Social Media Links}}
  
Consider the following recommendations for all user interfaces (local device, cloud-based and mobile):
+
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
* Avoid potential Account Harvesting issues by:
+
 
** Ensuring valid user accounts can't be identified by interface error messages
+
== What is the IoT Vulnerabilities Project? ==
** Ensuring strong passwords are required by users
+
 
** Implementing account lockout after 3 - 5 failed login attempts
+
The IoT Vulnerabilities Project provides:
 +
 
 +
* Information on the top IoT vulnerabilities
 +
* The attack surface associated with the vulnerability
 +
* A summary of the vulnerability
 +
 
 +
== Project Leaders ==
 +
 
 +
* Daniel Miessler
 +
* Craig Smith
 +
 
 +
== Related Projects ==
 +
 
 +
* [[OWASP_Mobile_Security_Project|OWASP Mobile Security]]
 +
* [[OWASP_Top_Ten_Project|OWASP Web Top 10]]
 +
 
 +
== Collaboration ==
 +
[https://owasp-iot-security.slack.com The Slack Channel]
 +
 
 +
== Resources ==
 +
* [https://www.owasp.org/index.php/Top_IoT_Vulnerabilities Top 10 IoT Vulnerabilities from 2014]
 +
 
 +
== News and Events ==
 +
* Coming Soon
  
[ NOTE: Given the fact that each deployment and every environment is different, it is important to weigh the pros and cons of implementing the advice above before taking each step. ]
+
|}
  
 +
= Medical Devices =
  
= Testers =
+
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
  
== Tester IoT Security Guidance ==
+
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
  
(DRAFT)
+
== Medical Device Testing ==
  
The goal of this page is to help testers assess IoT devices and applications in the Internet of Things space. The guidance below is at a basic level, giving testers of devices and applications a basic set of guidelines to consider from their perspective. This is not a comprehensive list of considerations, and should not be treated as such, but ensuring that these fundamentals are covered will greatly improve the security of any IoT product.
+
The Medical Device Testing project is intended to provide some basic attack surface considerations that should be evaluated before shipping Medical Device equipment.
  
{| border="1" class="wikitable" style="text-align: left"
+
{| class="wikitable" style="text-align: left" border="1"
! Category
+
! Attack Surface
! IoT Security Consideration
+
! Vulnerability
 
|-  
 
|-  
| '''I1: Insecure Web Interface'''
+
| '''Ecosystem (general)'''
 
|
 
|
* Assess any web interface to determine if weak passwords are allowed
+
* Interoperability standards
* Assess the account lockout mechanism
+
* Data governance
* Assess the web interface for XSS, SQLi and CSRF vulnerabilities and other web application vulnerabilities
+
* System wide failure
* Assess the use of HTTPS to protect transmitted information
+
* Individual stakeholder risks
* Assess the ability to change the username and password
+
* Implicit trust between components
* Determine if web application firewalls are used to protect web interfaces
+
* Enrollment security
 +
* Decommissioning system
 +
* Lost access procedures
 
|-  
 
|-  
| '''I2: Insufficient Authentication/Authorization'''
+
| '''HL7'''
 
|
 
|
* Assess the solution for the use of strong passwords where authentication is needed
+
* XML Parsing
* Assess the solution for multi-user environments and ensure it includes functionality for role separation
+
** XSS
* Assess the solution for Implementation two-factor authentication where possible
+
* Information Disclosure
* Assess password recovery mechanisms
 
* Assess the solution for the option to require strong passwords
 
* Assess the solution for the option to force password expiration after a specific period
 
* Assess the solution for the option to change the default username and password
 
 
|-  
 
|-  
| '''I3: Insecure Network Services'''
+
| '''Device Memory'''
 
|
 
|
* Assess the solution to ensure network services don't respond poorly to buffer overflow, fuzzing or denial of service attacks
+
* Sensitive data
* Assess the solution to ensure test ports are are not present
+
** Cleartext usernames
 +
** Cleartext passwords
 +
** Third-party credentials
 +
** Encryption keys
 
|-  
 
|-  
| '''I4: Lack of Transport Encryption'''
+
| '''Device Physical Interfaces'''
 
|
 
|
* Assess the solution to determine the use of encrypted communication between devices and between devices and the internet
+
* Firmware extraction
* Assess the solution to determine if accepted encryption practices are used and if proprietary protocols are avoided
+
* User CLI
* Assess the solution to determine if a firewall option available is available
+
* Admin CLI
 +
* Privilege escalation
 +
* Reset to insecure state
 +
* Removal of storage media
 +
* Tamper resistance
 +
* Debug port
 +
* Device ID/Serial number exposure
 +
|-
 +
| '''Device Web Interface'''
 +
|
 +
* Standard set of web vulnerabilities:
 +
** SQL injection
 +
** Cross-site scripting
 +
** Cross-site Request Forgery
 +
** Username enumeration
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 
|-  
 
|-  
| '''I5: Privacy Concerns'''
+
| '''Device Firmware'''
 
|
 
|
* Assess the solution to determine the amount of personal information collected
+
* Sensitive data exposure:
* Assess the solution to determine if collected personal data is properly protected using encryption at rest and in transit
+
** Backdoor accounts
* Assess the solution to determine if Ensuring data is de-identified or anonymized
+
** Hardcoded credentials
* Assess the solution to ensure end-users are given a choice for data collected beyond what is needed for proper operation of the device
+
** Encryption keys
 +
** Encryption (Symmetric, Asymmetric)
 +
** Sensitive information
 +
** Sensitive URL disclosure
 +
* Firmware version display and/or last update date
 +
* Vulnerable services (web, ssh, tftp, etc.)
 +
* Security related function API exposure
 +
* Firmware downgrade
 
|-  
 
|-  
| '''I6: Insecure Cloud Interface'''
+
| '''Device Network Services'''
 
|
 
|
* Assess the cloud interfaces for security vulnerabilities (e.g. API interfaces and cloud-based web interfaces)
+
* Information disclosure
* Assess the cloud-based web interface to ensure it disallows weak passwords
+
* User CLI
* Assess the cloud-based web interface to ensure it includes an account lockout mechanism
+
* Administrative CLI
* Assess the cloud-based web interface to determine if two-factor authentication is used
+
* Injection
* Assess any cloud interfaces for XSS, SQLi and CSRF vulnerabilities and other vulnerabilities
+
* Denial of Service
* Assess all cloud interfaces to ensure transport encryption is used
+
* Unencrypted Services
* Assess the cloud interfaces to determine if the option to require strong passwords is available
+
* Poorly implemented encryption
* Assess the cloud interfaces to determine if the option to force password expiration after a specific period is available
+
* Test/Development Services
* Assess the cloud interfaces to determine if the option to change the default username and password is available
+
* Buffer Overflow
 +
* UPnP
 +
* Vulnerable UDP Services
 +
* DoS
 +
* Device Firmware OTA update block
 +
* Replay attack
 +
* Lack of payload verification
 +
* Lack of message integrity check
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 
|-  
 
|-  
| '''I7: Insecure Mobile Interface'''
+
| '''Administrative Interface'''
 
|
 
|
* Assess the mobile interface to ensure it disallows weak passwords
+
* Standard web vulnerabilities:
* Assess the mobile interface to ensure it includes an account lockout mechanism
+
** SQL injection
* Assess the mobile interface to determine if it Implements two-factor authentication (e.g Apple's Touch ID)
+
** Cross-site scripting
* Assess the mobile interface to determine if it uses transport encryption
+
** Cross-site Request Forgery
* Assess the mobile interface to determine if the option to require strong passwords is available
+
** Username enumeration
* Assess the mobile interface to determine if the option to force password expiration after a specific period is available
+
* Credential management vulnerabilities:
* Assess the mobile interface to determine if the option to change the default username and password is available
+
** Username enumeration
* Assess the mobile interface to determine the amount of personal information collected
+
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 +
* Security/encryption options
 +
* Logging options
 +
* Two-factor authentication
 +
* Inability to wipe device
 
|-  
 
|-  
| '''I8: Insufficient Security Configurability'''
+
| '''Local Data Storage'''
 
|
 
|
* Assess the solution to determine if password security options (e.g. Enabling 20 character passwords or enabling two-factor authentication) are available
+
* Unencrypted data
* Assess the solution to determine if encryption options (e.g. Enabling AES-256 where AES-128 is the default setting) are available
+
* Data encrypted with discovered keys
* Assess the solution to determine if logging for security events is available
+
* Lack of data integrity checks
* Assess the solution to determine if alerts and notifications to the user for security events are available
+
* Use of static same enc/dec key
 
|-  
 
|-  
| '''I9: Insecure Software/Firmware'''
+
| '''Cloud Web Interface'''
 
|
 
|
* Assess the device to ensure it includes update capability and can be updated quickly when vulnerabilities are discovered
+
* Standard set of web vulnerabilities:
* Assess the device to ensure it uses encrypted update files and that the files are transmitted using encryption
+
** SQL injection
* Assess the device to ensure is uses signed files and then validates that file before installation
+
** Cross-site scripting
 
+
** Cross-site Request Forgery
 +
* Credential management vulnerabilities:
 +
** Username enumeration
 +
** Weak passwords
 +
** Account lockout
 +
** Known default credentials
 +
** Insecure password recovery mechanism
 +
* Transport encryption
 +
* Two-factor authentication
 +
|-
 +
| '''Third-party Backend APIs'''
 +
|
 +
* Unencrypted PII sent
 +
* Encrypted PII sent
 +
* Device information leaked
 +
* Location leaked
 +
|-
 +
| '''Update Mechanism'''
 +
|
 +
* Update sent without encryption
 +
* Updates not signed
 +
* Update location writable
 +
* Update verification
 +
* Update authentication
 +
* Malicious update
 +
* Missing update mechanism
 +
* No manual update mechanism
 +
|-
 +
| '''Mobile Application'''
 +
|
 +
* Implicitly trusted by device or cloud
 +
* Username enumeration
 +
* Account lockout
 +
* Known default credentials
 +
* Weak passwords
 +
* Insecure data storage
 +
* Transport encryption
 +
* Insecure password recovery mechanism
 +
* Two-factor authentication
 +
|-
 +
| '''Vendor Backend APIs'''
 +
|
 +
* Inherent trust of cloud or mobile application
 +
* Weak authentication
 +
* Weak access controls
 +
* Injection attacks
 +
* Hidden services
 +
|-
 +
| '''Ecosystem Communication'''
 +
|
 +
* Health checks
 +
* Heartbeats
 +
* Ecosystem commands
 +
* Deprovisioning
 +
* Pushing updates
 +
|-
 +
| '''Network Traffic'''
 +
|
 +
* LAN
 +
* LAN to Internet
 +
* Short range
 +
* Non-standard
 +
* Wireless (WiFi, Z-wave, XBee, Zigbee, Bluetooth, LoRA)
 +
* Protocol fuzzing
 
|-  
 
|-  
| '''I10: Poor Physical Security'''
+
| '''Authentication/Authorization'''
 +
|
 +
* Authentication/Authorization related values (session key, token, cookie, etc.) disclosure
 +
* Reusing of session key, token, etc.
 +
* Device to device authentication
 +
* Device to mobile Application authentication
 +
* Device to cloud system authentication
 +
* Mobile application to cloud system authentication
 +
* Web application to cloud system authentication
 +
* Lack of dynamic authentication
 +
|-
 +
| '''Data Flow'''
 
|
 
|
* Assess the device to ensure it utilizes a minimal number of physical external ports (e.g. USB ports) on the device
+
* What data is being captured?
* Assess the device to determine if it can be accessed via unintended methods such as through an unnecessary USB port
+
* How does it move within the ecosystem?
* Assess the device to determine if it allows for disabling of unused physical ports such as USB
+
* How is it protected in transit?
* Assess the device to determine if it includes the ability to limit administrative capabilities to a local interface only
+
* How is it protected at rest?
 +
* Who is that data shared with?
 +
|-
 +
| '''Hardware (Sensors)'''
 +
|
 +
* Sensing Environment Manipulation
 +
* Tampering (Physically)
 +
* Damaging (Physically)
 +
* Failure state analysis
 +
|-
 
|}
 
|}
  
===General Recommendations===
+
{{Social Media Links}}
  
Consider the following recommendations for all user interfaces (local device, cloud-based and mobile):
+
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
* Avoid potential Account Harvesting issues by:
 
** Ensuring valid user accounts can't be identified by interface error messages
 
** Ensuring strong passwords are required by users
 
** Implementing account lockout after 3 - 5 failed login attempts
 
  
= Consumers =
+
== What is the Medical Attack Surfaces project? ==
  
== Consumer IoT Security Guidance ==
+
The Medical Attack Surfaces project provides:
  
(DRAFT)
+
* A simple way for testers, manufacturers, developers, and users to get an understanding of the complexity of a modern medical environment
 +
* Allows people to visualize the numerous attack surfaces that need to be defended within medical equipment ecosystems
  
The goal of this page is help consumers purchase secure products in the Internet of Things space. The guidance below is at a basic level, giving consumers a basic set of guidelines to consider from their perspective. This is not a comprehensive list of considerations, and should not be treated as such, but ensuring that these fundamentals are covered will greatly aid the consumer in purchasing a secure IoT product.
+
== Project Leaders ==
  
{| border="1" class="wikitable" style="text-align: left"
+
* Daniel Miessler
! Category
+
 
! IoT Security Consideration
+
== Related Projects ==
 +
 
 +
* [[OWASP_Mobile_Security_Project|OWASP Mobile Security]]
 +
* [[OWASP_Top_Ten_Project|OWASP Web Top 10]]
 +
 
 +
== Collaboration ==
 +
[https://owasp-iot-security.slack.com The Slack Channel]
 +
 
 +
== Resources ==
 +
* [https://www.owasp.org/index.php/IoT_Firmware_Analysis IoT Firmware Analysis Primer]
 +
* [https://otalliance.org/initiatives/internet-things Online Trust Alliance - Internet of Things]
 +
* [https://people.debian.org/~aurel32/qemu/ Pre-compiled QEMU images]
 +
* [https://code.google.com/archive/p/firmware-mod-kit/ Firmware Modification Kit]
 +
* [https://craigsmith.net/episode-11-1-firmware-extraction/ Short Firmware Extraction Video]
 +
* [https://craigsmith.net/episode-12-1-firmware-emulation-with-qemu/ Firmware Emulation with QEMU]
 +
* [https://craigsmith.net/episode-18-1-file-extraction-from-network-capture/ File Extraction from Network Capture]
 +
 
 +
== News and Events ==
 +
* Daniel Miessler presented on using Adaptive Testing Methodologies to evaluate the security of medical devices at RSA 2017.
 +
 
 +
|}
 +
 
 +
= Firmware Analysis =
 +
 
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
 +
 
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== Firmware Analysis Project ==
 +
 
 +
The Firmware Analysis Project is intended to provide security testing guidance for the IoT Attack Surface "Device Firmware":
 +
 
 +
{| class="wikitable" style="text-align: left" border="1"
 +
! Section
 +
!  
 
|-  
 
|-  
| '''I1: Insecure Web Interface'''
 
 
|
 
|
* If your system has the option to use HTTPS, ensure it is enabled
+
Device Firmware Vulnerabilities
* If your system has a two factor authentication option, ensure that it is enabled
+
|
* If your system has web application firewall option, ensure that it is enabled
+
* Out-of-date core components
* If your system has a local or cloud-based web application, ensure that you change the default password to a strong one and if possible change the default username as well
+
* Unsupported core components
* If the system has account lockout functionality, ensure that it is enabled
+
* Expired and/or self-signed certificates
* Consider employing network segmentation technologies such as firewalls to isolate IoT systems from critical IT systems
+
* Same certificate used on multiple devices
|-  
+
* Admin web interface concerns
| '''I2: Insufficient Authentication/Authorization'''
+
* Hardcoded or easy to guess credentials
 +
* Sensitive information disclosure
 +
* Sensitive URL disclosure
 +
* Encryption key exposure
 +
* Backdoor accounts
 +
* Vulnerable services (web, ssh, tftp, etc.)
 +
|-
 +
|
 +
Manufacturer Recommendations
 +
|
 +
* Ensure that supported and up-to-date software is used by developers
 +
* Ensure that robust update mechanisms are in place for devices
 +
* Ensure that certificates are not duplicated across devices and product lines.
 +
* Ensure supported and up-to-date software is used by developers
 +
* Develop a mechanism to ensure a new certificate is installed when old ones expire
 +
* Disable deprecated SSL versions
 +
* Ensure developers do not code in easy to guess or common admin passwords
 +
* Ensure services such as SSH have a secure password created
 +
* Develop a mechanism that requires the user to create a secure admin password during initial device setup
 +
* Ensure developers do not hard code passwords or hashes
 +
* Have source code reviewed by a third party before releasing device to production
 +
* Ensure industry standard encryption or strong hashing is used
 +
|-
 +
|
 +
Device Firmware Guidance and Instruction
 +
|
 +
* Firmware file analysis
 +
* Firmware extraction
 +
* Dynamic binary analysis
 +
* Static binary analysis
 +
* Static code analysis
 +
* Firmware emulation
 +
* File system analysis
 +
|-
 +
|
 +
Device Firmware Tools
 +
|
 +
* [https://github.com/craigz28/firmwalker Firmwalker]
 +
* [https://code.google.com/archive/p/firmware-mod-kit/ Firmware Modification Kit]
 +
* [https://github.com/angr/angr Angr binary analysis framework]
 +
* [http://binwalk.org/ Binwalk firmware analysis tool]
 +
* [http://www.binaryanalysis.org/en/home Binary Analysis Tool]
 +
* [https://github.com/firmadyne/firmadyne Firmadyne]
 +
* Firmware Analysis Comparison Toolkit
 +
* [https://gitlab.com/bytesweep/bytesweep ByteSweep]
 +
|-
 +
|
 +
Vulnerable Firmware
 +
|
 +
* [https://github.com/praetorian-inc/DVRF Damn Vulnerable Router Firmware]
 +
* [https://github.com/scriptingxss/IoTGoat OWASP IoTGoat]
 +
|-
 +
|
 +
|}{{Social Media Links}} 
 +
 
 +
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== What is the Firmware Analysis Project? ==
 +
 
 +
The Firmware Analysis Project provides:
 +
 
 +
* Security testing guidance for vulnerabilities in the "Device Firmware" attack surface
 +
* Steps for extracting file systems from various firmware files
 +
* Guidance on searching a file systems for sensitive of interesting data
 +
* Information on static analysis of firmware contents
 +
* Information on dynamic analysis of emulated services (e.g. web admin interface)
 +
* Testing tool links
 +
* A site for pulling together existing information on firmware analysis
 +
 
 +
== Project Leaders ==
 +
 
 +
* Craig Smith
 +
 
 +
== Related Projects ==
 +
 
 +
* [[OWASP_Mobile_Security_Project|OWASP Mobile Security]]
 +
* [[OWASP_Top_Ten_Project|OWASP Web Top 10]]
 +
* [https://www.owasp.org/index.php/OWASP_Embedded_Application_Security OWASP Embedded Application Security Project]
 +
 
 +
== Collaboration ==
 +
[https://owasp-iot-security.slack.com The Slack Channel]
 +
 
 +
== Resources ==
 +
* [https://www.owasp.org/index.php/IoT_Firmware_Analysis IoT Firmware Analysis Primer]
 +
* [https://otalliance.org/initiatives/internet-things Online Trust Alliance - Internet of Things]
 +
* [https://people.debian.org/~aurel32/qemu/ Pre-compiled QEMU images]
 +
* [https://code.google.com/archive/p/firmware-mod-kit/ Firmware Modification Kit]
 +
* [https://craigsmith.net/episode-11-1-firmware-extraction/ Short Firmware Extraction Video]
 +
* [https://craigsmith.net/episode-12-1-firmware-emulation-with-qemu/ Firmware Emulation with QEMU]
 +
* [https://craigsmith.net/episode-18-1-file-extraction-from-network-capture/ File Extraction from Network Capture]
 +
 
 +
== News and Events ==
 +
* Coming Soon
 +
 
 +
|}
 +
 
 +
= IoT Event Logging Project=
 +
 
 +
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:                  OWASP_Project_Header.jpg|link=]]</div>
 +
 
 +
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 +
| style="border-right: 1px dotted gray;padding-right:25px;" valign="top" |
 +
 
 +
== IoT Logging Events==
 +
 
 +
This is a working draft of the recommended minimum IoT Device logging events. This includes many  different types of devices, including consumer IoT, enterprise IoT, and ICS/SCADA type devices.
 +
 
 +
{| class="wikitable" style="text-align: left" border="1"
 +
! Event Category
 +
! Events
 +
|-
 +
| '''Request Exceptions'''
 +
|
 +
* Attempt to Invoke Unsupported HTTP Method
 +
* Unexpected Quantity of Characters in Parameter
 +
* Unexpected Type of Characters in Parameter
 +
|-
 +
| '''Authentication Exceptions'''
 +
|
 +
* Multiple Failed Passwords
 +
* High Rate of Login Attempts
 +
* Additional POST Variable
 +
* Deviation from Normal GEO Location
 +
|-
 +
| '''Session Exceptions'''
 
|
 
|
* If your system has a local or cloud-based web application, ensure that you change the default password to a strong one and if possible change the default username as well
+
* Modifying the Existing Cookie
* If the system has account lockout functionality, ensure that it is enabled
+
* Substituting Another User's Valid SessionID or Cookie
* If the system has the option to require strong passwords, ensure that is enabled
+
* Source Location Changes During Session
* If the system has the option to require new passwords after 90 days for example, ensure that is enabled
+
|-
* If your system has a two factor authentication option, ensure that it is enabled
+
| '''Access Control Exceptions'''
* If your system has the option to set user privileges, consider setting user privileges to the minimal needed for operation
 
* Consider employing network segmentation technologies such as firewalls to isolate IoT systems from critical IT systems
 
|-  
 
| '''I3: Insecure Network Services'''
 
 
|
 
|
* If your system has a firewall option available, enable it and ensure that it can only be accessed from your client systems
+
* Modifying URL Argument Within a GET for Direct Object Access Attempt
* Consider employing network segmentation technologies such as firewalls to isolate IoT systems from critical IT systems
+
* Modifying Parameter Within a POST for Direct Object Access Attempt
|-  
+
* Forced Browsing Attempt
| '''I4: Lack of Transport Encryption'''
+
|-
 +
| '''Ecosystem Membership Exceptions'''
 
|
 
|
* If your system has the option to use HTTPS, ensure it is enabled
+
* Traffic Seen from Disenrolled System
|-  
+
* Traffic Seen from Unenrolled System
| '''I5: Privacy Concerns'''
+
* Failed Attempt to Enroll in Ecosystem
 +
* Multiple Attempts to Enroll in Ecosystem
 +
|-
 +
| '''Device Access Events'''
 
|
 
|
* Do not enter sensitive information into the system that is not absolutely required, e.g. address, DOB, CC, etc.
+
* Device Case Tampering Detected
* Deny data collection if it appears to be beyond what is needed for proper operation of the device (If provided the choice)
+
* Device Logic Board Tampering Detected
|-  
+
|-
| '''I6: Insecure Cloud Interface'''
+
| '''Administrative Mode Events'''
 
|
 
|
* If your system has the option to use HTTPS, ensure it is enabled
+
* Device Entered Administrative Mode
* If your system has a two factor authentication option, ensure that it is enabled
+
* Device Accessed Using Default Administrative Credentials
* If your system has web application firewall option, ensure that it is enabled
+
|-
* If your system has a local or cloud-based web application, ensure that you change the default password to a strong one and if possible change the default username as well
+
| '''Input Exceptions'''
* If the system has account lockout functionality, ensure that it is enabled
 
* If the system has the option to require strong passwords, ensure that is enabled
 
* If the system has the option to require new passwords after 90 days for example, ensure that is enabled
 
|-  
 
| '''I7: Insecure Mobile Interface'''
 
 
|
 
|
* If the mobile application has the option to require a PIN or password, consider using it for extra security (on client and server)
+
* Double Encoded Character
* If the mobile application has the option to use two factory authentication such as Apple's Touch ID, ensure it is enabled
+
* Unexpected Encoding Used
* If the system has account lockout functionality, ensure that it is enabled
+
|-
* If the system has the option to require strong passwords, ensure that is enabled
+
| '''Command Injection Exceptions'''
* If the system has the option to require new passwords after 90 days for example, ensure that is enabled
 
* Do not enter sensitive information into the mobile application that is not absolutely required, e.g. address, DOB, CC, etc.
 
|-  
 
| '''I8: Insufficient Security Configurability'''
 
 
|
 
|
* If your system has the option, enable any logging functionality for security-related events
+
* Blacklist Inspection for Common SQL Injection Values
* If your system has the option, enable any alert and notification functionality for security-related events
+
* Abnormal Quantity of Returned Records
* If your system has security options for passwords, ensure they are enabled for strong passwords
+
|-
* If your system has security options for encryption, ensure they are set for an accepted standard such as AES-256
+
| '''Honey Trap Exceptions'''
|-  
 
| '''I9: Insecure Software/Firmware'''
 
 
|
 
|
* If your system has the option to verify updates, ensure it is enabled
+
* Honey Trap Resource Requested
* If your system has the option to download updates securely, ensure it is enabled
+
* Honey Trap Data Used
* If your system has the ability to schedule updates on a regular cadence, consider enabling it
+
|-
|-  
+
| '''Reputation Exceptions'''
| '''I10: Poor Physical Security'''
 
 
|
 
|
* If your system has the ability to limit administrative capabilities possible by connecting locally, consider enabling that feature
+
* Suspicious or Disallowed User Source Location
* Disable any unused physical ports through the administrative interface
+
 
 +
|-
 
|}
 
|}
  
===General Recommendations===
+
{{Social Media Links}}
 +
 
 +
| style="padding-left:25px;width:300px;border-right: 1px dotted gray;padding-right:  25px;" valign="top" |
 +
 
 +
== What is the IoT Security Logging Project? ==
 +
 
 +
The IoT Secure Logging Project provides a list of core events that should be logged in any IoT-related system. The project exists because IoT systems in general are not logging nearly enough events to constitute input for a solid detection and response program around IoT devices, and for companies that want to do this there are not many good resources for what should be logged.
 +
 
 +
== Project Leaders ==
 +
 
 +
* Daniel Miessler
 +
 
 +
== Related Projects ==
 +
 
 +
* [https://www.owasp.org/index.php/OWASP_AppSensor_Project The OWASP AppSensor Project]
 +
 
 +
== Collaboration ==
 +
[https://owasp-iot-security.slack.com The Slack Channel]
  
If you are looking to purchase a device or system, consider the following recommendations:
+
== Quick Download ==
* Include security in feature considerations when evaluating a product
+
* Coming Soon
* Place Internet of Things devices on a separate network if possible using a firewall
 
  
[ NOTE: Given the fact that each deployment and every environment is different, it is important to weigh the pros and cons of implementing the advice above before taking each step. ]
+
== News and Events ==
 +
* Coming Soon
  
= Project Details =
+
|}
  
<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">[[File:OWASP_Project_Header.jpg|link=]]</div>
+
=Project About=
  
 +
{{Template:Project About
 +
| project_name =OWASP Internet of Things Project
 +
| project_description =
 +
| project_license =CC-BY 3.0 for documentation and GPLv3 for code.
 +
| leader_name1 = Daniel Miessler
 +
| leader_email1 =
 +
| leader_username1 =
 +
| leader_name2 =Craig Smith
 +
| leader_email2 =
 +
| leader_username2 =
 +
| contributor_name1 = Justin Klein Keane]
 +
| contributor_email1 =
 +
| contributor_username1 = Justin_C._Klein_Keane
 +
| contributor_name2 = Yunsoul
 +
| contributor_email2 =
 +
| contributor_username2 = Yunsoul
 +
| mailing_list_name =
 +
| links_url1 =
 +
| links_name1 =
 +
}} 
  
{{:Projects/OWASP_Internet_of_Things_Top_Ten_Project}}
 
  
  
__NOTOC__ <headertabs />
+
__NOTOC__ <headertabs></headertabs>
  
[[Category:OWASP_Project]] [[Category:OWASP_Document]] [[Category:OWASP_Download]] [[Category:OWASP_Release_Quality_Document]]
+
[[Category:OWASP_Project]]  
 +
[[Category:OWASP_Document]]  
 +
[[Category:OWASP_Download]]  
 +
[[Category:OWASP_Release_Quality_Document]]

Latest revision as of 07:02, 1 November 2019

OWASP Project Header.jpg

OWASP Internet of Things (IoT) Project

Oxford defines the Internet of Things as: “A proposed development of the Internet in which everyday objects have network connectivity, allowing them to send and receive data.”

The OWASP Internet of Things Project is designed to help manufacturers, developers, and consumers better understand the security issues associated with the Internet of Things, and to enable users in any context to make better security decisions when building, deploying, or assessing IoT technologies.

The project looks to define a structure for various IoT sub-projects separated into the following categories - Seek & Understand, Validate & Test, and Governance.

Updated!

The OWASP IoT Project for 2018 has been released!
OWASP 2018 IoT Top10 Final.jpg

Philosophy

The OWASP Internet of Things Project was started in 2014 as a way help Developers, Manufacturers, Enterprises, and Consumers to make better decisions regarding the creation and use of IoT systems.

This continues today with the 2018 release of the OWASP IoT Top 10, which represents the top ten things to avoid when building, deploying, or managing IoT systems. The primary theme for the 2018 OWASP Internet of Things Top 10 is simplicity. Rather than having separate lists for risks vs. threats vs. vulnerabilities—or for developers vs. enterprises vs. consumers—the project team elected to have a single, unified list that captures the top things to avoid when dealing with IoT Security.

The team recognized that there are now dozens of organizations releasing elaborate guidance on IoT Security—all of which are designed for slightly different audiences and industry verticals. We thought the most useful resource we could create is a single list that addresses the highest priority issues for manufacturers, enterprises, and consumers at the same time.

The result is the 2018 OWASP IoT Top 10.

Methodology

The project team is a collection of volunteer professionals from within the security industry, with experience spanning multiple areas of expertise, including: manufacturers, consulting, security testers, developers, and many more.

The project was conducted in the following phases:

  1. Team Formation: finding people who would be willing to contribute to the 2018 update, both as SMEs and as project leaders to perform various tasks within the duration of the project.
  2. Project Review: analysis of the 2014 project to determine what’s changed in the industry since that release, and how the list should be updated given those changes.
  3. Data Collection: collection and review of multiple vulnerability sources (both public and private), with special emphasis on which issues caused the most actual impact and damage.
  4. Sister Project Review: a review of dozens of other IoT Security projects to ensure that we’d not missed something major and that we were comfortable with both the content and prioritization of our release. Examples included: CSA IoT Controls Matrix, CTIA, Stanford’s Secure Internet of Things Project, NISTIR 8200, ENISA IoT Baseline Report, Code of Practice for Consumer IoT Security, and others.
  5. Community Draft Feedback: release of the draft to the community for review, including multiple Twitter calls for comments, the use of a public feedback form, and a number of public talks where feedback was gathered. The feedback was then reviewed by the team along with initial Data Collection, as well as Sister Project Review, to create the list contents and prioritization.
  6. Release: release of the project to the public in December 2018.

The Future of the OWASP IoT Top 10

The team has a number of activities planned to continue improving on the project going forward.

Some of the items being discussed include:

  • Continuing to improve the list on a two-year cadence, incorporating feedback from the community and from additional project contributors to ensure we are staying current with issues facing the industry.
  • Mapping the list items to other OWASP projects, such as the ASVS, and perhaps to other projects outside OWASP as well.
  • Expanding the project into other aspects of IoT—including embedded security, ICS/ SCADA,etc.
  • Adding use and abuse cases, with multiple examples, to solidify each concept discussed.
  • Considering the addition of reference architectures, so we can not only tell people what to avoid, but how to do what they need to do securely.

Participation in the OWASP IoT Project is open to the community. We take input from all participants — whether you’re a developer, a manufacturer, a penetration tester, or someone just trying to implement IoT securely. You can find the team meeting every other Friday in the the #iot-security room of the OWASP Slack Channel.

The OWASP IoT Security Team, 2018

Licensing

The OWASP Internet of Things Project is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.


What is the OWASP Internet of Things Project?

The OWASP Internet of Things Project provides information on:

Project Leaders

  • Daniel Miessler
  • Craig Smith
  • Vishruta Rudresh
  • Aaron Guzman

Contributors

IoT Top 2018 Contributors

  • Vijayamurugan Pushpanathan
  • Alexander Lafrenz
  • Masahiro Murashima
  • Charlie Worrell
  • José A. Rivas (jarv)
  • Pablo Endres
  • Ade Yoseman
  • Cédric Levy-Bencheotn
  • Jason Andress
  • Amélie Didion - Designer

Related Projects

Collaboration

The OWASP Slack Channel

Hint: If you're new to Slack, join OWASP's slack channel first, then join #iot-security within OWASP's channel.

Quick Download

OWASP IoT Top Ten 2018

IoT Attack Surface Mapping DEFCON 23

IoT Testing Guidance Handout

OWASP IoT Top Ten 2014 PDF

OWASP IoT Project Overview

News and Events

Classifications

Owasp-incubator-trans-85.png Owasp-builders-small.png
Owasp-defenders-small.png
Cc-button-y-sa-small.png
Project Type Files DOC.jpg
OWASP Project Header.jpg

Internet of Things (IoT) Top 10 2018

The OWASP IoT Top 10 - 2018 is now available.

  • I1 Weak Guessable, or Hardcoded Passwords
  • I2 Insecure Network Services
  • I3 Insecure Ecosystem Interfaces
  • I4 Lack of Secure Update Mechanism
  • I5 Use of Insecure or Outdated Components
  • I6 Insufficient Privacy Protection
  • I7 Insecure Data Transfer and Storage
  • I8 Lack of Device Management
  • I9 Insecure Default Settings
  • I10 Lack of Physical Hardening

Internet of Things (IoT) Top 10 2014

IoT Top 10 2018 Mapping Project

The OWASP IoT Mapping Project is intended to provide a mapping of the OWASP IoT Top 10 2018 to industry publications and sister projects. The goal is to provide resources that enable practical uses for the OWASP IoT Top 10 . As with all Top 10 lists, they should be used as a first step and expanded upon according to the applicable IoT ecosystem.

Mappings are structured with control categories, tests, or recommendations in the left column, descriptions in the middle column, and their mapping to the OWASP IoT Top 10 2018 list in the right column. Each mapping may not have a 1 to 1 relation; however, similar recommendations and/or controls are listed. For mappings that are not applicable to the IoT Top 10 2018 list, an "N/A" is provided as the mapping.

An example mapping of the IoT Top 10 2014 is provided below.

2014 2018Mapping.png

For additional mappings, please visit the following link: https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/

What is the IoT Top 10 Mapping Project?

The OWASP IoT Mapping Project is intended to provide a mapping of the OWASP IoT Top 10 2018 to industry publications and sister projects. The goal is to provide resources that enable practical uses for the OWASP IoT Top 10 . As with all Top 10 lists, they should be used as a first step and expanded upon according to the applicable IoT ecosystem.

Mappings include the following:

and more...

GitBook

Mappings are hosted on GitBook using the following link https://scriptingxss.gitbook.io/owasp-iot-top-10-mapping-project/

Project Leaders

  • Aaron Guzman

Collaboration

The Slack Channel

OWASP Project Header.jpg

IoTGoat Project

IoT Goat is a deliberately insecure firmware based on OpenWrt. The project’s goal is to teach users about the most common vulnerabilities typically found in IoT devices. The vulnerabilities will be based on the top 10 vulnerabilities as documented by OWASP: https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project. IoTGoat is expected to be released by December 2019.

To get more information on getting started or how to contribute, visit the project's Github: https://github.com/scriptingxss/IoTGoat


What is the IoTGoat Project?

The IoTGoat Project is a deliberately insecure firmware based on OpenWrt. The project’s goal is to teach users about the most common vulnerabilities typically found in IoT devices. The vulnerabilities will be based on the IoT Top 10.

GitHub

https://github.com/scriptingxss/IoTGoat

Project Leaders

Related Projects

  • WebGoat
  • Serverless Goat
  • NodeGoat
  • RailsGoat

Collaboration

The Slack Channel

IoTGoat Google Group

Quick Download

News and Events

  • Coming Soon

OWASP Project Header.jpg

ByteSweep Project

ByteSweep is a Free Software IoT security analysis platform. This platform will allow IoT device makers, large and small, to conduct fully automated security checks before they ship firmware. A Free Software IoT Firmware Security Analysis Platform

ByteSweep Features:

  • Firmware extraction
  • File data enrichment
  • Key and password hash identification
  • Unsafe function use detection
  • 3rd party component identification
  • CVE correlation


What is the ByteSweep Project?

A Free Software IoT Firmware Security Analysis Platform.

GitLab

https://gitlab.com/bytesweep/bytesweep

Project Leaders

  • Matt Brown

Collaboration

The Slack Channel

Quick Download

OWASP Project Header.jpg

Firmware Security Testing Methodology

The Firmware Security Testing Methodology (FSTM) is composed of nine stages tailored to enable security researchers, software developers, consultants, hobbyists, and Information Security professionals with conducting firmware security assessments.

Stage Description
1. Information gathering and reconnaissance Acquire all relative technical and documentation details pertaining to the target device’s firmware
2. Obtaining firmware Attain firmware using one or more of the proposed methods listed
3. Analyzing firmware Examine the target firmware’s characteristics
4. Extracting the filesystem Carve filesystem contents from the target firmware
5. Analyzing filesystem contents Statically analyze extracted filesystem configuration files and binaries for vulnerabilities 
6. Emulating firmware Emulate firmware files and components
7. Dynamic analysis Perform dynamic security testing against firmware and application interfaces
8. Runtime analysis Analyze compiled binaries during device runtime
9. Binary Exploitation Exploit identified vulnerabilities discovered in previous stages to attain root and/or code execution
The full methodology release can be downloaded via the following https://github.com/scriptingxss/owasp-fstm/releases/download/v1.0/Firmware_Security_Testing_Methodology_Version1.pdf.


What is the Firmware Security Testing Methodology

The Firmware Security Testing Methodology Project provides:

  • Attack walkthroughs
  • Tool usage examples
  • Screenshots
  • Companion virtual machine preloaded with tools (EmbedOS) - https://github.com/scriptingxss/EmbedOS

Project Leaders

  • Aaron Guzman

Quick Download

OWASP Project Header.jpg

IoT Attack Surface Areas Project

The OWASP IoT Attack Surface Areas (DRAFT) are as follows:

Attack Surface Vulnerability
Ecosystem (general)
  • Interoperability standards
  • Data governance
  • System wide failure
  • Individual stakeholder risks
  • Implicit trust between components
  • Enrollment security
  • Decommissioning system
  • Lost access procedures
Device Memory
  • Sensitive data
    • Cleartext usernames
    • Cleartext passwords
    • Third-party credentials
    • Encryption keys
Device Physical Interfaces
  • Firmware extraction
  • User CLI
  • Admin CLI
  • Privilege escalation
  • Reset to insecure state
  • Removal of storage media
  • Tamper resistance
  • Debug port
    • UART (Serial)
    • JTAG / SWD
  • Device ID/Serial number exposure
Device Web Interface
  • Standard set of web application vulnerabilities, see:
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
Device Firmware
  • Sensitive data exposure (See OWASP Top 10 - A6 Sensitive data exposure):
    • Backdoor accounts
    • Hardcoded credentials
    • Encryption keys
    • Encryption (Symmetric, Asymmetric)
    • Sensitive information
    • Sensitive URL disclosure
  • Firmware version display and/or last update date
  • Vulnerable services (web, ssh, tftp, etc.)
    • Verify for old sw versions and possible attacks (Heartbleed, Shellshock, old PHP versions etc)
  • Security related function API exposure
  • Firmware downgrade possibility
Device Network Services
  • Information disclosure
  • User CLI
  • Administrative CLI
  • Injection
  • Denial of Service
  • Unencrypted Services
  • Poorly implemented encryption
  • Test/Development Services
  • Buffer Overflow
  • UPnP
  • Vulnerable UDP Services
  • DoS
  • Device Firmware OTA update block
  • Firmware loaded over insecure channel (no TLS)
  • Replay attack
  • Lack of payload verification
  • Lack of message integrity check
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
Administrative Interface
  • Standard set of web application vulnerabilities, see:
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
  • Security/encryption options
  • Logging options
  • Two-factor authentication
  • Check for insecure direct object references
  • Inability to wipe device
Local Data Storage
  • Unencrypted data
  • Data encrypted with discovered keys
  • Lack of data integrity checks
  • Use of static same enc/dec key
Cloud Web Interface
  • Standard set of web application vulnerabilities, see:
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
  • Transport encryption
  • Two-factor authentication
Third-party Backend APIs
  • Unencrypted PII sent
  • Encrypted PII sent
  • Device information leaked
  • Location leaked
Update Mechanism
  • Update sent without encryption
  • Updates not signed
  • Update location writable
  • Update verification
  • Update authentication
  • Malicious update
  • Missing update mechanism
  • No manual update mechanism
Mobile Application
  • Implicitly trusted by device or cloud
  • Username enumeration
  • Account lockout
  • Known default credentials
  • Weak passwords
  • Insecure data storage
  • Transport encryption
  • Insecure password recovery mechanism
  • Two-factor authentication
Vendor Backend APIs
  • Inherent trust of cloud or mobile application
  • Weak authentication
  • Weak access controls
  • Injection attacks
  • Hidden services
Ecosystem Communication
  • Health checks
  • Heartbeats
  • Ecosystem commands
  • Deprovisioning
  • Pushing updates
Network Traffic
  • LAN
  • LAN to Internet
  • Short range
  • Non-standard
  • Wireless (WiFi, Z-wave, XBee, Zigbee, Bluetooth, LoRA)
  • Protocol fuzzing
Authentication/Authorization
  • Authentication/Authorization related values (session key, token, cookie, etc.) disclosure
  • Reusing of session key, token, etc.
  • Device to device authentication
  • Device to mobile Application authentication
  • Device to cloud system authentication
  • Mobile application to cloud system authentication
  • Web application to cloud system authentication
  • Lack of dynamic authentication
Privacy
  • User data disclosure
  • User/device location disclosure
  • Differential privacy
Hardware (Sensors)
  • Sensing Environment Manipulation
  • Tampering (Physically)
  • Damage (Physicall)


What is the IoT Attack Surface Areas Project?

The IoT Attack Surface Areas Project provides a list of attack surfaces that should be understood by manufacturers, developers, security researchers, and those looking to deploy or implement IoT technologies within their organizations.

Project Leaders

  • Daniel Miessler
  • Craig Smith

Related Projects

Collaboration

The Slack Channel

Quick Download

  • Coming Soon

News and Events

  • Coming Soon
OWASP Project Header.jpg

IoT Vulnerabilities Project

Vulnerability Attack Surface Summary
Username Enumeration
  • Administrative Interface
  • Device Web Interface
  • Cloud Interface
  • Mobile Application
  • Ability to collect a set of valid usernames by interacting with the authentication mechanism
Weak Passwords
  • Administrative Interface
  • Device Web Interface
  • Cloud Interface
  • Mobile Application
  • Ability to set account passwords to '1234' or '123456' for example.
  • Usage of pre-programmed default passwords
Account Lockout
  • Administrative Interface
  • Device Web Interface
  • Cloud Interface
  • Mobile Application
  • Ability to continue sending authentication attempts after 3 - 5 failed login attempts
Unencrypted Services
  • Device Network Services
  • Network services are not properly encrypted to prevent eavesdropping or tampering by attackers
Two-factor Authentication
  • Administrative Interface
  • Cloud Web Interface
  • Mobile Application
  • Lack of two-factor authentication mechanisms such as a security token or fingerprint scanner
Poorly Implemented Encryption
  • Device Network Services
  • Encryption is implemented however it is improperly configured or is not being properly updated, e.g. using SSL v2
Update Sent Without Encryption
  • Update Mechanism
  • Updates are transmitted over the network without using TLS or encrypting the update file itself
Update Location Writable
  • Update Mechanism
  • Storage location for update files is world writable potentially allowing firmware to be modified and distributed to all users
Denial of Service
  • Device Network Services
  • Service can be attacked in a way that denies service to that service or the entire device
Removal of Storage Media
  • Device Physical Interfaces
  • Ability to physically remove the storage media from the device
No Manual Update Mechanism
  • Update Mechanism
  • No ability to manually force an update check for the device
Missing Update Mechanism
  • Update Mechanism
  • No ability to update device
Firmware Version Display and/or Last Update Date
  • Device Firmware
  • Current firmware version is not displayed and/or the last update date is not displayed
Firmware and storage extraction
  • JTAG / SWD interface
  • In-Situ dumping
  • Intercepting a OTA update
  • Downloading from the manufacturers web page
  • eMMC tapping
  • Unsoldering the SPI Flash / eMMC chip and reading it in a adapter
  • Firmware contains a lot of useful information, like source code and binaries of running services, pre-set passwords, ssh keys etc.
Manipulating the code execution flow of the device
  • With the help of a JTAG adapter and gdb we can modify the execution of firmware in the device and bypass almost all software based security controls.
  • Side channel attacks can also modify the execution flow or can be used to leak interesting information from the device
Obtaining console access
  • Serial interfaces (SPI / UART)
  • By connecting to a serial interface, we will obtain full console access to a device
  • Usually security measures include custom bootloaders that prevent the attacker from entering single user mode, but that can also be bypassed.
Insecure 3rd party components
  • Software
  • Out of date versions of busybox, openssl, ssh, web servers, etc.


What is the IoT Vulnerabilities Project?

The IoT Vulnerabilities Project provides:

  • Information on the top IoT vulnerabilities
  • The attack surface associated with the vulnerability
  • A summary of the vulnerability

Project Leaders

  • Daniel Miessler
  • Craig Smith

Related Projects

Collaboration

The Slack Channel

Resources

News and Events

  • Coming Soon
OWASP Project Header.jpg

Medical Device Testing

The Medical Device Testing project is intended to provide some basic attack surface considerations that should be evaluated before shipping Medical Device equipment.

Attack Surface Vulnerability
Ecosystem (general)
  • Interoperability standards
  • Data governance
  • System wide failure
  • Individual stakeholder risks
  • Implicit trust between components
  • Enrollment security
  • Decommissioning system
  • Lost access procedures
HL7
  • XML Parsing
    • XSS
  • Information Disclosure
Device Memory
  • Sensitive data
    • Cleartext usernames
    • Cleartext passwords
    • Third-party credentials
    • Encryption keys
Device Physical Interfaces
  • Firmware extraction
  • User CLI
  • Admin CLI
  • Privilege escalation
  • Reset to insecure state
  • Removal of storage media
  • Tamper resistance
  • Debug port
  • Device ID/Serial number exposure
Device Web Interface
  • Standard set of web vulnerabilities:
    • SQL injection
    • Cross-site scripting
    • Cross-site Request Forgery
    • Username enumeration
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
Device Firmware
  • Sensitive data exposure:
    • Backdoor accounts
    • Hardcoded credentials
    • Encryption keys
    • Encryption (Symmetric, Asymmetric)
    • Sensitive information
    • Sensitive URL disclosure
  • Firmware version display and/or last update date
  • Vulnerable services (web, ssh, tftp, etc.)
  • Security related function API exposure
  • Firmware downgrade
Device Network Services
  • Information disclosure
  • User CLI
  • Administrative CLI
  • Injection
  • Denial of Service
  • Unencrypted Services
  • Poorly implemented encryption
  • Test/Development Services
  • Buffer Overflow
  • UPnP
  • Vulnerable UDP Services
  • DoS
  • Device Firmware OTA update block
  • Replay attack
  • Lack of payload verification
  • Lack of message integrity check
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
Administrative Interface
  • Standard web vulnerabilities:
    • SQL injection
    • Cross-site scripting
    • Cross-site Request Forgery
    • Username enumeration
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
  • Security/encryption options
  • Logging options
  • Two-factor authentication
  • Inability to wipe device
Local Data Storage
  • Unencrypted data
  • Data encrypted with discovered keys
  • Lack of data integrity checks
  • Use of static same enc/dec key
Cloud Web Interface
  • Standard set of web vulnerabilities:
    • SQL injection
    • Cross-site scripting
    • Cross-site Request Forgery
  • Credential management vulnerabilities:
    • Username enumeration
    • Weak passwords
    • Account lockout
    • Known default credentials
    • Insecure password recovery mechanism
  • Transport encryption
  • Two-factor authentication
Third-party Backend APIs
  • Unencrypted PII sent
  • Encrypted PII sent
  • Device information leaked
  • Location leaked
Update Mechanism
  • Update sent without encryption
  • Updates not signed
  • Update location writable
  • Update verification
  • Update authentication
  • Malicious update
  • Missing update mechanism
  • No manual update mechanism
Mobile Application
  • Implicitly trusted by device or cloud
  • Username enumeration
  • Account lockout
  • Known default credentials
  • Weak passwords
  • Insecure data storage
  • Transport encryption
  • Insecure password recovery mechanism
  • Two-factor authentication
Vendor Backend APIs
  • Inherent trust of cloud or mobile application
  • Weak authentication
  • Weak access controls
  • Injection attacks
  • Hidden services
Ecosystem Communication
  • Health checks
  • Heartbeats
  • Ecosystem commands
  • Deprovisioning
  • Pushing updates
Network Traffic
  • LAN
  • LAN to Internet
  • Short range
  • Non-standard
  • Wireless (WiFi, Z-wave, XBee, Zigbee, Bluetooth, LoRA)
  • Protocol fuzzing
Authentication/Authorization
  • Authentication/Authorization related values (session key, token, cookie, etc.) disclosure
  • Reusing of session key, token, etc.
  • Device to device authentication
  • Device to mobile Application authentication
  • Device to cloud system authentication
  • Mobile application to cloud system authentication
  • Web application to cloud system authentication
  • Lack of dynamic authentication
Data Flow
  • What data is being captured?
  • How does it move within the ecosystem?
  • How is it protected in transit?
  • How is it protected at rest?
  • Who is that data shared with?
Hardware (Sensors)
  • Sensing Environment Manipulation
  • Tampering (Physically)
  • Damaging (Physically)
  • Failure state analysis


What is the Medical Attack Surfaces project?

The Medical Attack Surfaces project provides:

  • A simple way for testers, manufacturers, developers, and users to get an understanding of the complexity of a modern medical environment
  • Allows people to visualize the numerous attack surfaces that need to be defended within medical equipment ecosystems

Project Leaders

  • Daniel Miessler

Related Projects

Collaboration

The Slack Channel

Resources

News and Events

  • Daniel Miessler presented on using Adaptive Testing Methodologies to evaluate the security of medical devices at RSA 2017.
OWASP Project Header.jpg

Firmware Analysis Project

The Firmware Analysis Project is intended to provide security testing guidance for the IoT Attack Surface "Device Firmware":

Section

Device Firmware Vulnerabilities

  • Out-of-date core components
  • Unsupported core components
  • Expired and/or self-signed certificates
  • Same certificate used on multiple devices
  • Admin web interface concerns
  • Hardcoded or easy to guess credentials
  • Sensitive information disclosure
  • Sensitive URL disclosure
  • Encryption key exposure
  • Backdoor accounts
  • Vulnerable services (web, ssh, tftp, etc.)

Manufacturer Recommendations

  • Ensure that supported and up-to-date software is used by developers
  • Ensure that robust update mechanisms are in place for devices
  • Ensure that certificates are not duplicated across devices and product lines.
  • Ensure supported and up-to-date software is used by developers
  • Develop a mechanism to ensure a new certificate is installed when old ones expire
  • Disable deprecated SSL versions
  • Ensure developers do not code in easy to guess or common admin passwords
  • Ensure services such as SSH have a secure password created
  • Develop a mechanism that requires the user to create a secure admin password during initial device setup
  • Ensure developers do not hard code passwords or hashes
  • Have source code reviewed by a third party before releasing device to production
  • Ensure industry standard encryption or strong hashing is used

Device Firmware Guidance and Instruction

  • Firmware file analysis
  • Firmware extraction
  • Dynamic binary analysis
  • Static binary analysis
  • Static code analysis
  • Firmware emulation
  • File system analysis

Device Firmware Tools

Vulnerable Firmware


What is the Firmware Analysis Project?

The Firmware Analysis Project provides:

  • Security testing guidance for vulnerabilities in the "Device Firmware" attack surface
  • Steps for extracting file systems from various firmware files
  • Guidance on searching a file systems for sensitive of interesting data
  • Information on static analysis of firmware contents
  • Information on dynamic analysis of emulated services (e.g. web admin interface)
  • Testing tool links
  • A site for pulling together existing information on firmware analysis

Project Leaders

  • Craig Smith

Related Projects

Collaboration

The Slack Channel

Resources

News and Events

  • Coming Soon
OWASP Project Header.jpg

IoT Logging Events

This is a working draft of the recommended minimum IoT Device logging events. This includes many different types of devices, including consumer IoT, enterprise IoT, and ICS/SCADA type devices.

Event Category Events
Request Exceptions
  • Attempt to Invoke Unsupported HTTP Method
  • Unexpected Quantity of Characters in Parameter
  • Unexpected Type of Characters in Parameter
Authentication Exceptions
  • Multiple Failed Passwords
  • High Rate of Login Attempts
  • Additional POST Variable
  • Deviation from Normal GEO Location
Session Exceptions
  • Modifying the Existing Cookie
  • Substituting Another User's Valid SessionID or Cookie
  • Source Location Changes During Session
Access Control Exceptions
  • Modifying URL Argument Within a GET for Direct Object Access Attempt
  • Modifying Parameter Within a POST for Direct Object Access Attempt
  • Forced Browsing Attempt
Ecosystem Membership Exceptions
  • Traffic Seen from Disenrolled System
  • Traffic Seen from Unenrolled System
  • Failed Attempt to Enroll in Ecosystem
  • Multiple Attempts to Enroll in Ecosystem
Device Access Events
  • Device Case Tampering Detected
  • Device Logic Board Tampering Detected
Administrative Mode Events
  • Device Entered Administrative Mode
  • Device Accessed Using Default Administrative Credentials
Input Exceptions
  • Double Encoded Character
  • Unexpected Encoding Used
Command Injection Exceptions
  • Blacklist Inspection for Common SQL Injection Values
  • Abnormal Quantity of Returned Records
Honey Trap Exceptions
  • Honey Trap Resource Requested
  • Honey Trap Data Used
Reputation Exceptions
  • Suspicious or Disallowed User Source Location


What is the IoT Security Logging Project?

The IoT Secure Logging Project provides a list of core events that should be logged in any IoT-related system. The project exists because IoT systems in general are not logging nearly enough events to constitute input for a solid detection and response program around IoT devices, and for companies that want to do this there are not many good resources for what should be logged.

Project Leaders

  • Daniel Miessler

Related Projects

Collaboration

The Slack Channel

Quick Download

  • Coming Soon

News and Events

  • Coming Soon
PROJECT INFO
What does this OWASP project offer you?
RELEASE(S) INFO
What releases are available for this project?
what is this project?
Name: OWASP Internet of Things Project
Purpose: N/A
License: CC-BY 3.0 for documentation and GPLv3 for code.
who is working on this project?
Project Leader(s):
  • Daniel Miessler
  • Craig Smith
Project Contributor(s):
how can you learn more?
Project Pamphlet: Not Yet Created
Project Presentation:
Mailing list: N/A
Project Roadmap: Not Yet Created
Key Contacts
  • Contact Daniel Miessler to contribute to this project
  • Contact Daniel Miessler to review or sponsor this project
current release
Not Yet Published
last reviewed release
Not Yet Reviewed


other releases