
Demonstriert CVE-2026-21012, eine Schwachstelle in der Rust-serde-Deserialisierung, bei der nicht vertrauenswürdiges JSON unbeabsichtigte Enum-Varianten und unbefugte Aktionen auslösen kann.
// serde_vuln.rs - Deserializes an enum from user JSON without validation
use serde::{Deserialize, Serialize};
use serde_json;
#[derive(Deserialize, Debug)]
enum AdminAction {
ReadLogs,
DeleteUser(String),
CreateUser(String),
}
#[derive(Deserialize, Debug)]
struct Command {
action: AdminAction,
}
fn main() {
let user_input = r#"{"action": {"DeleteUser": "admin"}}"#;
let cmd: Command = serde_json::from_str(user_input).unwrap();
println!("Executing: {:?}", cmd.action);
// Could delete admin if permissions not checked!
}
Eine Rust-Anwendung, die serde verwendet, deserialisiert nicht vertrauenswürdiges JSON in eine Enum, ohne zu validieren, dass der Aufrufer für die Variante autorisiert ist. Ein Angreifer kann eine andere Enum-Variante (z. B. DeleteUser) injizieren und unbeabsichtigte Aktionen auslösen.
Kompilieren und Ausführen des Rust-Programms:
cargo add serde serde_json
rustc serde_vuln.rs
./serde_vuln
Es führt die DeleteUser-Variante ohne Autorisierung aus.