mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-13 15:14:08 +00:00
dep: update nix dependency
To fix CVE-2021-45707 that affects nix < 0.20.2. Fixes: #4929 Signed-off-by: Peng Tao <bergwolf@hyper.sh>
This commit is contained in:
parent
b2c6ff0b05
commit
1a396a1784
28
src/agent/Cargo.lock
generated
28
src/agent/Cargo.lock
generated
@ -635,21 +635,20 @@ checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libseccomp"
|
name = "libseccomp"
|
||||||
version = "0.1.3"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "36ad71a5b66ceef3acfe6a3178b29b4da063f8bcb2c36dab666d52a7a9cfdb86"
|
checksum = "49bda1fbf25c42ac8942ff7df1eb6172a3bc36299e84be0dba8c888a7db68c80"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"libseccomp-sys",
|
"libseccomp-sys",
|
||||||
"nix 0.17.0",
|
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libseccomp-sys"
|
name = "libseccomp-sys"
|
||||||
version = "0.1.1"
|
version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "539912de229a4fc16e507e8df12a394038a524a5b5b6c92045ad344472aac475"
|
checksum = "9a7cbbd4ad467251987c6e5b47d53b11a5a05add08f2447a9e2d70aef1e0d138"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
@ -797,19 +796,6 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "nix"
|
|
||||||
version = "0.17.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"cc",
|
|
||||||
"cfg-if 0.1.10",
|
|
||||||
"libc",
|
|
||||||
"void",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.22.3"
|
version = "0.22.3"
|
||||||
@ -1905,12 +1891,6 @@ version = "0.9.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "void"
|
|
||||||
version = "1.0.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vsock"
|
name = "vsock"
|
||||||
version = "0.2.6"
|
version = "0.2.6"
|
||||||
|
@ -12,7 +12,7 @@ lazy_static = "1.3.0"
|
|||||||
ttrpc = { version = "0.5.0", features = ["async", "protobuf-codec"], default-features = false }
|
ttrpc = { version = "0.5.0", features = ["async", "protobuf-codec"], default-features = false }
|
||||||
protobuf = "=2.14.0"
|
protobuf = "=2.14.0"
|
||||||
libc = "0.2.58"
|
libc = "0.2.58"
|
||||||
nix = "0.23.0"
|
nix = "0.23"
|
||||||
capctl = "0.2.0"
|
capctl = "0.2.0"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
scan_fmt = "0.2.3"
|
scan_fmt = "0.2.3"
|
||||||
|
@ -31,7 +31,7 @@ tokio = { version = "1.2.0", features = ["sync", "io-util", "process", "time", "
|
|||||||
futures = "0.3.17"
|
futures = "0.3.17"
|
||||||
async-trait = "0.1.31"
|
async-trait = "0.1.31"
|
||||||
inotify = "0.9.2"
|
inotify = "0.9.2"
|
||||||
libseccomp = { version = "0.1.3", optional = true }
|
libseccomp = { version = "0.2.3", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serial_test = "0.5.0"
|
serial_test = "0.5.0"
|
||||||
|
@ -26,12 +26,15 @@ fn get_rule_conditions(args: &[LinuxSeccompArg]) -> Result<Vec<ScmpArgCompare>>
|
|||||||
return Err(anyhow!("seccomp opreator is required"));
|
return Err(anyhow!("seccomp opreator is required"));
|
||||||
}
|
}
|
||||||
|
|
||||||
let cond = ScmpArgCompare::new(
|
let mut op = ScmpCompareOp::from_str(&arg.op)?;
|
||||||
arg.index,
|
let mut value = arg.value;
|
||||||
ScmpCompareOp::from_str(&arg.op)?,
|
// For SCMP_CMP_MASKED_EQ, arg.value is the mask and arg.value_two is the value
|
||||||
arg.value,
|
if op == ScmpCompareOp::MaskedEqual(u64::default()) {
|
||||||
Some(arg.value_two),
|
op = ScmpCompareOp::MaskedEqual(arg.value);
|
||||||
);
|
value = arg.value_two;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cond = ScmpArgCompare::new(arg.index, op, value);
|
||||||
|
|
||||||
conditions.push(cond);
|
conditions.push(cond);
|
||||||
}
|
}
|
||||||
@ -44,7 +47,7 @@ pub fn get_unknown_syscalls(scmp: &LinuxSeccomp) -> Option<Vec<String>> {
|
|||||||
|
|
||||||
for syscall in &scmp.syscalls {
|
for syscall in &scmp.syscalls {
|
||||||
for name in &syscall.names {
|
for name in &syscall.names {
|
||||||
if get_syscall_from_name(name, None).is_err() {
|
if ScmpSyscall::from_name(name).is_err() {
|
||||||
unknown_syscalls.push(name.to_string());
|
unknown_syscalls.push(name.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -60,7 +63,7 @@ pub fn get_unknown_syscalls(scmp: &LinuxSeccomp) -> Option<Vec<String>> {
|
|||||||
// init_seccomp creates a seccomp filter and loads it for the current process
|
// init_seccomp creates a seccomp filter and loads it for the current process
|
||||||
// including all the child processes.
|
// including all the child processes.
|
||||||
pub fn init_seccomp(scmp: &LinuxSeccomp) -> Result<()> {
|
pub fn init_seccomp(scmp: &LinuxSeccomp) -> Result<()> {
|
||||||
let def_action = ScmpAction::from_str(scmp.default_action.as_str(), Some(libc::EPERM as u32))?;
|
let def_action = ScmpAction::from_str(scmp.default_action.as_str(), Some(libc::EPERM as i32))?;
|
||||||
|
|
||||||
// Create a new filter context
|
// Create a new filter context
|
||||||
let mut filter = ScmpFilterContext::new_filter(def_action)?;
|
let mut filter = ScmpFilterContext::new_filter(def_action)?;
|
||||||
@ -72,7 +75,7 @@ pub fn init_seccomp(scmp: &LinuxSeccomp) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Unset no new privileges bit
|
// Unset no new privileges bit
|
||||||
filter.set_no_new_privs_bit(false)?;
|
filter.set_ctl_nnp(false)?;
|
||||||
|
|
||||||
// Add a rule for each system call
|
// Add a rule for each system call
|
||||||
for syscall in &scmp.syscalls {
|
for syscall in &scmp.syscalls {
|
||||||
@ -80,13 +83,13 @@ pub fn init_seccomp(scmp: &LinuxSeccomp) -> Result<()> {
|
|||||||
return Err(anyhow!("syscall name is required"));
|
return Err(anyhow!("syscall name is required"));
|
||||||
}
|
}
|
||||||
|
|
||||||
let action = ScmpAction::from_str(&syscall.action, Some(syscall.errno_ret))?;
|
let action = ScmpAction::from_str(&syscall.action, Some(syscall.errno_ret as i32))?;
|
||||||
if action == def_action {
|
if action == def_action {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for name in &syscall.names {
|
for name in &syscall.names {
|
||||||
let syscall_num = match get_syscall_from_name(name, None) {
|
let syscall_num = match ScmpSyscall::from_name(name) {
|
||||||
Ok(num) => num,
|
Ok(num) => num,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
// If we cannot resolve the given system call, we assume it is not supported
|
// If we cannot resolve the given system call, we assume it is not supported
|
||||||
@ -96,10 +99,10 @@ pub fn init_seccomp(scmp: &LinuxSeccomp) -> Result<()> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if syscall.args.is_empty() {
|
if syscall.args.is_empty() {
|
||||||
filter.add_rule(action, syscall_num, None)?;
|
filter.add_rule(action, syscall_num)?;
|
||||||
} else {
|
} else {
|
||||||
let conditions = get_rule_conditions(&syscall.args)?;
|
let conditions = get_rule_conditions(&syscall.args)?;
|
||||||
filter.add_rule(action, syscall_num, Some(&conditions))?;
|
filter.add_rule_conditional(action, syscall_num, &conditions)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user