Loading...
Loading...
Assists developers with understanding Tauri application lifecycle security threats spanning development, build, distribution, and runtime phases, including threat mitigation strategies and security best practices.
npx skill4agent add dchuk/claude-code-tauri-skills understanding-tauri-lifecycle-security# Scan Rust dependencies for vulnerabilities
cargo audit
# Scan npm dependencies
npm audit
# Advanced supply chain analysis
cargo vet
cargo crev
cargo supply-chainrustcnodejs# Cargo.toml - Pin to specific commit hash
[dependencies]
critical-lib = { git = "https://github.com/org/critical-lib", rev = "abc123def456" }Attacker on same network -> Intercepts dev server traffic -> Injects malicious frontend code| Practice | Purpose |
|---|---|
| Avoid admin accounts for coding | Limit blast radius of compromise |
| Block secrets from version control | Prevent credential leaks |
| Use hardware security tokens | Minimize compromise impact |
| Minimize installed applications | Reduce attack surface |
# Enable commit signing
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_KEY_ID| Platform | Signing Requirement |
|---|---|
| macOS | Apple Developer Certificate + Notarization |
| Windows | Code Signing Certificate (EV recommended) |
| Linux | GPG signing for packages |
# Use hardware tokens for signing credentials
# Prevents compromised build systems from leaking keys
# Example: Using YubiKey for code signing
pkcs11-tool --module /usr/lib/opensc-pkcs11.so --signManifest Server Compromise -> Malicious update metadata -> Users download tampered binaries
Build Server Compromise -> Injected malware at build time -> Signed malicious releases
Binary Host Compromise -> Replaced binaries -> Users download malicious versions +------------------+
| Untrusted |
| Frontend Code |
+--------+---------+
|
+--------v---------+
| CSP | <- Restricts communication types
+--------+---------+
|
+--------v---------+
| Capabilities | <- Controls API access
+--------+---------+
|
+--------v---------+
| Permissions | <- Fine-grained command control
+--------+---------+
|
+--------v---------+
| Scopes | <- Resource-level restrictions
+--------+---------+
|
+--------v---------+
| Rust Backend | <- Trusted system access
+------------------+tauri.conf.json{
"app": {
"security": {
"csp": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'"
}
}
}'unsafe-eval''unsafe-inline'src-tauri/capabilities/main.json{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": [
"core:path:default",
"core:window:allow-set-title",
"fs:read-files"
]
}# src-tauri/permissions/fs-restricted.toml
[[permission]]
identifier = "fs-home-restricted"
description = "Allow home directory access except secrets"
commands.allow = ["read_file", "write_file"]
[[scope.allow]]
path = "$HOME/*"
[[scope.deny]]
path = "$HOME/.ssh/*"
[[scope.deny]]
path = "$HOME/.gnupg/*"
[[scope.deny]]
path = "$HOME/.aws/*"{
"app": {
"security": {
"freezePrototype": true
}
}
}{
"identifier": "remote-api-capability",
"remote": {
"urls": ["https://*.yourdomain.com"]
},
"permissions": ["limited-api-access"]
}| Phase | Threat | Mitigation |
|---|---|---|
| Development | Dependency vulnerabilities | |
| Development | Dev server exposure | Trusted networks, mTLS |
| Development | Credential leaks | Hardware tokens, gitignore secrets |
| Build | CI/CD compromise | Trusted providers, self-hosted options |
| Build | Unsigned binaries | Platform signing, hardware key storage |
| Distribution | Manifest tampering | HTTPS, certificate pinning |
| Distribution | Binary replacement | Checksums, signed manifests |
| Runtime | XSS/injection | CSP, input validation |
| Runtime | Privilege escalation | Capabilities, permissions, scopes |
| Runtime | Prototype pollution | |
{
"app": {
"security": {
"csp": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'",
"freezePrototype": true,
"capabilities": ["main-capability"],
"dangerousDisableAssetCspModification": false,
"assetProtocol": {
"enable": false,
"scope": []
}
}
}
}src-tauri/
├── capabilities/
│ ├── main.json # Main window capabilities
│ └── settings.json # Settings window capabilities
├── permissions/
│ └── custom-scope.toml # Custom permission scopes
└── tauri.conf.json