
يوضح CVE-2026-21012، وهو خلل في إلغاء تسلسل البيانات في مكتبة serde بلغة Rust، حيث يمكن لـ JSON غير الموثوق أن يُطلق متغيرات enum غير مقصودة وإجراءات غير مصرح بها.
// 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!
}
تطبيق Rust يستخدم serde لإلغاء تسلسل JSON غير موثوق إلى تعداد دون التحقق من أن المستدعي مخوَّل لهذا المتغير. يمكن للمهاجم حقن متغير تعداد مختلف (مثل DeleteUser) والتسبب في إجراءات غير مقصودة.
قم بترجمة وتشغيل برنامج Rust:
cargo add serde serde_json
rustc serde_vuln.rs
./serde_vuln
يقوم البرنامج بتنفيذ متغير DeleteUser دون تصريح.