OWASP Embedded Application Security

De OWASP
Saltar a: navegación, buscar
[edit]

Incubator big.jpg

OWASP Embedded Application Security Project

Each year, the number of enterprise and consumer devices with embedded software are on the rise. Given the publicity with IoT and more devices becoming network connected, it is essential to create secure coding guidelines for embedded software. Embedded Application Security is not often a high priority for embedded devices such as Routers, Managed Switches, IoT devices, and even ATM Kiosks. There are many challenges in the embedded field including ODM supply chain, limited memory, a small stack, and the challenge of pushing firmware updates securely to an endpoint. The goal of this project is to identify the risks in embedded applications on a generalized list of devices, create a list of best practices, draw on the resources that OWASP already has, and bring OWASP expertise to the embedded world.


Mailing List

Embedded Sec Mailing List

Project Leaders

Aaron Guzman @

Related Projects

News and Events

  • [18 July 2016] New Project Template

In Print

We will be releasing a user guide soon!

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


  1. Prevent the use of dangerous functions and APIs in efforts to protect against memory-corruption vulnerabilities inside firmware. (e.g. Use of unsafe C functions - strcat, strcpy, sprintf, scanf) [1]
  2. Ensure secure compiler flags or switches are utilized upon each firmware build. (e.g. For GCC -fPIE, -fstack-protector-all, -Wl,-z,noexecstack, -Wl,-z,noexecheap etc..)
  3. Ensure robust update mechanisms utilize cryptographically signed firmware images for updating functions.
  4. Do not hard code secrets such as passwords, usernames, tokens, private keys or similar variants into firmware images.
  5. Dispose and securely wipe sensitive information stored in buffers or temporary files during runtime after they are no longer needed (e.g. Wipe buffers from locations where personal identifiable information is stored before releasing the buffers)
  6. Modify Busybox and embedded frameworks alike to only libraries and functions that are being used. (e.g.. Remove unused languages like perl and services such as Telnet, FTP etc)
  7. Validate all debugging and pre-production code have been removed prior to firmware deployment.This includes potential "backdoors code" and accounts left behind by ODM's code base. [2]
  8. Ensure all methods of communication are utilizing industry standard encryption configurations for TLS.
  9. Limit collection, storage, and sharing of personal identifiable information (PII) to items that are only required for operation.
  10. Ensure the kernel, software packages and third party libraries utilized in embedded images are updated to prevent from known publicly available exploits. (e.g. Rompager [3] UPnP [4]

This list was created based upon community feedback discussed here [5]

  • Angr - [6]
  • Firmadyne [7]
  • Firmwalker [8]
  • Binary Analysis [9]
  • Flaw Finder [10]
  • IDA Pro (supports ARM / MIPS)
  • Radare2 [11]
  • GDB
  • Binwalk [12]
  • Firmware-mod-toolkit [13]
  • Capstone framework [14]
  • Shikra [15]
  • JTagulator [16]
  • UART cables
  • JTAG Adapters (JLINK)
  • BusPirate
  • BusBlaster
  • CPLDs (in lieu of FPGAs)
  • Oscilloscopes
  • Multimeter (Ammeter, Voltmeter, etc)
  • Logic Analyzers for SPI [17]
  • OpenOCD
  • GreatFET [18]

2016-2017 Roadmap

  • Curate a list of embedded secure coding best practices.
  • Create a Top 10 Embedded Application Security list.
  • Participate in PR-related activities to involve the embedded community at large.

Feel free to join the mailing list and contact the Project leader if you feel you can contribute.