Files
uWebSockets/fuzzing
2020-08-14 17:40:54 +02:00
..
2020-08-09 23:10:45 +02:00
2019-06-09 09:45:30 +02:00
2019-06-14 21:56:06 +02:00
2020-08-06 17:07:19 +02:00
2020-08-10 18:19:01 +02:00
2020-08-07 17:24:12 +02:00
2020-06-27 02:19:29 +02:00
2020-06-27 02:19:29 +02:00

Fuzz-testing of various parsers and mocked examples

A secure web server must be capable of receiving mass amount of malicious input without misbehaving or performing illegal actions, such as stepping outside of a memory block or otherwise spilling the beans.

Continuous fuzzing under various sanitizers is done as part of the Google OSS-Fuzz project:

  • UndefinedBehaviorSanitizer
  • AddressSanitizer
  • MemorySanitizer

Currently the following parts are individually fuzzed:

  • WebSocket handshake generator
  • WebSocket message parser
  • WebSocket extensions parser & negotiator
  • WebSocket permessage-deflate compression/inflation helper
  • Http parser
  • Http method/url router
  • Pub/sub "topic tree"

While entire (mocked) examples are fuzzed:

  • HelloWorld
  • EchoServer
  • BroadcastingEchoServer

Fuzzing at the syscall level is done using libEpollFuzzer for:

  • EchoServer

No defects or issues are left unfixed, covered up or otherwise neglected. In fact we cannot cover up security issues as OSS-Fuzz automatically and publicly reports security issues as they happen.

Here is the list of public issues (issues are kept private for 90 days or until fixed): https://bugs.chromium.org/p/oss-fuzz/issues/list?q=label%3AProj-uwebsockets&can=1

Currently we are at 99.5% function coverage, ~90% line coverage and OSS-Fuzz is reporting zero issues in our codebase whatsoever. The goal is to approach 100% total coverage.

Security rewards

Google have sent us thousands of USD for the integration with OSS-Fuzz - we continue working on bettering the testing with every new release.