CVE-2025-48751Уязвимость в пакете process_lock версии 0.1.0 для Rust позволяет возникновению гонок данных при разблокировке. Проблема заключается в том, что функция unlock не отмечена как unsafe, что может привести к гонкам данных при неожиданной разблокировке пользователем. Для подробной информации можно обратиться к документации lock-api [1]. Пример потенциального кода для воспроизведения проблемы:
```rust
#[deny(unsafe_code)]
use std::sync::Arc;
use process_lock::*;
use std::thread;
use std::time::Duration;
fn main() {
let mut s1 = Arc::new(ProcessLock::new("test".parse().unwrap(), None).unwrap());
let mut s2 = s1.clone();
let h = std::thread::spawn(move || {
if let Ok(mut guard) = s2.lock() {
thread::sleep(Duration::from_secs(1));
// data race 1
}
});
thread::sleep(Duration::from_secs(1));
if let Ok(_) = s1.unlock(){
if let Ok(guard2) = s1.lock(){
println!("data races");
// data race 2
}
}
h.join().unwrap();
}
```
Источники:
- [1] https://github.com/tickbh/ProcessLock/issues/1
- [2] https://crates.io/crates/process_lock