MCPcopy Index your code
hub / github.com/crabnebula-dev/tauri-fuzz

github.com/crabnebula-dev/tauri-fuzz @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
218 symbols 494 edges 64 files 66 documented · 30% updated 17mo ago★ 582 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Tauri-fuzz

This is a runtime environment to use when fuzzing. This runtime is specialized in detecting security boundaries violations in applications.

The project

What is a fuzzer

A fuzzer is an automatic testing tool commonly used for software. The goal is to test your software by executing it with a large set of pseudo-randomly generated inputs.

What's special about this fuzz runtime

Most fuzzers are dedicated to find memory bugs in C libraries. In our case we focus on security issues in applications. Specifically we check that applications can't break their assumed security boundaries.

Fuzzing applications security boundaries

Examples of cases where the runtime is relevant

In general the runtime is useful to check the security boundaries of an application:

For example:

  • an app should have no or limited access to the file system
  • an app has access to the shell but we want to make sure that it cannot be abused
  • an app should not make any remote connection except to specified servers (TODO)

Summary

  • Specializes in testing applications security boundaries
  • Target code is fuzzed against a security policy
  • Several default policies are provided
  • Users can provide custom policies
  • Cross-platform fuzzing
  • Built on top of and Frida
  • Coupled to LibAFL for state of the art fuzzing
  • Portable on Windows, MacOS, Android, iOS (TODO)

Documentation

Technical documentation, research and thoughts process that happened during the development of this project are documented in the mdbook in docs.

Requires mdbook and mdbook-toc

$ cargo install mdbook
$ cargo install mdbook-toc

Repository Architecture

  • crates/tauri-fuzz-cli a cli to initialize fuzzing in a project
  • crates/tauri-fuzz the runtime used while fuzzing
  • crates/tauri-fuzz-policies the security policies and the policy engine that will be used while fuzzing
  • docs/ technical information and thoughts process behind the project
  • examples/ examples to run the fuzzer on
  • tests/ tests

Supported platforms

Platform Can theoretically work Tested on
Linux
Windows
MacOS
Android
iOS

Extension points exported contracts — how you extend this code

FromRandomBytes (Interface)
Construct a type from arbitrary random bytes. [2 implementers]
crates/tauri-fuzz/src/tauri/from_random_bytes.rs

Core symbols most depended-on inside this repo

fuzz_command_with_arg
called by 36
tests/fuzz-mini-app/src/utils.rs
no_policy
called by 12
crates/tauri-fuzz-policies/src/policies.rs
insert
called by 11
crates/tauri-fuzz/src/tauri/utils.rs
no_file_access
called by 8
crates/tauri-fuzz-policies/src/policies/filesystem.rs
create_invoke_request
called by 8
crates/tauri-fuzz/src/tauri/utils.rs
block_on_child_process_error_status
called by 6
crates/tauri-fuzz-policies/src/policies/external_process.rs
block_on_entry
called by 5
crates/tauri-fuzz-policies/src/policies.rs
invoke_command_minimal
called by 5
crates/tauri-fuzz/src/tauri/utils.rs

Shape

Function 181
Method 22
Class 10
Enum 4
Interface 1

Languages

Rust99%
TypeScript1%

Modules by API surface

crates/tauri-fuzz/src/runtime/func_call_listener_rt.rs24 symbols
tests/fuzz-mini-app/tests/mini_app_commands_tests/ls_with_rust_command_tests.rs20 symbols
crates/tauri-fuzz/src/tauri/utils.rs13 symbols
crates/tauri-fuzz-policies/src/policies/external_process.rs12 symbols
crates/tauri-fuzz-policies/src/engine.rs11 symbols
tests/fuzz-mini-app/tests/mini_app_commands_tests/write_foo_file_tests.rs9 symbols
tests/fuzz-mini-app/src/utils.rs9 symbols
crates/tauri-fuzz-policies/src/policies/filesystem.rs9 symbols
tests/fuzz-mini-app/tests/mini_app_commands_tests/read_foo_file_tests.rs6 symbols
tests/fuzz-mini-app/tests/mini_app_commands_tests/fs_readFile_tests.rs6 symbols
crates/tauri-fuzz-cli/src/main.rs6 symbols
examples/mini-app/src-tauri/src/tauri_commands/external_process.rs5 symbols

Datastores touched

(mysql)Database · 1 repos
SchoolDatabaseDatabase · 1 repos

For agents

$ claude mcp add tauri-fuzz \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact