Files
IronStorage/crates/storage/tests/ssh_release_audit.rs
T
hugo 180851087b
Dependency security audit / rustsec (push) Failing after 22s
Share the platform-neutral Rust mobile contract (#91)
2026-10-08 13:25:09 +02:00

66 lines
3.1 KiB
Rust

const WORKSPACE: &str = include_str!("../../../Cargo.toml");
const STORAGE_MANIFEST: &str = include_str!("../Cargo.toml");
const APPLE_MANIFEST: &str = include_str!("../../apple/Cargo.toml");
const ANDROID_MANIFEST: &str = include_str!("../../android/Cargo.toml");
const MOBILE_MANIFEST: &str = include_str!("../../mobile-bridge/Cargo.toml");
const CLI_MANIFEST: &str = include_str!("../../../apps/cli/Cargo.toml");
const TUI_MANIFEST: &str = include_str!("../../../apps/tui/Cargo.toml");
const DESKTOP_MANIFEST: &str = include_str!("../../../apps/desktop/Cargo.toml");
const SSH_SOURCE: &str = include_str!("../src/ssh.rs");
const GIT_SOURCE: &str = include_str!("../src/git.rs");
const AUDIT: &str = include_str!("../../../docs/ssh-transport-audit.md");
const AUDIT_WORKFLOW: &str = include_str!("../../../.gitea/workflows/security-audit.yml");
#[test]
fn release_feature_and_advisory_boundaries_stay_explicit() {
assert!(WORKSPACE.contains(
"russh = { version = \"=0.63.1\", default-features = false, features = [\"ring\", \"rsa\"] }"
));
assert!(STORAGE_MANIFEST.contains("ssh = [\"dep:russh\", \"dep:tokio\"]"));
for manifest in [CLI_MANIFEST, TUI_MANIFEST, DESKTOP_MANIFEST] {
assert!(manifest.contains("features = [\"ssh\"]"));
}
assert!(MOBILE_MANIFEST.contains("default-features = false, features = [\"full\"]"));
assert!(
APPLE_MANIFEST.contains(
"ironstorage-mobile = { path = \"../mobile-bridge\", features = [\"watch\"] }"
)
);
assert!(ANDROID_MANIFEST.contains("ironstorage-mobile = { path = \"../mobile-bridge\" }"));
for manifest in [APPLE_MANIFEST, ANDROID_MANIFEST, MOBILE_MANIFEST] {
assert!(!manifest.contains("features = [\"ssh\"]"));
}
assert!(AUDIT_WORKFLOW.contains("tool: rust@1.92.0,cargo-audit@0.22.2"));
assert!(AUDIT_WORKFLOW.contains("fallback: none"));
assert!(!AUDIT_WORKFLOW.contains("cargo install"));
assert!(AUDIT_WORKFLOW.contains("run: cargo-audit audit --ignore RUSTSEC-2023-0071"));
assert!(AUDIT.contains("RUSTSEC-2023-0071"));
}
#[test]
fn production_ssh_transport_has_no_process_unsafe_or_proxy_escape_hatch() {
let process_command = ["process", "::Command"].concat();
let command_constructor = ["Command", "::new("].concat();
let unsafe_block = ["unsafe", " {"].concat();
for (name, source) in [("ssh.rs", SSH_SOURCE), ("git.rs", GIT_SOURCE)] {
let production = source.split("#[cfg(test)]").next().unwrap_or(source);
for forbidden in [
process_command.as_str(),
command_constructor.as_str(),
unsafe_block.as_str(),
"ProxyCommand",
"proxy_command",
"russh_config",
] {
assert!(
!production.contains(forbidden),
"{name} contains forbidden production token {forbidden}"
);
}
}
assert!(SSH_SOURCE.contains("check_server_key"));
assert!(SSH_SOURCE.contains("verify_known_host"));
assert!(SSH_SOURCE.contains("MAX_SSH_DIAGNOSTIC_BYTES"));
assert!(SSH_SOURCE.contains("MAX_CHANNEL_CHUNK"));
}