Created: January 27, 2022 10:48 AM
1. CVE-2022-21658(Rust race condition 취약점)
Reference: https://blog.rust-lang.org/2022/01/20/Rust-1.58.1.html
Rust 1.0.0~1.58.0에서 발생하는 취약점으로, std::fs::remove_dir_all
함수의 race condition
을 이용하여 권한이 없는 사용자가 파일 및 디렉터리를 삭제할 수 있는 취약점이다.
https://github.com/rust-lang/rust/commit/5ab67bff1e2230217ce133165605f8dc0d588178
pub fn remove_dir_all(path: &Path) -> io::Result<()> {
let filetype = lstat(path)?.file_type();
if filetype.is_symlink() {
// On Windows symlinks to files and directories are removed differently.
// rmdir only deletes dir symlinks and junctions, not file symlinks.
rmdir(path)
} else {
remove_dir_all_recursive(path)
}
}
패치 이전의 함수이다.
해당 취약점은 1.58.1 에서 패치되었다. 삭제하려는 파일 or 디렉토리가 심볼릭 링크인지 확인하고, 그렇지 않으면 디렉토리를 재귀적으로 삭제한다. 해당 취약점에 대한 보호 기능이 있지만 표준 라이브러리에서 제대로 구현되지 않아 발생한 취약점이다.
is_symlink()
를 호출하고, 실제 삭제를 하는 rmdir(path)
사이에서 race condition이 발생할 수 있다.
'깔짝할짝' 카테고리의 다른 글
2022-02-04 Fri (0) | 2022.02.04 |
---|---|
2022-02-03 Thur (0) | 2022.02.03 |
2022-01-26 Wed (0) | 2022.01.26 |
2022-01-25 Tue (0) | 2022.01.25 |
2022-01-24 Mon (0) | 2022.01.24 |