From 636143dced7818fb096c0157760929c6742d2358 Mon Sep 17 00:00:00 2001
From: Jarrett Tierney <jmt@amazon.com>
Date: Mon, 18 Mar 2024 14:34:38 -0700
Subject: [PATCH] sources: bump to aws-sdk v1

---
 sources/Cargo.lock                            | 765 ++++++++----------
 sources/api/apiclient/Cargo.toml              |   8 +-
 sources/api/apiclient/src/exec/terminal.rs    |   7 +-
 sources/api/apiserver/Cargo.toml              |   6 +-
 .../api/apiserver/src/server/exec/child.rs    |   9 +-
 sources/api/bootstrap-containers/Cargo.toml   |   4 +-
 sources/api/bootstrap-containers/src/main.rs  |   6 +-
 sources/api/certdog/Cargo.toml                |   6 +-
 sources/api/certdog/src/main.rs               |  16 +-
 sources/api/corndog/Cargo.toml                |   4 +-
 sources/api/datastore/Cargo.toml              |   4 +-
 sources/api/early-boot-config/Cargo.toml      |   6 +-
 sources/api/ecs-settings-applier/Cargo.toml   |   4 +-
 sources/api/host-containers/Cargo.toml        |   4 +-
 sources/api/host-containers/src/main.rs       |   6 +-
 .../migration/migration-helpers/Cargo.toml    |   2 +-
 .../kubelet-cpu-manager-state/Cargo.toml      |   2 +-
 .../node-taints-representation/Cargo.toml     |   4 +-
 sources/api/migration/migrator/Cargo.toml     |   6 +-
 sources/api/netdog/Cargo.toml                 |   8 +-
 sources/api/pluto/Cargo.toml                  |  18 +-
 sources/api/pluto/src/aws.rs                  |  12 +-
 sources/api/pluto/src/ec2.rs                  |   4 +-
 sources/api/pluto/src/eks.rs                  |   4 +-
 sources/api/pluto/src/hyper_proxy/mod.rs      |   2 +-
 sources/api/pluto/src/proxy.rs                |   7 +-
 sources/api/prairiedog/Cargo.toml             |   8 +-
 sources/api/schnauzer/Cargo.toml              |   8 +-
 sources/api/schnauzer/src/helpers.rs          |   9 +-
 sources/api/settings-committer/Cargo.toml     |   2 +-
 sources/api/shibaken/Cargo.toml               |   6 +-
 sources/api/shibaken/src/admin_userdata.rs    |   3 +-
 sources/api/static-pods/Cargo.toml            |   4 +-
 sources/api/static-pods/src/static_pods.rs    |   6 +-
 sources/api/storewolf/Cargo.toml              |   8 +-
 sources/api/storewolf/merge-toml/Cargo.toml   |   4 +-
 sources/api/storewolf/merge-toml/src/lib.rs   |  14 +-
 sources/api/sundog/Cargo.toml                 |   2 +-
 sources/api/thar-be-settings/Cargo.toml       |   4 +-
 sources/api/thar-be-updates/Cargo.toml        |   8 +-
 sources/bottlerocket-release/Cargo.toml       |   2 +-
 sources/bottlerocket-variant/Cargo.toml       |   2 +-
 sources/cfsignal/Cargo.toml                   |  10 +-
 sources/cfsignal/src/cloudformation.rs        |   3 +-
 sources/clarify.toml                          |   2 +-
 sources/driverdog/Cargo.toml                  |   4 +-
 sources/driverdog/src/main.rs                 |   7 +-
 sources/generate-readme/Cargo.toml            |   2 +-
 sources/ghostdog/Cargo.toml                   |   2 +-
 sources/imdsclient/Cargo.toml                 |   2 +-
 sources/logdog/Cargo.toml                     |   2 +-
 sources/metricdog/Cargo.toml                  |   4 +-
 sources/models/Cargo.toml                     |   2 +-
 sources/models/modeled-types/Cargo.toml       |   6 +-
 sources/models/modeled-types/src/shared.rs    |  14 +-
 sources/parse-datetime/Cargo.toml             |   2 +-
 sources/parse-datetime/src/lib.rs             |   6 +-
 sources/shimpei/Cargo.toml                    |   4 +-
 sources/updater/block-party/Cargo.toml        |   2 +-
 sources/updater/signpost/Cargo.toml           |   2 +-
 sources/updater/update_metadata/Cargo.toml    |   4 +-
 sources/updater/update_metadata/src/lib.rs    |  78 +-
 sources/updater/updog/Cargo.toml              |   6 +-
 sources/updater/updog/src/main.rs             |   8 +-
 sources/xfscli/Cargo.toml                     |   2 +-
 65 files changed, 577 insertions(+), 611 deletions(-)

diff --git a/sources/Cargo.lock b/sources/Cargo.lock
index eee9ce43222..8b690bd5858 100644
--- a/sources/Cargo.lock
+++ b/sources/Cargo.lock
@@ -55,14 +55,14 @@ dependencies = [
  "actix-service",
  "actix-utils",
  "ahash",
- "base64 0.21.7",
+ "base64",
  "bitflags 2.4.2",
  "bytes",
  "bytestring",
  "derive_more",
  "encoding_rs",
  "futures-core",
- "http",
+ "http 0.2.12",
  "httparse",
  "httpdate",
  "itoa",
@@ -96,7 +96,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511"
 dependencies = [
  "bytestring",
- "http",
+ "http 0.2.12",
  "regex",
  "serde",
  "tracing",
@@ -347,13 +347,13 @@ checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
 name = "apiclient"
 version = "0.1.0"
 dependencies = [
- "base64 0.21.7",
+ "base64",
  "constants",
  "datastore",
  "futures",
  "futures-channel",
  "generate-readme",
- "http",
+ "http 0.2.12",
  "httparse",
  "hyper",
  "hyper-unix-connector",
@@ -368,10 +368,10 @@ dependencies = [
  "serde_json",
  "signal-hook",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
  "tokio-tungstenite",
- "toml 0.5.11",
+ "toml",
  "unindent",
  "url",
 ]
@@ -389,7 +389,7 @@ dependencies = [
  "datastore",
  "fs2",
  "generate-readme",
- "http",
+ "http 0.2.12",
  "libc",
  "log",
  "maplit",
@@ -400,10 +400,10 @@ dependencies = [
  "serde",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "thar-be-updates",
  "tokio",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
@@ -563,30 +563,30 @@ dependencies = [
 
 [[package]]
 name = "aws-config"
-version = "0.55.3"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcdcf0d683fe9c23d32cf5b53c9918ea0a500375a9fb20109802552658e576c9"
+checksum = "4f4084d18094aec9f79d509f4cb6ccf6b613c5037e32f32e74312e52b836e366"
 dependencies = [
  "aws-credential-types",
- "aws-http",
+ "aws-runtime",
  "aws-sdk-sso",
+ "aws-sdk-ssooidc",
  "aws-sdk-sts",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "fastrand 1.9.0",
+ "fastrand",
  "hex",
- "http",
+ "http 0.2.12",
  "hyper",
- "ring 0.16.20",
+ "ring",
  "time",
  "tokio",
- "tower",
  "tracing",
  "zeroize",
 ]
@@ -628,212 +628,195 @@ dependencies = [
 
 [[package]]
 name = "aws-credential-types"
-version = "0.55.3"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fcdb2f7acbc076ff5ad05e7864bdb191ca70a6fd07668dc3a1a8bcd051de5ae"
+checksum = "fa8587ae17c8e967e4b05a62d495be2fb7701bec52a97f7acfe8a29f938384c8"
 dependencies = [
  "aws-smithy-async",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
- "fastrand 1.9.0",
- "tokio",
- "tracing",
  "zeroize",
 ]
 
 [[package]]
-name = "aws-endpoint"
-version = "0.55.3"
+name = "aws-runtime"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cce1c41a6cfaa726adee9ebb9a56fcd2bbfd8be49fd8a04c5e20fd968330b04"
-dependencies = [
- "aws-smithy-http",
- "aws-smithy-types",
- "aws-types",
- "http",
- "regex",
- "tracing",
-]
-
-[[package]]
-name = "aws-http"
-version = "0.55.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aadbc44e7a8f3e71c8b374e03ecd972869eb91dd2bc89ed018954a52ba84bc44"
+checksum = "b13dc54b4b49f8288532334bba8f87386a40571c47c37b1304979b556dc613c8"
 dependencies = [
  "aws-credential-types",
+ "aws-sigv4",
+ "aws-smithy-async",
  "aws-smithy-http",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "http",
+ "fastrand",
+ "http 0.2.12",
  "http-body",
- "lazy_static",
  "percent-encoding",
  "pin-project-lite",
  "tracing",
+ "uuid",
 ]
 
 [[package]]
 name = "aws-sdk-cloudformation"
-version = "0.28.0"
+version = "1.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f32bb66da99e2955ce49e346200cb14421784755a39c74fe2c043536b2d57ba"
+checksum = "48b5368d151955bebbaa9d6474f4bcdb249b489daa2ce6d3c28c44bdc4f51bc0"
 dependencies = [
  "aws-credential-types",
- "aws-endpoint",
- "aws-http",
- "aws-sig-auth",
+ "aws-runtime",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
  "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-smithy-xml",
  "aws-types",
- "bytes",
- "fastrand 1.9.0",
- "http",
- "regex",
- "tokio-stream",
- "tower",
+ "fastrand",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
 name = "aws-sdk-ec2"
-version = "0.28.0"
+version = "1.26.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eab2493c5857725eeafe12ec66ba4ce6feb3355e3af6828d9ef28d6152972a27"
+checksum = "80da37ed219637fbc1c3c114177258e2e4744093ccde5e1a52a5655e1a360fee"
 dependencies = [
  "aws-credential-types",
- "aws-endpoint",
- "aws-http",
- "aws-sig-auth",
+ "aws-runtime",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
  "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-smithy-xml",
  "aws-types",
- "bytes",
- "fastrand 1.9.0",
- "http",
- "regex",
- "tokio-stream",
- "tower",
+ "fastrand",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
 name = "aws-sdk-eks"
-version = "0.28.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11d42a83686679e8ce87f4b154ec4fa184c0b28ef24551a58a9c88fd88758e80"
+checksum = "1402cda535625da47f41c6b463af029eae4ec1ef87431222c7c6e017e923c96d"
 dependencies = [
  "aws-credential-types",
- "aws-endpoint",
- "aws-http",
- "aws-sig-auth",
+ "aws-runtime",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "fastrand 1.9.0",
- "http",
- "regex",
- "tokio-stream",
- "tower",
+ "fastrand",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
 name = "aws-sdk-sso"
-version = "0.28.0"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8b812340d86d4a766b2ca73f740dfd47a97c2dff0c06c8517a16d88241957e4"
+checksum = "c5cc34f5925899739a3f125bd3f7d37d081234a3df218feb9c9d337fd4c70e72"
 dependencies = [
  "aws-credential-types",
- "aws-endpoint",
- "aws-http",
- "aws-sig-auth",
+ "aws-runtime",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "http",
- "regex",
- "tokio-stream",
- "tower",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
-name = "aws-sdk-sts"
-version = "0.28.0"
+name = "aws-sdk-ssooidc"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "265fac131fbfc188e5c3d96652ea90ecc676a934e3174eaaee523c6cec040b3b"
+checksum = "7327cddd32b1a6f2aaeaadb1336b671a7975e96a999d3b1bcf5aa47932dc6ddb"
 dependencies = [
  "aws-credential-types",
- "aws-endpoint",
- "aws-http",
- "aws-sig-auth",
+ "aws-runtime",
  "aws-smithy-async",
- "aws-smithy-client",
  "aws-smithy-http",
- "aws-smithy-http-tower",
  "aws-smithy-json",
- "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
- "aws-smithy-xml",
  "aws-types",
  "bytes",
- "http",
- "regex",
- "tower",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
-name = "aws-sig-auth"
-version = "0.55.3"
+name = "aws-sdk-sts"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b94acb10af0c879ecd5c7bdf51cda6679a0a4f4643ce630905a77673bfa3c61"
+checksum = "6c11981cdb80e8e205e22beb6630a8bdec380a1256bd29efaab34aaebd07cfb9"
 dependencies = [
  "aws-credential-types",
- "aws-sigv4",
+ "aws-runtime",
+ "aws-smithy-async",
  "aws-smithy-http",
+ "aws-smithy-json",
+ "aws-smithy-query",
+ "aws-smithy-runtime",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "aws-smithy-xml",
  "aws-types",
- "http",
+ "http 0.2.12",
+ "once_cell",
+ "regex-lite",
  "tracing",
 ]
 
 [[package]]
 name = "aws-sigv4"
-version = "0.55.3"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d2ce6f507be68e968a33485ced670111d1cbad161ddbbab1e313c03d37d8f4c"
+checksum = "11d6f29688a4be9895c0ba8bef861ad0c0dac5c15e9618b9b7a6c233990fc263"
 dependencies = [
+ "aws-credential-types",
  "aws-smithy-http",
+ "aws-smithy-runtime-api",
+ "aws-smithy-types",
+ "bytes",
  "form_urlencoded",
  "hex",
  "hmac",
- "http",
+ "http 0.2.12",
+ "http 1.1.0",
  "once_cell",
  "percent-encoding",
- "regex",
  "sha2",
  "time",
  "tracing",
@@ -841,131 +824,139 @@ dependencies = [
 
 [[package]]
 name = "aws-smithy-async"
-version = "0.55.3"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13bda3996044c202d75b91afeb11a9afae9db9a721c6a7a427410018e286b880"
+checksum = "d26ea8fa03025b2face2b3038a63525a10891e3d8829901d502e5384a0d8cd46"
 dependencies = [
  "futures-util",
  "pin-project-lite",
  "tokio",
- "tokio-stream",
-]
-
-[[package]]
-name = "aws-smithy-client"
-version = "0.55.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a86aa6e21e86c4252ad6a0e3e74da9617295d8d6e374d552be7d3059c41cedd"
-dependencies = [
- "aws-smithy-async",
- "aws-smithy-http",
- "aws-smithy-http-tower",
- "aws-smithy-types",
- "bytes",
- "fastrand 1.9.0",
- "http",
- "http-body",
- "hyper",
- "hyper-rustls 0.23.2",
- "lazy_static",
- "pin-project-lite",
- "rustls 0.20.9",
- "tokio",
- "tower",
- "tracing",
 ]
 
 [[package]]
 name = "aws-smithy-http"
-version = "0.55.3"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b3b693869133551f135e1f2c77cb0b8277d9e3e17feaf2213f735857c4f0d28"
+checksum = "3f10fa66956f01540051b0aa7ad54574640f748f9839e843442d99b970d3aff9"
 dependencies = [
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
  "bytes",
  "bytes-utils",
  "futures-core",
- "http",
+ "http 0.2.12",
  "http-body",
- "hyper",
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
  "pin-utils",
- "tokio",
- "tokio-util",
  "tracing",
 ]
 
 [[package]]
-name = "aws-smithy-http-tower"
-version = "0.55.3"
+name = "aws-smithy-json"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ae4f6c5798a247fac98a867698197d9ac22643596dc3777f0c76b91917616b9"
+checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6"
 dependencies = [
- "aws-smithy-http",
  "aws-smithy-types",
- "bytes",
- "http",
- "http-body",
- "pin-project-lite",
- "tower",
- "tracing",
 ]
 
 [[package]]
-name = "aws-smithy-json"
-version = "0.55.3"
+name = "aws-smithy-query"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23f9f42fbfa96d095194a632fbac19f60077748eba536eb0b9fecc28659807f8"
+checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb"
 dependencies = [
  "aws-smithy-types",
+ "urlencoding",
 ]
 
 [[package]]
-name = "aws-smithy-query"
-version = "0.55.3"
+name = "aws-smithy-runtime"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98819eb0b04020a1c791903533b638534ae6c12e2aceda3e6e6fba015608d51d"
+checksum = "ec81002d883e5a7fd2bb063d6fb51c4999eb55d404f4fff3dd878bf4733b9f01"
 dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-http",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
- "urlencoding",
+ "bytes",
+ "fastrand",
+ "h2",
+ "http 0.2.12",
+ "http-body",
+ "hyper",
+ "hyper-rustls",
+ "once_cell",
+ "pin-project-lite",
+ "pin-utils",
+ "rustls",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "aws-smithy-runtime-api"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9acb931e0adaf5132de878f1398d83f8677f90ba70f01f65ff87f6d7244be1c5"
+dependencies = [
+ "aws-smithy-async",
+ "aws-smithy-types",
+ "bytes",
+ "http 0.2.12",
+ "http 1.1.0",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+ "zeroize",
 ]
 
 [[package]]
 name = "aws-smithy-types"
-version = "0.55.3"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16a3d0bf4f324f4ef9793b86a1701d9700fbcdbd12a846da45eed104c634c6e8"
+checksum = "abe14dceea1e70101d38fbf2a99e6a34159477c0fb95e68e05c66bd7ae4c3729"
 dependencies = [
  "base64-simd",
+ "bytes",
+ "bytes-utils",
+ "futures-core",
+ "http 0.2.12",
+ "http-body",
  "itoa",
  "num-integer",
+ "pin-project-lite",
+ "pin-utils",
  "ryu",
+ "serde",
  "time",
+ "tokio",
+ "tokio-util",
 ]
 
 [[package]]
 name = "aws-smithy-xml"
-version = "0.55.3"
+version = "0.60.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1b9d12875731bd07e767be7baad95700c3137b56730ec9ddeedb52a5e5ca63b"
+checksum = "872c68cf019c0e4afc5de7753c4f7288ce4b71663212771bf5e4542eb9346ca9"
 dependencies = [
  "xmlparser",
 ]
 
 [[package]]
 name = "aws-types"
-version = "0.55.3"
+version = "1.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dd209616cc8d7bfb82f87811a5c655dc97537f592689b18743bddf5dc5c4829"
+checksum = "0dbf2f3da841a8930f159163175cf6a3d16ddde517c1b0fba7aa776822800f40"
 dependencies = [
  "aws-credential-types",
  "aws-smithy-async",
- "aws-smithy-client",
- "aws-smithy-http",
+ "aws-smithy-runtime-api",
  "aws-smithy-types",
- "http",
+ "http 0.2.12",
  "rustc_version",
  "tracing",
 ]
@@ -985,12 +976,6 @@ dependencies = [
  "rustc-demangle",
 ]
 
-[[package]]
-name = "base64"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-
 [[package]]
 name = "base64"
 version = "0.21.7"
@@ -1047,7 +1032,7 @@ dependencies = [
 name = "block-party"
 version = "0.1.0"
 dependencies = [
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -1070,7 +1055,7 @@ name = "bootstrap-containers"
 version = "0.1.0"
 dependencies = [
  "apiclient",
- "base64 0.13.1",
+ "base64",
  "constants",
  "datastore",
  "generate-readme",
@@ -1078,7 +1063,7 @@ dependencies = [
  "models",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -1099,7 +1084,7 @@ dependencies = [
  "log",
  "semver",
  "serde",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -1111,7 +1096,7 @@ dependencies = [
  "bottlerocket-template-helper",
  "serde",
  "serde_json",
- "snafu",
+ "snafu 0.7.5",
  "tracing",
 ]
 
@@ -1133,7 +1118,7 @@ version = "0.1.0"
 dependencies = [
  "generate-readme",
  "serde",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -1196,9 +1181,9 @@ dependencies = [
 
 [[package]]
 name = "cached"
-version = "0.46.1"
+version = "0.49.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7c8c50262271cdf5abc979a5f76515c234e764fa025d1ba4862c0f0bcda0e95"
+checksum = "f251fd1e72720ca07bf5d8e310f54a193fd053479a1f6342c6663ee4fa01cf96"
 dependencies = [
  "ahash",
  "async-trait",
@@ -1214,9 +1199,9 @@ dependencies = [
 
 [[package]]
 name = "cached_proc_macro"
-version = "0.18.1"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f"
+checksum = "ad9f16c0d84de31a2ab7fdf5f7783c14631f7075cf464eb3bb43119f61c9cb2a"
 dependencies = [
  "darling 0.14.4",
  "proc-macro2",
@@ -1241,7 +1226,7 @@ dependencies = [
  "percent-encoding",
  "regex",
  "serde",
- "toml 0.8.12",
+ "toml",
 ]
 
 [[package]]
@@ -1255,16 +1240,16 @@ name = "certdog"
 version = "0.1.0"
 dependencies = [
  "argh",
- "base64 0.13.1",
+ "base64",
  "constants",
  "generate-readme",
  "log",
  "modeled-types",
  "serde",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
- "toml 0.8.12",
+ "toml",
  "x509-parser",
 ]
 
@@ -1288,6 +1273,12 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
 [[package]]
 name = "cfsignal"
 version = "0.1.0"
@@ -1300,9 +1291,9 @@ dependencies = [
  "log",
  "serde",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
@@ -1403,8 +1394,8 @@ dependencies = [
  "serde",
  "serde_json",
  "simplelog",
- "snafu",
- "toml 0.8.12",
+ "snafu 0.8.2",
+ "toml",
 ]
 
 [[package]]
@@ -1565,8 +1556,8 @@ dependencies = [
  "percent-encoding",
  "serde",
  "serde_json",
- "snafu",
- "toml 0.5.11",
+ "snafu 0.8.2",
+ "toml",
  "walkdir",
 ]
 
@@ -1662,9 +1653,9 @@ dependencies = [
  "log",
  "serde",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
@@ -1679,13 +1670,13 @@ version = "0.1.0"
 dependencies = [
  "apiclient",
  "async-trait",
- "base64 0.13.1",
+ "base64",
  "bottlerocket-variant",
  "constants",
  "flate2",
  "generate-readme",
  "hex-literal",
- "http",
+ "http 0.2.12",
  "imdsclient",
  "lazy_static",
  "log",
@@ -1695,9 +1686,9 @@ dependencies = [
  "serde_json",
  "serde_plain",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
- "toml 0.5.11",
+ "toml",
  "vmw_backdoor",
 ]
 
@@ -1714,7 +1705,7 @@ dependencies = [
  "serde",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -1771,15 +1762,6 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "fastrand"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
-dependencies = [
- "instant",
-]
-
 [[package]]
 name = "fastrand"
 version = "2.0.1"
@@ -1927,7 +1909,7 @@ name = "generate-readme"
 version = "0.1.0"
 dependencies = [
  "cargo-readme",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -1961,7 +1943,7 @@ dependencies = [
  "hex-literal",
  "lazy_static",
  "signpost",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -2012,7 +1994,7 @@ dependencies = [
  "futures-core",
  "futures-sink",
  "futures-util",
- "http",
+ "http 0.2.12",
  "indexmap 2.2.5",
  "slab",
  "tokio",
@@ -2056,10 +2038,10 @@ version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
 dependencies = [
- "base64 0.21.7",
+ "base64",
  "bytes",
  "headers-core",
- "http",
+ "http 0.2.12",
  "httpdate",
  "mime",
  "sha1",
@@ -2071,7 +2053,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
 dependencies = [
- "http",
+ "http 0.2.12",
 ]
 
 [[package]]
@@ -2117,16 +2099,16 @@ dependencies = [
 name = "host-containers"
 version = "0.1.0"
 dependencies = [
- "base64 0.13.1",
+ "base64",
  "constants",
  "generate-readme",
  "log",
  "modeled-types",
  "serde",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
- "toml 0.8.12",
+ "toml",
 ]
 
 [[package]]
@@ -2154,6 +2136,17 @@ dependencies = [
  "itoa",
 ]
 
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
 [[package]]
 name = "http-body"
 version = "0.4.6"
@@ -2161,7 +2154,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
 dependencies = [
  "bytes",
- "http",
+ "http 0.2.12",
  "pin-project-lite",
 ]
 
@@ -2188,7 +2181,7 @@ dependencies = [
  "crossbeam-channel",
  "form_urlencoded",
  "futures",
- "http",
+ "http 0.2.12",
  "hyper",
  "log",
  "once_cell",
@@ -2216,7 +2209,7 @@ dependencies = [
  "futures-core",
  "futures-util",
  "h2",
- "http",
+ "http 0.2.12",
  "http-body",
  "httparse",
  "httpdate",
@@ -2229,21 +2222,6 @@ dependencies = [
  "want",
 ]
 
-[[package]]
-name = "hyper-rustls"
-version = "0.23.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"
-dependencies = [
- "http",
- "hyper",
- "log",
- "rustls 0.20.9",
- "rustls-native-certs",
- "tokio",
- "tokio-rustls 0.23.4",
-]
-
 [[package]]
 name = "hyper-rustls"
 version = "0.24.2"
@@ -2251,11 +2229,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
 dependencies = [
  "futures-util",
- "http",
+ "http 0.2.12",
  "hyper",
- "rustls 0.21.10",
+ "log",
+ "rustls",
+ "rustls-native-certs",
  "tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls",
 ]
 
 [[package]]
@@ -2315,12 +2295,12 @@ name = "imdsclient"
 version = "0.1.0"
 dependencies = [
  "generate-readme",
- "http",
+ "http 0.2.12",
  "httptest",
  "log",
  "reqwest",
  "serde_json",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
  "tokio-retry",
  "tokio-test",
@@ -2345,6 +2325,7 @@ checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.3",
+ "serde",
 ]
 
 [[package]]
@@ -2510,7 +2491,7 @@ dependencies = [
  "reqwest",
  "serde_json",
  "shell-words",
- "snafu",
+ "snafu 0.8.2",
  "tar",
  "tempfile",
  "tokio",
@@ -2550,21 +2531,12 @@ version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 
-[[package]]
-name = "memoffset"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
-dependencies = [
- "autocfg",
-]
-
 [[package]]
 name = "merge-toml"
 version = "0.1.0"
 dependencies = [
- "snafu",
- "toml 0.5.11",
+ "snafu 0.8.2",
+ "toml",
 ]
 
 [[package]]
@@ -2580,9 +2552,9 @@ dependencies = [
  "serde",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
- "toml 0.5.11",
+ "toml",
  "url",
 ]
 
@@ -2598,7 +2570,7 @@ dependencies = [
  "serde",
  "serde_json",
  "shlex",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -2619,7 +2591,7 @@ dependencies = [
  "rand",
  "semver",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "storewolf",
  "tempfile",
  "tokio",
@@ -2676,9 +2648,9 @@ dependencies = [
 name = "modeled-types"
 version = "0.1.0"
 dependencies = [
- "base64 0.13.1",
+ "base64",
  "generate-readme",
- "indexmap 1.9.3",
+ "indexmap 2.2.5",
  "lazy_static",
  "regex",
  "scalar",
@@ -2687,7 +2659,7 @@ dependencies = [
  "serde",
  "serde_json",
  "serde_plain",
- "snafu",
+ "snafu 0.8.2",
  "string_impls_for",
  "url",
  "x509-parser",
@@ -2713,7 +2685,7 @@ dependencies = [
  "settings-extension-motd",
  "settings-extension-ntp",
  "settings-extension-updates",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
@@ -2736,25 +2708,24 @@ dependencies = [
  "serde",
  "serde_json",
  "serde_plain",
- "snafu",
+ "snafu 0.8.2",
  "systemd-derive",
  "tempfile",
  "tokio",
  "tokio-retry",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
 name = "nix"
-version = "0.26.4"
+version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.4.2",
  "cfg-if",
+ "cfg_aliases",
  "libc",
- "memoffset",
- "pin-utils",
 ]
 
 [[package]]
@@ -2987,7 +2958,7 @@ version = "0.1.0"
 dependencies = [
  "chrono",
  "generate-readme",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -3002,7 +2973,7 @@ version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
 dependencies = [
- "base64 0.21.7",
+ "base64",
  "serde",
 ]
 
@@ -3107,7 +3078,7 @@ dependencies = [
  "aws-config",
  "aws-sdk-ec2",
  "aws-sdk-eks",
- "aws-smithy-client",
+ "aws-smithy-runtime",
  "aws-smithy-types",
  "aws-types",
  "bottlerocket-variant",
@@ -3116,16 +3087,16 @@ dependencies = [
  "futures-util",
  "generate-readme",
  "headers",
- "http",
+ "http 0.2.12",
  "hyper",
- "hyper-rustls 0.23.2",
+ "hyper-rustls",
  "imdsclient",
  "models",
  "serde_json",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
  "tokio-retry",
- "tokio-rustls 0.23.4",
+ "tokio-rustls",
  "url",
 ]
 
@@ -3158,8 +3129,8 @@ dependencies = [
  "serde_json",
  "signpost",
  "simplelog",
- "snafu",
- "toml 0.8.12",
+ "snafu 0.8.2",
+ "toml",
 ]
 
 [[package]]
@@ -3342,6 +3313,12 @@ dependencies = [
  "regex-syntax",
 ]
 
+[[package]]
+name = "regex-lite"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e"
+
 [[package]]
 name = "regex-syntax"
 version = "0.8.2"
@@ -3354,16 +3331,16 @@ version = "0.11.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2"
 dependencies = [
- "base64 0.21.7",
+ "base64",
  "bytes",
  "encoding_rs",
  "futures-core",
  "futures-util",
  "h2",
- "http",
+ "http 0.2.12",
  "http-body",
  "hyper",
- "hyper-rustls 0.24.2",
+ "hyper-rustls",
  "ipnet",
  "js-sys",
  "log",
@@ -3371,7 +3348,7 @@ dependencies = [
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
- "rustls 0.21.10",
+ "rustls",
  "rustls-native-certs",
  "rustls-pemfile",
  "serde",
@@ -3380,7 +3357,7 @@ dependencies = [
  "sync_wrapper",
  "system-configuration",
  "tokio",
- "tokio-rustls 0.24.1",
+ "tokio-rustls",
  "tokio-util",
  "tower-service",
  "url",
@@ -3398,21 +3375,6 @@ dependencies = [
  "generate-readme",
 ]
 
-[[package]]
-name = "ring"
-version = "0.16.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
-dependencies = [
- "cc",
- "libc",
- "once_cell",
- "spin 0.5.2",
- "untrusted 0.7.1",
- "web-sys",
- "winapi",
-]
-
 [[package]]
 name = "ring"
 version = "0.17.8"
@@ -3423,8 +3385,8 @@ dependencies = [
  "cfg-if",
  "getrandom",
  "libc",
- "spin 0.9.8",
- "untrusted 0.9.0",
+ "spin",
+ "untrusted",
  "windows-sys 0.52.0",
 ]
 
@@ -3465,18 +3427,6 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "rustls"
-version = "0.20.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99"
-dependencies = [
- "log",
- "ring 0.16.20",
- "sct",
- "webpki",
-]
-
 [[package]]
 name = "rustls"
 version = "0.21.10"
@@ -3484,7 +3434,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
 dependencies = [
  "log",
- "ring 0.17.8",
+ "ring",
  "rustls-webpki",
  "sct",
 ]
@@ -3507,7 +3457,7 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
 dependencies = [
- "base64 0.21.7",
+ "base64",
 ]
 
 [[package]]
@@ -3516,8 +3466,8 @@ version = "0.101.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
 dependencies = [
- "ring 0.17.8",
- "untrusted 0.9.0",
+ "ring",
+ "untrusted",
 ]
 
 [[package]]
@@ -3574,14 +3524,14 @@ dependencies = [
  "apiclient",
  "argh",
  "async-trait",
- "base64 0.13.1",
+ "base64",
  "bottlerocket-release",
  "cached",
  "constants",
  "dns-lookup",
  "generate-readme",
  "handlebars",
- "http",
+ "http 0.2.12",
  "lazy_static",
  "log",
  "maplit",
@@ -3596,9 +3546,9 @@ dependencies = [
  "serde_json",
  "serde_plain",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
- "toml 0.5.11",
+ "toml",
  "url",
 ]
 
@@ -3622,8 +3572,8 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
 dependencies = [
- "ring 0.17.8",
- "untrusted 0.9.0",
+ "ring",
+ "untrusted",
 ]
 
 [[package]]
@@ -3758,11 +3708,11 @@ dependencies = [
  "apiclient",
  "constants",
  "generate-readme",
- "http",
+ "http 0.2.12",
  "log",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -3870,17 +3820,17 @@ name = "shibaken"
 version = "0.1.0"
 dependencies = [
  "argh",
- "base64 0.13.1",
+ "base64",
  "generate-readme",
  "imdsclient",
  "log",
  "serde",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
  "tokio",
- "toml 0.5.11",
+ "toml",
 ]
 
 [[package]]
@@ -3891,7 +3841,7 @@ dependencies = [
  "log",
  "nix",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -3929,7 +3879,7 @@ dependencies = [
  "hex-literal",
  "serde",
  "serde_plain",
- "snafu",
+ "snafu 0.8.2",
 ]
 
 [[package]]
@@ -3964,11 +3914,20 @@ version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6"
 dependencies = [
- "backtrace",
  "doc-comment",
+ "snafu-derive 0.7.5",
+]
+
+[[package]]
+name = "snafu"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75976f4748ab44f6e5332102be424e7c2dc18daeaf7e725f2040c3ebb133512e"
+dependencies = [
+ "backtrace",
  "futures-core",
  "pin-project",
- "snafu-derive",
+ "snafu-derive 0.8.2",
 ]
 
 [[package]]
@@ -3983,6 +3942,18 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "snafu-derive"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b19911debfb8c2fb1107bc6cb2d61868aaf53a988449213959bb1b5b1ed95f"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.53",
+]
+
 [[package]]
 name = "socket2"
 version = "0.5.6"
@@ -3993,12 +3964,6 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
-[[package]]
-name = "spin"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
-
 [[package]]
 name = "spin"
 version = "0.9.8"
@@ -4009,7 +3974,7 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
 name = "static-pods"
 version = "0.1.0"
 dependencies = [
- "base64 0.13.1",
+ "base64",
  "bottlerocket-variant",
  "constants",
  "generate-readme",
@@ -4017,7 +3982,7 @@ dependencies = [
  "models",
  "schnauzer",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
  "tokio",
 ]
@@ -4037,8 +4002,8 @@ dependencies = [
  "rand",
  "semver",
  "simplelog",
- "snafu",
- "toml 0.5.11",
+ "snafu 0.8.2",
+ "toml",
  "walkdir",
 ]
 
@@ -4076,13 +4041,13 @@ dependencies = [
  "constants",
  "datastore",
  "generate-readme",
- "http",
+ "http 0.2.12",
  "log",
  "models",
  "serde_json",
  "shlex",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -4175,7 +4140,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 dependencies = [
  "cfg-if",
- "fastrand 2.0.1",
+ "fastrand",
  "rustix",
  "windows-sys 0.52.0",
 ]
@@ -4197,7 +4162,7 @@ dependencies = [
  "constants",
  "generate-readme",
  "handlebars",
- "http",
+ "http 0.2.12",
  "itertools",
  "log",
  "maplit",
@@ -4206,7 +4171,7 @@ dependencies = [
  "schnauzer",
  "serde_json",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tokio",
 ]
 
@@ -4229,9 +4194,9 @@ dependencies = [
  "serde_plain",
  "signpost",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
- "toml 0.8.12",
+ "toml",
  "update_metadata",
 ]
 
@@ -4358,24 +4323,13 @@ dependencies = [
  "tokio",
 ]
 
-[[package]]
-name = "tokio-rustls"
-version = "0.23.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
-dependencies = [
- "rustls 0.20.9",
- "tokio",
- "webpki",
-]
-
 [[package]]
 name = "tokio-rustls"
 version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
 dependencies = [
- "rustls 0.21.10",
+ "rustls",
  "tokio",
 ]
 
@@ -4430,22 +4384,13 @@ dependencies = [
  "tracing",
 ]
 
-[[package]]
-name = "toml"
-version = "0.5.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-dependencies = [
- "indexmap 1.9.3",
- "serde",
-]
-
 [[package]]
 name = "toml"
 version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
 dependencies = [
+ "indexmap 2.2.5",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -4476,9 +4421,9 @@ dependencies = [
 
 [[package]]
 name = "tough"
-version = "0.15.0"
+version = "0.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d16dc5f42fc7ce7cb51eebc7a6ef91f4d69a6d41bb13f34a09674ec47e454d9b"
+checksum = "e291fbd6cabb4137fc50d88b54c90f6886a43c174aa33276df065304474f72d7"
 dependencies = [
  "async-recursion",
  "async-trait",
@@ -4494,42 +4439,20 @@ dependencies = [
  "pem",
  "percent-encoding",
  "reqwest",
- "ring 0.16.20",
+ "ring",
  "serde",
  "serde_json",
  "serde_plain",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
  "tokio",
  "tokio-util",
  "typed-path",
- "untrusted 0.7.1",
+ "untrusted",
  "url",
  "walkdir",
 ]
 
-[[package]]
-name = "tower"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
-dependencies = [
- "futures-core",
- "futures-util",
- "pin-project",
- "pin-project-lite",
- "tokio",
- "tower-layer",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "tower-layer"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
-
 [[package]]
 name = "tower-service"
 version = "0.3.2"
@@ -4583,7 +4506,7 @@ dependencies = [
  "byteorder",
  "bytes",
  "data-encoding",
- "http",
+ "http 0.2.12",
  "httparse",
  "log",
  "rand",
@@ -4595,9 +4518,9 @@ dependencies = [
 
 [[package]]
 name = "typed-path"
-version = "0.6.0"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbb9d13b8242894ff21f9990082b90a6410a43dcc6029ac4227a1467853ba781"
+checksum = "668404597c2c687647f6f8934f97c280fd500db28557f52b07c56b92d3dc500a"
 
 [[package]]
 name = "typenum"
@@ -4650,12 +4573,6 @@ version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
 
-[[package]]
-name = "untrusted"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
-
 [[package]]
 name = "untrusted"
 version = "0.9.0"
@@ -4673,8 +4590,8 @@ dependencies = [
  "serde",
  "serde_json",
  "serde_plain",
- "snafu",
- "toml 0.5.11",
+ "snafu 0.8.2",
+ "toml",
 ]
 
 [[package]]
@@ -4698,11 +4615,11 @@ dependencies = [
  "signal-hook",
  "signpost",
  "simplelog",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
  "tokio",
  "tokio-util",
- "toml 0.5.11",
+ "toml",
  "tough",
  "update_metadata",
  "url",
@@ -4744,6 +4661,12 @@ version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
+[[package]]
+name = "uuid"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+
 [[package]]
 name = "version_check"
 version = "0.9.4"
@@ -4884,16 +4807,6 @@ dependencies = [
  "wasm-bindgen",
 ]
 
-[[package]]
-name = "webpki"
-version = "0.22.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53"
-dependencies = [
- "ring 0.17.8",
- "untrusted 0.9.0",
-]
-
 [[package]]
 name = "winapi"
 version = "0.3.9"
@@ -5107,7 +5020,7 @@ name = "xfscli"
 version = "0.1.0"
 dependencies = [
  "argh",
- "snafu",
+ "snafu 0.8.2",
  "tempfile",
 ]
 
diff --git a/sources/api/apiclient/Cargo.toml b/sources/api/apiclient/Cargo.toml
index 8f9f5ce0f84..ee3e543fadb 100644
--- a/sources/api/apiclient/Cargo.toml
+++ b/sources/api/apiclient/Cargo.toml
@@ -17,12 +17,12 @@ futures = { version = "0.3", default-features = false }
 futures-channel = { version = "0.3", default-features = false }
 http = "0.2"
 httparse = "1"
-hyper = { version = "0.14", default-features = false, features = [ "client", "http1", "http2" ] }
+hyper = { version = "0.14", default-features = false, features = ["client", "http1", "http2"] }
 hyper-unix-connector = "0.2"
 libc = "0.2"
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
-nix = "0.26"
+nix = { version = "0.28", features = ["term", "fs"] }
 rand = "0.8"
 reqwest = { version = "0.11", default-features = false, features = ["rustls-tls-native-roots"] }
 retry-read = { path = "../../retry-read", version = "0.1" }
@@ -30,10 +30,10 @@ serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 signal-hook = "0.3"
 simplelog = "0.12"
-snafu = { version = "0.7", features = ["futures"] }
+snafu = { version = "0.8", features = ["futures"] }
 tokio = { version = "~1.32", default-features = false, features = ["fs", "io-std", "io-util", "macros", "rt-multi-thread", "time"] }  # LTS
 tokio-tungstenite = { version = "0.20", default-features = false, features = ["connect"] }
-toml = "0.5"
+toml = "0.8"
 unindent = "0.1"
 url = "2"
 
diff --git a/sources/api/apiclient/src/exec/terminal.rs b/sources/api/apiclient/src/exec/terminal.rs
index d1d6951758b..9669bd23a50 100644
--- a/sources/api/apiclient/src/exec/terminal.rs
+++ b/sources/api/apiclient/src/exec/terminal.rs
@@ -10,6 +10,7 @@ use nix::{
     unistd::isatty,
 };
 use snafu::ResultExt;
+use std::io;
 
 /// The Terminal type acts as a guard around changes to terminal settings, resetting them to their
 /// original state when the Terminal is dropped.
@@ -59,7 +60,7 @@ impl Terminal {
 
             // Get the current settings of the user's terminal so we can restore them later.
             let current_termios =
-                tcgetattr(STDOUT_FILENO).context(error::TermAttrSnafu { op: "get" })?;
+                tcgetattr(io::stdout()).context(error::TermAttrSnafu { op: "get" })?;
 
             debug!("Setting terminal to raw mode, sorry about the carriage returns");
             let mut new_termios = current_termios.clone();
@@ -69,7 +70,7 @@ impl Terminal {
             cfmakeraw(&mut new_termios);
             // We make the change 'NOW' because we don't expect any input/output yet, and so should
             // have nothing to FLUSH.
-            tcsetattr(STDOUT_FILENO, SetArg::TCSANOW, &new_termios)
+            tcsetattr(io::stdout(), SetArg::TCSANOW, &new_termios)
                 .context(error::TermAttrSnafu { op: "set" })?;
 
             orig_termios = Some(current_termios);
@@ -89,7 +90,7 @@ impl Drop for Terminal {
         if let Some(orig_termios) = &self.orig_termios {
             // We shouldn't fail to reset unless stdout was closed somehow, and there's not much we
             // can do about cleaning it up then.
-            if tcsetattr(STDOUT_FILENO, SetArg::TCSANOW, orig_termios).is_err() {
+            if tcsetattr(io::stdout(), SetArg::TCSANOW, orig_termios).is_err() {
                 warn!("Failed to clean up terminal :(");
             }
         }
diff --git a/sources/api/apiserver/Cargo.toml b/sources/api/apiserver/Cargo.toml
index 301ca51e4e7..d73cb7a2f6b 100644
--- a/sources/api/apiserver/Cargo.toml
+++ b/sources/api/apiserver/Cargo.toml
@@ -22,13 +22,13 @@ http = "0.2"
 libc = "0.2"
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
-nix = "0.26"
+nix = { version = "0.28", features = ["user", "signal", "fs", "term"] }
 num = "0.4"
 rand = "0.8"
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 thar-be-updates = { path = "../thar-be-updates", version = "0.1" }
 tokio = { version = "~1.32", default-features = false, features = ["process"] }
 
@@ -37,4 +37,4 @@ generate-readme = { version = "0.1", path = "../../generate-readme" }
 
 [dev-dependencies]
 maplit = "1"
-toml = "0.5"
+toml = "0.8"
diff --git a/sources/api/apiserver/src/server/exec/child.rs b/sources/api/apiserver/src/server/exec/child.rs
index 58373e25e4b..fd0419cb7bd 100644
--- a/sources/api/apiserver/src/server/exec/child.rs
+++ b/sources/api/apiserver/src/server/exec/child.rs
@@ -38,6 +38,7 @@ use std::convert::TryFrom;
 use std::ffi::OsStr;
 use std::fs::File;
 use std::io::{self, Write};
+use std::os::fd::AsRawFd;
 use std::os::unix::{
     io::{FromRawFd, IntoRawFd, RawFd},
     process::CommandExt,
@@ -284,7 +285,7 @@ impl ChildFds {
         // The "master" end of a PTY represents a user typing at a physical terminal; we connect
         // that to the user over the WebSocket.  The "slave" end is connected to the process
         // requested by the user.
-        let read_fd = pty.master;
+        let read_fd = pty.master.as_raw_fd();
 
         // Set CLOEXEC on read_fd so it's closed automatically in the child; the child doesn't need
         // access to our end of the PTY.
@@ -303,13 +304,14 @@ impl ChildFds {
         // for this environment.
         // Implementation note: this seemed simpler than forkpty&exec because Command is a familiar
         // abstraction and this keeps the low-level bits to the TTY case that needs them.
+        let slave_fd = pty.slave.as_raw_fd();
         unsafe {
             child.pre_exec(move || {
                 // login_tty does a bunch of useful things for us that make the child process act
                 // like a "real" process the user would start in their own terminal.  It makes a
                 // new session, sets the given FD as the controlling terminal and as stdin, stdout,
                 // and stderr, and then closes the FD.
-                if login_tty(pty.slave) != 0 {
+                if login_tty(slave_fd) != 0 {
                     return Err(io::Error::last_os_error());
                 }
                 Ok(())
@@ -319,7 +321,7 @@ impl ChildFds {
         Ok(Self {
             read_fd,
             write_fd: Some(write_fd),
-            close_fd: Some(pty.slave),
+            close_fd: Some(slave_fd),
         })
     }
 
@@ -332,6 +334,7 @@ impl ChildFds {
         // of the pipe and the parent will read from the other.  The child doesn't need access to
         // our end of the pipe so we use CLOEXEC to have it closed in the child automatically.
         let (read_fd, write_fd) = pipe2(OFlag::O_CLOEXEC).context(error::CreatePipeSnafu)?;
+        let (read_fd, write_fd) = (read_fd.as_raw_fd(), write_fd.as_raw_fd());
         // Make a duplicate for stderr.  dup() sets CLOEXEC for us.
         let write_fd_dup = dup(write_fd)?;
 
diff --git a/sources/api/bootstrap-containers/Cargo.toml b/sources/api/bootstrap-containers/Cargo.toml
index 37c84266206..202a4466c21 100644
--- a/sources/api/bootstrap-containers/Cargo.toml
+++ b/sources/api/bootstrap-containers/Cargo.toml
@@ -13,12 +13,12 @@ exclude = ["README.md"]
 apiclient = { path = "../apiclient", version = "0.1" }
 constants = { path = "../../constants", version = "0.1" }
 datastore = { path = "../datastore", version = "0.1" }
-base64 = "0.13"
+base64 = "0.21"
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
 serde_json = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
 
 [build-dependencies]
diff --git a/sources/api/bootstrap-containers/src/main.rs b/sources/api/bootstrap-containers/src/main.rs
index a8003a3af9c..39fd9ddcb1b 100644
--- a/sources/api/bootstrap-containers/src/main.rs
+++ b/sources/api/bootstrap-containers/src/main.rs
@@ -73,6 +73,7 @@ journalctl -u bootstrap-containers@bear.service
 #[macro_use]
 extern crate log;
 
+use base64::Engine;
 use datastore::{serialize_scalar, Key, KeyType};
 use simplelog::{Config as LogConfig, LevelFilter, SimpleLogger};
 use snafu::{ensure, OptionExt, ResultExt};
@@ -272,8 +273,9 @@ where
     // If user data was specified, decode it and write it out
     if let Some(user_data) = &container_details.user_data {
         debug!("Decoding user data for container '{}'", name);
-        let decoded_bytes =
-            base64::decode(user_data.as_bytes()).context(error::Base64DecodeSnafu { name })?;
+        let decoded_bytes = base64::engine::general_purpose::STANDARD
+            .decode(user_data.as_bytes())
+            .context(error::Base64DecodeSnafu { name })?;
 
         let path = dir.join("user-data");
         debug!("Storing user data in {}", path.display());
diff --git a/sources/api/certdog/Cargo.toml b/sources/api/certdog/Cargo.toml
index 22e49172e70..29fed91d86c 100644
--- a/sources/api/certdog/Cargo.toml
+++ b/sources/api/certdog/Cargo.toml
@@ -11,13 +11,13 @@ exclude = ["README.md"]
 
 [dependencies]
 argh = "0.1"
-base64 = "0.13"
+base64 = "0.21"
 constants = { path = "../../constants", version = "0.1" }
 log = "0.4"
 modeled-types = { path = "../../models/modeled-types", version = "0.1" }
-serde = { version = "1.0", features = ["derive"]}
+serde = { version = "1.0", features = ["derive"] }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 toml = "0.8"
 x509-parser = "0.15"
 
diff --git a/sources/api/certdog/src/main.rs b/sources/api/certdog/src/main.rs
index 0b971a7f25a..e19e6b4cd14 100644
--- a/sources/api/certdog/src/main.rs
+++ b/sources/api/certdog/src/main.rs
@@ -8,6 +8,7 @@
 extern crate log;
 
 use argh::FromArgs;
+use base64::Engine;
 use serde::Deserialize;
 use simplelog::{Config as LogConfig, LevelFilter, SimpleLogger};
 use snafu::ResultExt;
@@ -100,7 +101,9 @@ fn split_bundles(certificates_bundle: HashMap<Identifier, PemCertificate>) -> Re
         }
 
         let name = name.as_ref();
-        let decoded = base64::decode(data.as_bytes()).context(error::Base64DecodeSnafu { name })?;
+        let decoded = base64::engine::general_purpose::STANDARD
+            .decode(data.as_bytes())
+            .context(error::Base64DecodeSnafu { name })?;
         // Each record in the API could include one or more certificates
         let mut pems = pems_from_iter(x509_parser::pem::Pem::iter_from_buffer(&decoded))?;
 
@@ -186,7 +189,7 @@ fn pem_to_string(pem: &x509_parser::pem::Pem) -> Result<String> {
 
     writeln!(out, "{} {}{}", PEM_HEADER, pem.label, PEM_SUFFIX)
         .context(error::WritePemStringSnafu)?;
-    let encoded = base64::encode(&pem.contents);
+    let encoded = base64::engine::general_purpose::STANDARD.encode(&pem.contents);
     let bytes = encoded.as_bytes();
     for chunk in bytes.chunks(64) {
         let chunk = String::from_utf8_lossy(chunk);
@@ -343,9 +346,12 @@ mod test_certdog {
     fn trusted_store_updated() {
         let trusted_store = tempfile::NamedTempFile::new().unwrap();
         let source_bundle = tempfile::NamedTempFile::new().unwrap();
-        let (_, pem) =
-            x509_parser::pem::parse_x509_pem(&base64::decode(TEST_PEM.as_bytes()).unwrap())
-                .unwrap();
+        let (_, pem) = x509_parser::pem::parse_x509_pem(
+            &base64::engine::general_purpose::STANDARD
+                .decode(TEST_PEM.as_bytes())
+                .unwrap(),
+        )
+        .unwrap();
         let trusted_certs: Vec<x509_parser::pem::Pem> = vec![pem];
         let certs_bundle = CertBundle {
             trusted_certs,
diff --git a/sources/api/corndog/Cargo.toml b/sources/api/corndog/Cargo.toml
index e0cace97c65..5ac652e7174 100644
--- a/sources/api/corndog/Cargo.toml
+++ b/sources/api/corndog/Cargo.toml
@@ -12,10 +12,10 @@ exclude = ["README.md"]
 [dependencies]
 log = "0.4"
 modeled-types = { path = "../../models/modeled-types", version = "0.1" }
-serde = { version = "1.0", features = ["derive"]}
+serde = { version = "1.0", features = ["derive"] }
 serde_json = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 toml = "0.8"
 
 [build-dependencies]
diff --git a/sources/api/datastore/Cargo.toml b/sources/api/datastore/Cargo.toml
index 4f64c11bb8a..c101197f514 100644
--- a/sources/api/datastore/Cargo.toml
+++ b/sources/api/datastore/Cargo.toml
@@ -14,7 +14,7 @@ log = "0.4"
 percent-encoding = "2"
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
-snafu = "0.7"
+snafu = "0.8"
 walkdir = "2"
 
 [build-dependencies]
@@ -22,4 +22,4 @@ generate-readme = { version = "0.1", path = "../../generate-readme" }
 
 [dev-dependencies]
 maplit = "1"
-toml = "0.5"
+toml = "0.8"
diff --git a/sources/api/early-boot-config/Cargo.toml b/sources/api/early-boot-config/Cargo.toml
index 880e348622a..cb66f78fb70 100644
--- a/sources/api/early-boot-config/Cargo.toml
+++ b/sources/api/early-boot-config/Cargo.toml
@@ -12,7 +12,7 @@ exclude = ["README.md"]
 [dependencies]
 apiclient = { path = "../apiclient", version = "0.1" }
 async-trait = "0.1"
-base64 = "0.13"
+base64 = "0.21"
 constants = { path = "../../constants", version = "0.1" }
 flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
 http = "0.2"
@@ -24,9 +24,9 @@ serde_json = "1"
 serde_plain = "1"
 serde-xml-rs = "0.6"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
-toml = "0.5"
+toml = "0.8"
 
 [target.'cfg(target_arch = "x86_64")'.dependencies]
 # vmw_backdoor includes x86_64 assembly, prevent it from building for ARM
diff --git a/sources/api/ecs-settings-applier/Cargo.toml b/sources/api/ecs-settings-applier/Cargo.toml
index 21460ad7c2e..6974aa2d7c6 100644
--- a/sources/api/ecs-settings-applier/Cargo.toml
+++ b/sources/api/ecs-settings-applier/Cargo.toml
@@ -11,13 +11,13 @@ exclude = ["README.md"]
 
 [dependencies]
 constants = { path = "../../constants", version = "0.1" }
-serde = {version = "1", features = ["derive"]}
+serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 schnauzer = { path = "../schnauzer", version = "0.1" }
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
 
 [build-dependencies]
diff --git a/sources/api/host-containers/Cargo.toml b/sources/api/host-containers/Cargo.toml
index 0c730d04b7f..6502769b6a9 100644
--- a/sources/api/host-containers/Cargo.toml
+++ b/sources/api/host-containers/Cargo.toml
@@ -10,13 +10,13 @@ build = "build.rs"
 exclude = ["README.md"]
 
 [dependencies]
-base64 = "0.13"
+base64 = "0.21"
 constants = { path = "../../constants", version = "0.1" }
 log = "0.4"
 modeled-types = { path = "../../models/modeled-types", version = "0.1" }
 serde = { version = "1", features = ["derive"] }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 toml = "0.8"
 
 [dev-dependencies]
diff --git a/sources/api/host-containers/src/main.rs b/sources/api/host-containers/src/main.rs
index eaf4c41a5d8..c666cf93d29 100644
--- a/sources/api/host-containers/src/main.rs
+++ b/sources/api/host-containers/src/main.rs
@@ -14,6 +14,7 @@ It reads the currently configured containers from its config file, then configur
 #[macro_use]
 extern crate log;
 
+use base64::Engine;
 use simplelog::{Config as LogConfig, LevelFilter, SimpleLogger};
 use snafu::{ensure, OptionExt, ResultExt};
 use std::collections::HashMap;
@@ -353,8 +354,9 @@ where
 
     // If user data was specified, unencode it and write it out before we start the container.
     if let Some(user_data) = &image_details.user_data {
-        let decoded_bytes =
-            base64::decode(user_data.as_bytes()).context(error::Base64DecodeSnafu { name })?;
+        let decoded_bytes = base64::engine::general_purpose::STANDARD
+            .decode(user_data.as_bytes())
+            .context(error::Base64DecodeSnafu { name })?;
 
         let path = dir.join("user-data");
         fs::write(path, decoded_bytes).context(error::UserDataWriteSnafu { name })?;
diff --git a/sources/api/migration/migration-helpers/Cargo.toml b/sources/api/migration/migration-helpers/Cargo.toml
index ed200587fbf..80f6b2d72de 100644
--- a/sources/api/migration/migration-helpers/Cargo.toml
+++ b/sources/api/migration/migration-helpers/Cargo.toml
@@ -16,7 +16,7 @@ schnauzer = { path = "../../schnauzer", version = "0.1" }
 serde = "1"
 serde_json = "1"
 shlex = "1"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["rt-multi-thread"] }
 
 [dev-dependencies]
diff --git a/sources/api/migration/migrations/archived/v1.1.3/kubelet-cpu-manager-state/Cargo.toml b/sources/api/migration/migrations/archived/v1.1.3/kubelet-cpu-manager-state/Cargo.toml
index cdf551b5695..f812b45b378 100644
--- a/sources/api/migration/migrations/archived/v1.1.3/kubelet-cpu-manager-state/Cargo.toml
+++ b/sources/api/migration/migrations/archived/v1.1.3/kubelet-cpu-manager-state/Cargo.toml
@@ -10,4 +10,4 @@ exclude = ["README.md"]
 
 [dependencies]
 migration-helpers = { path = "../../../migration-helpers" }
-snafu = "0.7"
+snafu = "0.8"
diff --git a/sources/api/migration/migrations/archived/v1.6.0/node-taints-representation/Cargo.toml b/sources/api/migration/migrations/archived/v1.6.0/node-taints-representation/Cargo.toml
index 35a83b9b12d..3ab3536aa1d 100644
--- a/sources/api/migration/migrations/archived/v1.6.0/node-taints-representation/Cargo.toml
+++ b/sources/api/migration/migrations/archived/v1.6.0/node-taints-representation/Cargo.toml
@@ -9,6 +9,6 @@ publish = false
 exclude = ["README.md"]
 
 [dependencies]
-migration-helpers = { path = "../../../migration-helpers", version = "0.1.0"}
+migration-helpers = { path = "../../../migration-helpers", version = "0.1.0" }
 serde_json = "1"
-snafu = "0.7"
+snafu = "0.8"
diff --git a/sources/api/migration/migrator/Cargo.toml b/sources/api/migration/migrator/Cargo.toml
index 32a5295689e..2e9997a76d5 100644
--- a/sources/api/migration/migrator/Cargo.toml
+++ b/sources/api/migration/migrator/Cargo.toml
@@ -16,15 +16,15 @@ futures = "0.3"
 futures-core = "0.3"
 log = "0.4"
 lz4 = "1"
-nix = "0.26"
+nix = { version = "0.28", features = ["dir", "fs"] }
 pentacle = "1"
 rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
 semver = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["fs", "macros", "rt-multi-thread"] }  # LTS
 tokio-util = { version = "0.7", features = ["compat", "io-util"] }
-tough = { version = "0.15", features = ["http"] }
+tough = { version = "0.17", features = ["http"] }
 update_metadata = { path = "../../../updater/update_metadata", version = "0.1" }
 url = "2"
 
diff --git a/sources/api/netdog/Cargo.toml b/sources/api/netdog/Cargo.toml
index 87f0a85811a..d38d22c7ed3 100644
--- a/sources/api/netdog/Cargo.toml
+++ b/sources/api/netdog/Cargo.toml
@@ -13,20 +13,20 @@ argh = "0.1"
 dns-lookup = "2"
 ipnet = { version = "2", features = ["serde"] }
 imdsclient = { path = "../../imdsclient", version = "0.1" }
-indexmap = { version = "1", features = ["serde"]}
+indexmap = { version = "1", features = ["serde"] }
 envy = "0.4"
 lazy_static = "1"
 systemd-derive = { path = "systemd-derive", version = "0.1" }
-quick-xml = {version = "0.26", features = ["serialize"]}
+quick-xml = { version = "0.26", features = ["serialize"] }
 rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
 regex = "1"
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 serde_plain = "1"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread", "time"] }  # LTS
 tokio-retry = "0.3"
-toml = { version = "0.5", features = ["preserve_order"] }
+toml = { version = "0.8", features = ["preserve_order"] }
 
 [dev-dependencies]
 tempfile = "3"
diff --git a/sources/api/pluto/Cargo.toml b/sources/api/pluto/Cargo.toml
index ba26f3f965f..13cb8f19eb2 100644
--- a/sources/api/pluto/Cargo.toml
+++ b/sources/api/pluto/Cargo.toml
@@ -17,20 +17,20 @@ futures-util = { version = "0.3", default-features = false }
 headers = "0.3"
 http = "0.2"
 hyper = "0.14"
-hyper-rustls = { version = "0.23", default-features = false, features = ["http2", "native-tokio", "tls12", "logging"] }
+hyper-rustls = { version = "0.24", default-features = false, features = ["http2", "native-tokio", "tls12", "logging"] }
 imdsclient = { path = "../../imdsclient", version = "0.1" }
 models = { path = "../../models", version = "0.1" }
-aws-config = "0.55"
-aws-sdk-eks = "0.28"
-aws-sdk-ec2 = "0.28"
-aws-types = "0.55"
-aws-smithy-client = { version = "0.55", default-features = false, features = ["rustls"] }
-aws-smithy-types = "0.55"
+aws-config = "1"
+aws-sdk-eks = "1"
+aws-sdk-ec2 = "1"
+aws-types = "1"
+aws-smithy-types = "1"
+aws-smithy-runtime = "1"
 serde_json = "1"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
 tokio-retry = "0.3"
-tokio-rustls = "0.23"
+tokio-rustls = "0.24"
 url = "2"
 
 [build-dependencies]
diff --git a/sources/api/pluto/src/aws.rs b/sources/api/pluto/src/aws.rs
index fd0167d11db..748170334e8 100644
--- a/sources/api/pluto/src/aws.rs
+++ b/sources/api/pluto/src/aws.rs
@@ -1,9 +1,9 @@
 use aws_config::default_provider::credentials::DefaultCredentialsChain;
-use aws_config::imds;
+use aws_config::{imds, BehaviorVersion};
 use aws_smithy_types::retry::{RetryConfig, RetryConfigBuilder};
 use aws_types::region::Region;
 use aws_types::SdkConfig;
-use snafu::{ResultExt, Snafu};
+use snafu::Snafu;
 use std::time::Duration;
 
 // Max request retry attempts; Retry many many times and let the caller decide when to terminate
@@ -20,13 +20,11 @@ pub(super) enum Error {
 
 type Result<T> = std::result::Result<T, Error>;
 
-async fn sdk_imds_client() -> Result<imds::Client> {
+fn sdk_imds_client() -> imds::Client {
     imds::Client::builder()
         .max_attempts(MAX_ATTEMPTS)
         .connect_timeout(IMDS_CONNECT_TIMEOUT)
         .build()
-        .await
-        .context(SdkImdsSnafu)
 }
 
 fn sdk_retry_config() -> RetryConfig {
@@ -35,10 +33,10 @@ fn sdk_retry_config() -> RetryConfig {
 
 pub(crate) async fn sdk_config(region: &str) -> Result<SdkConfig> {
     let provider = DefaultCredentialsChain::builder()
-        .imds_client(sdk_imds_client().await?)
+        .imds_client(sdk_imds_client())
         .build()
         .await;
-    Ok(aws_config::from_env()
+    Ok(aws_config::defaults(BehaviorVersion::v2023_11_09())
         .region(Region::new(region.to_owned()))
         .credentials_provider(provider)
         .retry_config(sdk_retry_config())
diff --git a/sources/api/pluto/src/ec2.rs b/sources/api/pluto/src/ec2.rs
index cab985cbe1a..34468ce7707 100644
--- a/sources/api/pluto/src/ec2.rs
+++ b/sources/api/pluto/src/ec2.rs
@@ -1,5 +1,6 @@
 use crate::aws::sdk_config;
 use crate::{aws, proxy};
+use aws_smithy_runtime::client::http::hyper_014::HyperClientBuilder;
 use aws_smithy_types::error::display::DisplayErrorContext;
 use snafu::{OptionExt, ResultExt, Snafu};
 use std::time::Duration;
@@ -50,8 +51,9 @@ pub(super) async fn get_private_dns_name(region: &str, instance_id: &str) -> Res
 
     let client = if let Some(https_proxy) = https_proxy {
         let http_client = proxy::setup_http_client(https_proxy, no_proxy)?;
+        let http_client = HyperClientBuilder::new().build(http_client);
         let ec2_config = aws_sdk_ec2::config::Builder::from(&config)
-            .http_connector(http_client)
+            .http_client(http_client)
             .build();
         aws_sdk_ec2::Client::from_conf(ec2_config)
     } else {
diff --git a/sources/api/pluto/src/eks.rs b/sources/api/pluto/src/eks.rs
index 65676657c18..7c896031757 100644
--- a/sources/api/pluto/src/eks.rs
+++ b/sources/api/pluto/src/eks.rs
@@ -1,6 +1,7 @@
 use crate::aws::sdk_config;
 use crate::{aws, proxy};
 use aws_sdk_eks::types::KubernetesNetworkConfigResponse;
+use aws_smithy_runtime::client::http::hyper_014::HyperClientBuilder;
 use snafu::{OptionExt, ResultExt, Snafu};
 use std::time::Duration;
 
@@ -46,8 +47,9 @@ pub(super) async fn get_cluster_network_config(
 
     let client = if let Some(https_proxy) = https_proxy {
         let http_client = proxy::setup_http_client(https_proxy, no_proxy)?;
+        let http_client = HyperClientBuilder::new().build(http_client);
         let eks_config = aws_sdk_eks::config::Builder::from(&config)
-            .http_connector(http_client)
+            .http_client(http_client)
             .build();
         aws_sdk_eks::Client::from_conf(eks_config)
     } else {
diff --git a/sources/api/pluto/src/hyper_proxy/mod.rs b/sources/api/pluto/src/hyper_proxy/mod.rs
index 8008f5be7cb..4cd3fb88280 100644
--- a/sources/api/pluto/src/hyper_proxy/mod.rs
+++ b/sources/api/pluto/src/hyper_proxy/mod.rs
@@ -23,7 +23,7 @@ use hyper_rustls::ConfigBuilderExt;
 use tokio_rustls::rustls::{ClientConfig, ServerName};
 use tokio_rustls::TlsConnector;
 
-type BoxError = Box<dyn std::error::Error + Send + Sync>;
+pub(crate) type BoxError = Box<dyn std::error::Error + Send + Sync>;
 
 /// The Intercept enum to filter connections
 #[derive(Debug, Clone)]
diff --git a/sources/api/pluto/src/proxy.rs b/sources/api/pluto/src/proxy.rs
index b97b98cb139..446e23ec9b4 100644
--- a/sources/api/pluto/src/proxy.rs
+++ b/sources/api/pluto/src/proxy.rs
@@ -1,7 +1,8 @@
 use crate::hyper_proxy::{Proxy, ProxyConnector};
 use headers::Authorization;
+use hyper::client::HttpConnector;
 use hyper::Uri;
-use hyper_rustls::HttpsConnectorBuilder;
+use hyper_rustls::{HttpsConnector, HttpsConnectorBuilder};
 use snafu::{ResultExt, Snafu};
 use std::env;
 use url::Url;
@@ -45,7 +46,7 @@ pub(crate) fn fetch_proxy_env() -> (Option<String>, Option<String>) {
 pub(crate) fn setup_http_client(
     https_proxy: String,
     no_proxy: Option<String>,
-) -> Result<impl Into<aws_smithy_client::http_connector::HttpConnector>> {
+) -> Result<ProxyConnector<HttpsConnector<HttpConnector>>> {
     // Determines whether a request of a given scheme, host and port should be proxied
     // according to `https_proxy` and `no_proxy`.
     let intercept = move |scheme: Option<&str>, host: Option<&str>, _port| {
@@ -103,5 +104,5 @@ pub(crate) fn setup_http_client(
         .build();
     let proxy_connector =
         ProxyConnector::from_proxy(https_connector, proxy).context(ProxyConnectorSnafu)?;
-    Ok(aws_smithy_client::hyper_ext::Adapter::builder().build(proxy_connector))
+    Ok(proxy_connector)
 }
diff --git a/sources/api/prairiedog/Cargo.toml b/sources/api/prairiedog/Cargo.toml
index 237333429a7..4bac0edffba 100644
--- a/sources/api/prairiedog/Cargo.toml
+++ b/sources/api/prairiedog/Cargo.toml
@@ -13,13 +13,13 @@ argh = "0.1"
 bytes = "1"
 constants = { path = "../../constants", version = "0.1" }
 log = "0.4"
-nix = "0.26"
-modeled-types = { path = "../../models/modeled-types", version = "0.1"}
+nix = { version = "0.28", features = ["mount"] }
+modeled-types = { path = "../../models/modeled-types", version = "0.1" }
 schnauzer = { path = "../schnauzer", version = "0.1" }
 signpost = { path = "../../updater/signpost", version = "0.1" }
 simplelog = "0.12"
-snafu = "0.7"
-serde = { version = "1.0", features = ["derive"]}
+snafu = "0.8"
+serde = { version = "1.0", features = ["derive"] }
 serde_json = "1.0"
 toml = "0.8"
 
diff --git a/sources/api/schnauzer/Cargo.toml b/sources/api/schnauzer/Cargo.toml
index 1936f2c0b7c..3a3e87caeb2 100644
--- a/sources/api/schnauzer/Cargo.toml
+++ b/sources/api/schnauzer/Cargo.toml
@@ -17,8 +17,8 @@ testfakes = []
 apiclient = { path = "../apiclient", version = "0.1" }
 argh = "0.1"
 async-trait = "0.1"
-base64 = "0.13"
-cached = { version = "0.46", features = ["async"] }
+base64 = "0.21"
+cached = { version = "0.49", features = ["async"] }
 constants = { path = "../../constants", version = "0.1" }
 bottlerocket-release = { path = "../../bottlerocket-release", version = "0.1" }
 dns-lookup = "2"
@@ -37,9 +37,9 @@ serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 serde_plain = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] } # LTS
-toml = "0.5"
+toml = "0.8"
 url = "2"
 
 [dev-dependencies]
diff --git a/sources/api/schnauzer/src/helpers.rs b/sources/api/schnauzer/src/helpers.rs
index e19899b78b5..a4aacce8df5 100644
--- a/sources/api/schnauzer/src/helpers.rs
+++ b/sources/api/schnauzer/src/helpers.rs
@@ -2,6 +2,7 @@
 // be registered with the Handlebars library to assist in manipulating
 // text at render time.
 
+use base64::Engine;
 use dns_lookup::lookup_host;
 use handlebars::{
     handlebars_helper, Context, Handlebars, Helper, Output, RenderContext, RenderError,
@@ -365,9 +366,11 @@ pub fn base64_decode(
     trace!("Base64 string from template: {}", base64_str);
 
     // Base64 decode the &str
-    let decoded_bytes = base64::decode(base64_str).context(error::Base64DecodeSnafu {
-        template: template_name.to_owned(),
-    })?;
+    let decoded_bytes = base64::engine::general_purpose::STANDARD
+        .decode(base64_str)
+        .context(error::Base64DecodeSnafu {
+            template: template_name.to_owned(),
+        })?;
 
     // Create a valid utf8 str
     let decoded = std::str::from_utf8(&decoded_bytes).context(error::InvalidUTF8Snafu {
diff --git a/sources/api/settings-committer/Cargo.toml b/sources/api/settings-committer/Cargo.toml
index 9190844003a..658903f707b 100644
--- a/sources/api/settings-committer/Cargo.toml
+++ b/sources/api/settings-committer/Cargo.toml
@@ -12,7 +12,7 @@ exclude = ["README.md"]
 [dependencies]
 apiclient = { path = "../apiclient", version = "0.1" }
 constants = { path = "../../constants", version = "0.1" }
-snafu = "0.7"
+snafu = "0.8"
 http = "0.2"
 log = "0.4"
 serde_json = "1"
diff --git a/sources/api/shibaken/Cargo.toml b/sources/api/shibaken/Cargo.toml
index 703f47ee7fd..024d0eada10 100644
--- a/sources/api/shibaken/Cargo.toml
+++ b/sources/api/shibaken/Cargo.toml
@@ -11,15 +11,15 @@ exclude = ["README.md"]
 
 [dependencies]
 argh = "0.1"
-base64 = "0.13"
+base64 = "0.21"
 imdsclient = { path = "../../imdsclient", version = "0.1" }
 log = "0.4"
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
-toml = "0.5"
+toml = "0.8"
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../../generate-readme" }
diff --git a/sources/api/shibaken/src/admin_userdata.rs b/sources/api/shibaken/src/admin_userdata.rs
index e07122b8806..3eb0a63dbc8 100644
--- a/sources/api/shibaken/src/admin_userdata.rs
+++ b/sources/api/shibaken/src/admin_userdata.rs
@@ -1,5 +1,6 @@
 /// This module contains utilities for populating userdata for the admin-container with user SSH keys from IMDS.
 use argh::FromArgs;
+use base64::Engine;
 use imdsclient::ImdsClient;
 use serde::Serialize;
 use snafu::ResultExt;
@@ -27,7 +28,7 @@ impl GenerateAdminUserdata {
         // admin container user-data must be base64-encoded to be passed through to the admin container
         // using a setting, rather than another arbitrary storage mechanism. This approach allows the
         // user to bypass shibaken and use their own user-data if desired.
-        let user_data_base64 = base64::encode(&user_data_json);
+        let user_data_base64 = base64::engine::general_purpose::STANDARD.encode(&user_data_json);
 
         log::info!("Outputting base64-encoded user-data");
         // sundog expects JSON-serialized output so that many types can be represented, allowing the
diff --git a/sources/api/static-pods/Cargo.toml b/sources/api/static-pods/Cargo.toml
index 96f903144d8..342840ce4c3 100644
--- a/sources/api/static-pods/Cargo.toml
+++ b/sources/api/static-pods/Cargo.toml
@@ -11,12 +11,12 @@ exclude = ["README.md"]
 
 [dependencies]
 constants = { path = "../../constants", version = "0.1" }
-base64 = "0.13"
+base64 = "0.21"
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
 schnauzer = { path = "../schnauzer", version = "0.1" }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread", "time"] }  # LTS
 tempfile = "3"
 
diff --git a/sources/api/static-pods/src/static_pods.rs b/sources/api/static-pods/src/static_pods.rs
index a007f14cf7b..e93804fc455 100644
--- a/sources/api/static-pods/src/static_pods.rs
+++ b/sources/api/static-pods/src/static_pods.rs
@@ -11,6 +11,7 @@ It queries for all existing static pod settings, then configures the system as f
 * If the pod is disabled, it ensures the manifest file is removed from the pod manifest path.
 */
 
+use base64::Engine;
 use model::modeled_types::Identifier;
 use simplelog::{Config as LogConfig, LevelFilter, SimpleLogger};
 use snafu::{ensure, OptionExt, ResultExt};
@@ -117,8 +118,9 @@ where
                 field: "manifest",
             })?;
 
-        let manifest =
-            base64::decode(manifest.as_bytes()).context(error::Base64DecodeSnafu { name })?;
+        let manifest = base64::engine::general_purpose::STANDARD
+            .decode(manifest.as_bytes())
+            .context(error::Base64DecodeSnafu { name })?;
 
         info!("Writing static pod '{}' to '{}'", name, STATIC_POD_DIR);
 
diff --git a/sources/api/storewolf/Cargo.toml b/sources/api/storewolf/Cargo.toml
index 01e274fcbdf..8f76c23372e 100644
--- a/sources/api/storewolf/Cargo.toml
+++ b/sources/api/storewolf/Cargo.toml
@@ -18,8 +18,8 @@ models = { path = "../../models", version = "0.1" }
 rand = { version = "0.8", default-features = false, features = ["std", "std_rng"] }
 semver = "1"
 simplelog = "0.12"
-snafu = "0.7"
-toml = "0.5"
+snafu = "0.8"
+toml = "0.8"
 
 [build-dependencies]
 bottlerocket-variant = { version = "0.1", path = "../../bottlerocket-variant" }
@@ -31,8 +31,8 @@ merge-toml = { path = "merge-toml", version = "0.1" }
 # runs twice, once for the above dependency and once for this build-dependency,
 # so it's important that it remains reentrant.
 models = { path = "../../models", version = "0.1" }
-snafu = "0.7"
-toml = "0.5"
+snafu = "0.8"
+toml = "0.8"
 walkdir = "2"
 
 [[bin]]
diff --git a/sources/api/storewolf/merge-toml/Cargo.toml b/sources/api/storewolf/merge-toml/Cargo.toml
index 46e9a66c898..467a72f62f7 100644
--- a/sources/api/storewolf/merge-toml/Cargo.toml
+++ b/sources/api/storewolf/merge-toml/Cargo.toml
@@ -7,5 +7,5 @@ edition = "2021"
 publish = false
 
 [dependencies]
-snafu = "0.7"
-toml = "0.5"
+snafu = "0.8"
+toml = "0.8"
diff --git a/sources/api/storewolf/merge-toml/src/lib.rs b/sources/api/storewolf/merge-toml/src/lib.rs
index 631399e740d..624f09da52d 100644
--- a/sources/api/storewolf/merge-toml/src/lib.rs
+++ b/sources/api/storewolf/merge-toml/src/lib.rs
@@ -71,32 +71,32 @@ type Result<T> = std::result::Result<T, error::Error>;
 #[cfg(test)]
 mod test {
     use super::merge_values;
-    use toml::toml;
+    use toml::{toml, Value};
 
     #[test]
     fn merge() {
-        let mut left = toml! {
+        let mut left = Value::Table(toml! {
             top1 = "left top1"
             top2 = "left top2"
             [settings.inner]
             inner_setting1 = "left inner_setting1"
             inner_setting2 = "left inner_setting2"
-        };
-        let right = toml! {
+        });
+        let right = Value::Table(toml! {
             top1 = "right top1"
             [settings]
             setting = "right setting"
             [settings.inner]
             inner_setting1 = "right inner_setting1"
             inner_setting3 = "right inner_setting3"
-        };
+        });
         // Can't comment inside this toml, unfortunately.
         // "top1" is being overwritten from right.
         // "top2" is only in the left and remains.
         // "setting" is only in the right side.
         // "inner" tests that recursion works; inner_setting1 is replaced, 2 is untouched, and
         // 3 is new.
-        let expected = toml! {
+        let expected = Value::Table(toml! {
             top1 = "right top1"
             top2 = "left top2"
             [settings]
@@ -105,7 +105,7 @@ mod test {
             inner_setting1 = "right inner_setting1"
             inner_setting2 = "left inner_setting2"
             inner_setting3 = "right inner_setting3"
-        };
+        });
         merge_values(&mut left, &right).unwrap();
         assert_eq!(left, expected);
     }
diff --git a/sources/api/sundog/Cargo.toml b/sources/api/sundog/Cargo.toml
index 474ac6c7a81..cf386a9c482 100644
--- a/sources/api/sundog/Cargo.toml
+++ b/sources/api/sundog/Cargo.toml
@@ -19,7 +19,7 @@ models = { path = "../../models", version = "0.1" }
 serde_json = "1"
 simplelog = "0.12"
 shlex = "1"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["process", "macros", "rt-multi-thread"] }  # LTS
 
 [build-dependencies]
diff --git a/sources/api/thar-be-settings/Cargo.toml b/sources/api/thar-be-settings/Cargo.toml
index b8f0282e0ac..610c7b0ef43 100644
--- a/sources/api/thar-be-settings/Cargo.toml
+++ b/sources/api/thar-be-settings/Cargo.toml
@@ -17,11 +17,11 @@ http = "0.2"
 itertools = "0.10"
 log = "0.4"
 models = { path = "../../models", version = "0.1" }
-nix = "0.26"
+nix = { version = "0.28", features = ["process"] }
 schnauzer = { path = "../schnauzer", version = "0.1" }
 serde_json = "1"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
 
 [build-dependencies]
diff --git a/sources/api/thar-be-updates/Cargo.toml b/sources/api/thar-be-updates/Cargo.toml
index c91746d25ef..c4e34a5befa 100644
--- a/sources/api/thar-be-updates/Cargo.toml
+++ b/sources/api/thar-be-updates/Cargo.toml
@@ -15,16 +15,16 @@ chrono = { version = "0.4", default-features = false, features = ["std", "serde"
 fs2 = "0.4"
 log = "0.4"
 modeled-types = { path = "../../models/modeled-types", version = "0.1" }
-nix = "0.26"
+nix = "0.28"
 num-derive = "0.3"
 num-traits = "0.2"
-semver = { version = "1", features = [ "serde" ] }
-serde = { version = "1", features = [ "derive" ] }
+semver = { version = "1", features = ["serde"] }
+serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 serde_plain = "1"
 signpost = { path = "../../updater/signpost", version = "0.1" }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tempfile = "3"
 toml = "0.8"
 update_metadata = { path = "../../updater/update_metadata", version = "0.1" }
diff --git a/sources/bottlerocket-release/Cargo.toml b/sources/bottlerocket-release/Cargo.toml
index 496b47552c1..cc7893d82b8 100644
--- a/sources/bottlerocket-release/Cargo.toml
+++ b/sources/bottlerocket-release/Cargo.toml
@@ -13,7 +13,7 @@ envy = "0.4"
 log = "0.4"
 semver = { version = "1", features = ["serde"] }
 serde = { version = "1", features = ["derive"] }
-snafu = "0.7"
+snafu = "0.8"
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/bottlerocket-variant/Cargo.toml b/sources/bottlerocket-variant/Cargo.toml
index db2be288888..37229b08f7f 100644
--- a/sources/bottlerocket-variant/Cargo.toml
+++ b/sources/bottlerocket-variant/Cargo.toml
@@ -10,7 +10,7 @@ exclude = ["README.md"]
 
 [dependencies]
 serde = "1"
-snafu = "0.7"
+snafu = "0.8"
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/cfsignal/Cargo.toml b/sources/cfsignal/Cargo.toml
index 1b18a57c407..5964de04d10 100644
--- a/sources/cfsignal/Cargo.toml
+++ b/sources/cfsignal/Cargo.toml
@@ -11,12 +11,12 @@ exclude = ["README.md"]
 log = "0.4"
 serde = { version = "1", features = ["derive"] }
 simplelog = "0.12"
-snafu = { version = "0.7" }
-toml = "0.5"
+snafu = { version = "0.8" }
+toml = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }
-aws-config = "0.55"
-aws-sdk-cloudformation = "0.28"
-aws-types = "0.55"
+aws-config = "1"
+aws-sdk-cloudformation = "1"
+aws-types = "1"
 imdsclient = { path = "../imdsclient", version = "0.1" }
 
 [build-dependencies]
diff --git a/sources/cfsignal/src/cloudformation.rs b/sources/cfsignal/src/cloudformation.rs
index 72032b9f8db..5887dd90025 100644
--- a/sources/cfsignal/src/cloudformation.rs
+++ b/sources/cfsignal/src/cloudformation.rs
@@ -1,3 +1,4 @@
+use aws_config::BehaviorVersion;
 use std::str::FromStr;
 
 use crate::error::{self, Result};
@@ -21,7 +22,7 @@ pub async fn signal_resource(
         "Region: {:?} - InstanceID: {:?} - Signal: {:?}",
         region, instance_id, status
     );
-    let config = aws_config::from_env()
+    let config = aws_config::defaults(BehaviorVersion::v2023_11_09())
         .region(Region::new(region.to_owned()))
         .load()
         .await;
diff --git a/sources/clarify.toml b/sources/clarify.toml
index 673b7bd7c13..45b65cb5730 100644
--- a/sources/clarify.toml
+++ b/sources/clarify.toml
@@ -168,7 +168,7 @@ license-files = [
 expression = "MIT AND ISC AND OpenSSL"
 license-files = [
     { path = "LICENSE", hash = 0xbd0eed23 },
-    { path = "third_party/fiat/LICENSE", hash = 0xdad0527d },
+    { path = "third_party/fiat/LICENSE", hash = 0x75829ee2 },
 ]
 
 [clarify.tokio-macros]
diff --git a/sources/driverdog/Cargo.toml b/sources/driverdog/Cargo.toml
index 1d6a31b4e38..9668347ffcd 100644
--- a/sources/driverdog/Cargo.toml
+++ b/sources/driverdog/Cargo.toml
@@ -12,10 +12,10 @@ exclude = ["README.md"]
 argh = "0.1"
 log = "0.4"
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 serde = { version = "1", features = ["derive"] }
 tempfile = "3"
-toml = "0.5"
+toml = "0.8"
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/driverdog/src/main.rs b/sources/driverdog/src/main.rs
index e9e24f33724..4f6f02d9184 100644
--- a/sources/driverdog/src/main.rs
+++ b/sources/driverdog/src/main.rs
@@ -365,9 +365,10 @@ fn run() -> Result<()> {
     .flatten()
     {
         let path = entry.path();
-        let modules_sets: HashMap<String, DriverConfig> =
-            toml::from_slice(&fs::read(&path).context(error::ReadPathSnafu { path: &path })?)
-                .context(error::DeserializeSnafu { path: &path })?;
+        let modules_sets: HashMap<String, DriverConfig> = toml::from_str(
+            &fs::read_to_string(&path).context(error::ReadPathSnafu { path: &path })?,
+        )
+        .context(error::DeserializeSnafu { path: &path })?;
 
         all_modules_sets.extend(modules_sets);
     }
diff --git a/sources/generate-readme/Cargo.toml b/sources/generate-readme/Cargo.toml
index 1ff41345a83..bd4a5927395 100644
--- a/sources/generate-readme/Cargo.toml
+++ b/sources/generate-readme/Cargo.toml
@@ -8,4 +8,4 @@ publish = false
 
 [dependencies]
 cargo-readme = "3"
-snafu = "0.7"
+snafu = "0.8"
diff --git a/sources/ghostdog/Cargo.toml b/sources/ghostdog/Cargo.toml
index 9ccb57e4d22..47979e3a4bd 100644
--- a/sources/ghostdog/Cargo.toml
+++ b/sources/ghostdog/Cargo.toml
@@ -14,7 +14,7 @@ gptman = { version = "1", default-features = false }
 hex-literal = "0.3"
 lazy_static = "1"
 signpost = { path = "../updater/signpost", version = "0.1" }
-snafu = "0.7"
+snafu = "0.8"
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/imdsclient/Cargo.toml b/sources/imdsclient/Cargo.toml
index 07c409fc84a..d1874e21c38 100644
--- a/sources/imdsclient/Cargo.toml
+++ b/sources/imdsclient/Cargo.toml
@@ -14,7 +14,7 @@ http = "0.2"
 log = "0.4"
 reqwest = { version = "0.11", default-features = false }
 serde_json = "1"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread", "time"] }  # LTS
 tokio-retry = "0.3"
 
diff --git a/sources/logdog/Cargo.toml b/sources/logdog/Cargo.toml
index 4c1613c3742..9fe5c6bbdca 100644
--- a/sources/logdog/Cargo.toml
+++ b/sources/logdog/Cargo.toml
@@ -18,7 +18,7 @@ models = { path = "../models", version = "0.1" }
 reqwest = { version = "0.11", default-features = false, features = ["blocking", "rustls-tls-native-roots"] }
 serde_json = "1"
 shell-words = "1"
-snafu = { version = "0.7", features = ["backtraces-impl-backtrace-crate"] }
+snafu = { version = "0.8", features = ["backtraces-impl-backtrace-crate"] }
 tar = { version = "0.4", default-features = false }
 tempfile = { version = "3", default-features = false }
 tokio = { version = "~1.32", default-features = false, features = ["macros", "rt-multi-thread"] }  # LTS
diff --git a/sources/metricdog/Cargo.toml b/sources/metricdog/Cargo.toml
index 9c21f858aab..eee67eeea21 100644
--- a/sources/metricdog/Cargo.toml
+++ b/sources/metricdog/Cargo.toml
@@ -16,8 +16,8 @@ reqwest = { version = "0.11", default-features = false, features = ["blocking",
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 simplelog = "0.12"
-snafu = { version = "0.7" }
-toml = "0.5"
+snafu = { version = "0.8" }
+toml = "0.8"
 url = "2"
 
 [build-dependencies]
diff --git a/sources/models/Cargo.toml b/sources/models/Cargo.toml
index e40e7b0ceda..4f24dd0ed1c 100644
--- a/sources/models/Cargo.toml
+++ b/sources/models/Cargo.toml
@@ -15,7 +15,7 @@ libc = "0.2"
 model-derive = { path = "model-derive", version = "0.1" }
 modeled-types = { path = "modeled-types", version = "0.1" }
 serde = { version = "1", features = ["derive"] }
-toml = "0.5"
+toml = "0.8"
 
 # settings extensions
 settings-extension-aws = { path = "../settings-extensions/aws", version = "0.1" }
diff --git a/sources/models/modeled-types/Cargo.toml b/sources/models/modeled-types/Cargo.toml
index 076e1d72c4b..00146d94522 100644
--- a/sources/models/modeled-types/Cargo.toml
+++ b/sources/models/modeled-types/Cargo.toml
@@ -10,8 +10,8 @@ build = "build.rs"
 exclude = ["README.md"]
 
 [dependencies]
-base64 = "0.13"
-indexmap = { version = "1", features = ["serde"] }
+base64 = "0.21"
+indexmap = { version = "2", features = ["serde"] }
 lazy_static = "1"
 regex = "1"
 scalar = { path = "../scalar", version = "0.1" }
@@ -20,7 +20,7 @@ semver = "1"
 serde = "1"
 serde_json = "1"
 serde_plain = "1"
-snafu = "0.7"
+snafu = "0.8"
 string_impls_for = { path = "../string_impls_for", version = "0.1" }
 url = "2"
 x509-parser = "0.15"
diff --git a/sources/models/modeled-types/src/shared.rs b/sources/models/modeled-types/src/shared.rs
index ab717050981..6a9b1e00abd 100644
--- a/sources/models/modeled-types/src/shared.rs
+++ b/sources/models/modeled-types/src/shared.rs
@@ -1,4 +1,5 @@
 use super::error;
+use base64::Engine;
 use lazy_static::lazy_static;
 use regex::Regex;
 use scalar::traits::{Scalar, Validate};
@@ -28,7 +29,9 @@ impl TryFrom<&str> for ValidBase64 {
     type Error = error::Error;
 
     fn try_from(input: &str) -> Result<Self, Self::Error> {
-        base64::decode(input).context(error::InvalidBase64Snafu)?;
+        base64::engine::general_purpose::STANDARD
+            .decode(input)
+            .context(error::InvalidBase64Snafu)?;
         Ok(ValidBase64 {
             inner: input.to_string(),
         })
@@ -40,12 +43,15 @@ string_impls_for!(ValidBase64, "ValidBase64");
 #[cfg(test)]
 mod test_valid_base64 {
     use super::ValidBase64;
+    use base64::Engine;
     use std::convert::TryFrom;
 
     #[test]
     fn valid_base64() {
         let v = ValidBase64::try_from("aGk=").unwrap();
-        let decoded_bytes = base64::decode(v.as_ref()).unwrap();
+        let decoded_bytes = base64::engine::general_purpose::STANDARD
+            .decode(v.as_ref())
+            .unwrap();
         let decoded = std::str::from_utf8(&decoded_bytes).unwrap();
         assert_eq!(decoded, "hi");
     }
@@ -1002,7 +1008,9 @@ impl TryFrom<&str> for PemCertificateString {
                 inner: input.to_string(),
             });
         }
-        let decoded_bytes = base64::decode(input).context(error::InvalidBase64Snafu)?;
+        let decoded_bytes = base64::engine::general_purpose::STANDARD
+            .decode(input)
+            .context(error::InvalidBase64Snafu)?;
         // Flag to check if the bundle doesn't contain any valid certificate
         let mut certs_found = false;
         // Validate each certificate in the bundle
diff --git a/sources/parse-datetime/Cargo.toml b/sources/parse-datetime/Cargo.toml
index 22c13f81c4b..bcc126bd89b 100644
--- a/sources/parse-datetime/Cargo.toml
+++ b/sources/parse-datetime/Cargo.toml
@@ -10,7 +10,7 @@ exclude = ["README.md"]
 
 [dependencies]
 chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }
-snafu = { version = "0.7", features = ["backtraces-impl-backtrace-crate"] }
+snafu = { version = "0.8", features = ["backtraces-impl-backtrace-crate"] }
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/parse-datetime/src/lib.rs b/sources/parse-datetime/src/lib.rs
index 4449f6a742e..7048abb82db 100644
--- a/sources/parse-datetime/src/lib.rs
+++ b/sources/parse-datetime/src/lib.rs
@@ -94,9 +94,9 @@ pub fn parse_offset(input: &str) -> Result<Duration> {
         .context(error::DateArgCountSnafu { input })?;
 
     let duration = match unit_str {
-        "hour" | "hours" => Duration::hours(i64::from(count)),
-        "day" | "days" => Duration::days(i64::from(count)),
-        "week" | "weeks" => Duration::weeks(i64::from(count)),
+        "hour" | "hours" => Duration::try_hours(i64::from(count)).unwrap(),
+        "day" | "days" => Duration::try_days(i64::from(count)).unwrap(),
+        "week" | "weeks" => Duration::try_weeks(i64::from(count)).unwrap(),
         _ => {
             return error::DateArgInvalidSnafu {
                 input,
diff --git a/sources/shimpei/Cargo.toml b/sources/shimpei/Cargo.toml
index d2cdd3b3121..9d9c3f4b1f5 100644
--- a/sources/shimpei/Cargo.toml
+++ b/sources/shimpei/Cargo.toml
@@ -11,8 +11,8 @@ exclude = ["README.md"]
 [dependencies]
 log = "0.4"
 simplelog = "0.12"
-snafu = "0.7"
-nix = "0.26"
+snafu = "0.8"
+nix = { version = "0.28", features = ["process"] }
 
 [build-dependencies]
 generate-readme = { version = "0.1", path = "../generate-readme" }
diff --git a/sources/updater/block-party/Cargo.toml b/sources/updater/block-party/Cargo.toml
index 030c36de7d0..d04e1162529 100644
--- a/sources/updater/block-party/Cargo.toml
+++ b/sources/updater/block-party/Cargo.toml
@@ -9,4 +9,4 @@ publish = false
 exclude = ["README.md"]
 
 [dependencies]
-snafu = "0.7"
+snafu = "0.8"
diff --git a/sources/updater/signpost/Cargo.toml b/sources/updater/signpost/Cargo.toml
index e9a234fbffd..66bd3e20a4d 100644
--- a/sources/updater/signpost/Cargo.toml
+++ b/sources/updater/signpost/Cargo.toml
@@ -15,4 +15,4 @@ gptman = { version = "1", default-features = false }
 hex-literal = "0.3"
 serde = { version = "1", features = ["derive"] }
 serde_plain = "1"
-snafu = { version = "0.7", default-features = false, features = ["std"] }
+snafu = { version = "0.8", default-features = false, features = ["std"] }
diff --git a/sources/updater/update_metadata/Cargo.toml b/sources/updater/update_metadata/Cargo.toml
index bf0a694373e..4bbd81fa6ee 100644
--- a/sources/updater/update_metadata/Cargo.toml
+++ b/sources/updater/update_metadata/Cargo.toml
@@ -16,8 +16,8 @@ semver = { version = "1", features = ["serde"] }
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
 serde_plain = "1"
-snafu = "0.7"
-toml = "0.5"
+snafu = "0.8"
+toml = "0.8"
 
 [lib]
 name = "update_metadata"
diff --git a/sources/updater/update_metadata/src/lib.rs b/sources/updater/update_metadata/src/lib.rs
index 53bae147664..1a1c805573b 100644
--- a/sources/updater/update_metadata/src/lib.rs
+++ b/sources/updater/update_metadata/src/lib.rs
@@ -452,7 +452,7 @@ mod tests {
 
     fn test_time() -> DateTime<Utc> {
         // DateTime for 1/1/2000 00:00:00
-        DateTime::<Utc>::from_utc(
+        DateTime::<Utc>::from_naive_utc_and_offset(
             NaiveDate::from_ymd_opt(2000, 1, 1)
                 .unwrap()
                 .and_hms_milli_opt(0, 0, 0, 0)
@@ -498,11 +498,15 @@ mod tests {
         update.waves.insert(0, time);
         update
             .waves
-            .insert(MAX_SEED, time + Duration::milliseconds(i64::from(MAX_SEED)));
+            .insert(
+                MAX_SEED,
+                time + Duration::try_milliseconds(i64::from(MAX_SEED)),
+            )
+            .unwrap();
 
         for seed in (100..500).step_by(100) {
             assert!(
-                !update.update_ready(seed, time + Duration::milliseconds(i64::from(seed) - 1)),
+                !update.update_ready(seed, time + Duration::try_milliseconds(i64::from(seed) - 1)).unwrap(),
                 "seed: {}, time: {}, wave start time: {}, wave start seed: {}, {} milliseconds hasn't passed yet",
                 seed,
                 time,
@@ -511,10 +515,10 @@ mod tests {
                 seed
             );
             assert!(
-                update.update_ready(seed, time + Duration::milliseconds(i64::from(seed))),
+                update.update_ready(seed, time + Duration::try_milliseconds(i64::from(seed))).unwrap(),
                 "seed: {}, time: {}, wave start time: {}, wave start seed: {}, update should be ready",
                 seed,
-                time + Duration::milliseconds(100),
+                time + Duration::try_milliseconds(100).unwrap(),
                 time,
                 0,
             );
@@ -525,15 +529,17 @@ mod tests {
         let time = test_time();
         update.waves.insert(0, time);
         // First wave ends 200 milliseconds into the update and has seeds 0 - 50
-        update.waves.insert(50, time + Duration::milliseconds(200));
+        update
+            .waves
+            .insert(50, time + Duration::try_milliseconds(200).unwrap());
         // Second wave ends 1024 milliseconds into the update and has seeds 50 - 100
         update
             .waves
-            .insert(100, time + Duration::milliseconds(1024));
+            .insert(100, time + Duration::try_milliseconds(1024).unwrap());
         // Third wave ends 4096 milliseconds into the update and has seeds 100 - 1024
         update
             .waves
-            .insert(1024, time + Duration::milliseconds(4096));
+            .insert(1024, time + Duration::try_milliseconds(4096).unwrap());
     }
 
     #[test]
@@ -546,7 +552,7 @@ mod tests {
 
         for duration in (0..200).step_by(10) {
             assert!(
-                !update.update_ready(seed, time + Duration::milliseconds(duration)),
+                !update.update_ready(seed, time + Duration::try_milliseconds(duration).unwrap()),
                 "seed should not part of first wave",
             );
         }
@@ -555,7 +561,7 @@ mod tests {
         for duration in (200..seed_time_position).step_by(2) {
             assert!(
                 !update.update_ready(
-                    seed, time + Duration::milliseconds(i64::from(duration))
+                    seed, time + Duration::try_milliseconds(i64::from(duration)).unwrap()
                 ),
                 "update should not be ready, it's the second wave but not at position within wave yet: {}", duration,
             );
@@ -565,8 +571,8 @@ mod tests {
             assert!(
                 update.update_ready(
                     seed,
-                    time + Duration::milliseconds(200)
-                        + Duration::milliseconds(i64::from(duration))
+                    time + Duration::try_milliseconds(200).unwrap()
+                        + Duration::try_milliseconds(i64::from(duration)).unwrap()
                 ),
                 "update should be ready now that we're passed the allocated time position within the second wave: {}", duration,
             );
@@ -574,7 +580,10 @@ mod tests {
 
         for duration in (1024..4096).step_by(8) {
             assert!(
-                update.update_ready(seed, time + Duration::milliseconds(i64::from(duration))),
+                update.update_ready(
+                    seed,
+                    time + Duration::try_milliseconds(i64::from(duration)).unwrap()
+                ),
                 "update should be ready after the third wave starts and onwards",
             );
         }
@@ -589,14 +598,14 @@ mod tests {
 
         for duration in (0..200).step_by(10) {
             assert!(
-                !update.update_ready(seed, time + Duration::milliseconds(duration)),
+                !update.update_ready(seed, time + Duration::try_milliseconds(duration).unwrap()),
                 "seed should not part of first wave",
             );
         }
 
         for duration in (200..1024).step_by(4) {
             assert!(
-                !update.update_ready(seed, time + Duration::milliseconds(duration)),
+                !update.update_ready(seed, time + Duration::try_milliseconds(duration).unwrap()),
                 "seed should not part of second wave",
             );
         }
@@ -606,8 +615,8 @@ mod tests {
             assert!(
                 !update.update_ready(
                     seed,
-                    time + Duration::milliseconds(200)
-                        + Duration::milliseconds(i64::from(duration))
+                    time + Duration::try_milliseconds(200).unwrap()
+                        + Duration::try_milliseconds(i64::from(duration)).unwrap()
                 ),
                 "update should not be ready, it's the third wave but not at position within wave yet: {}", duration,
             );
@@ -617,8 +626,8 @@ mod tests {
             assert!(
                 update.update_ready(
                     seed,
-                    time + Duration::milliseconds(1024 + 200)
-                        + Duration::milliseconds(i64::from(duration))
+                    time + Duration::try_milliseconds(1024 + 200).unwrap()
+                        + Duration::try_milliseconds(i64::from(duration)).unwrap()
                 ),
                 "update should be ready now that we're passed the allocated time position within the third wave: {}", duration,
             );
@@ -641,7 +650,7 @@ mod tests {
         };
         let seed = 1024;
         // Construct a DateTime object for 1/1/2000 00:00:00
-        let time = DateTime::<Utc>::from_utc(
+        let time = DateTime::<Utc>::from_naive_utc_and_offset(
             NaiveDate::from_ymd_opt(2000, 1, 1)
                 .unwrap()
                 .and_hms_milli_opt(0, 0, 0, 0)
@@ -649,9 +658,16 @@ mod tests {
             Utc,
         );
 
-        update.waves.insert(0, time - Duration::hours(3));
-        update.waves.insert(256, time - Duration::hours(2));
-        update.waves.insert(512, time - Duration::hours(1));
+        update
+            .waves
+            .insert(0, time - Duration::try_hours(3).unwrap());
+        update
+            .waves
+            .insert(256, time - Duration::try_hours(2))
+            .unwrap();
+        update
+            .waves
+            .insert(512, time - Duration::try_hours(1).unwrap());
 
         assert!(
             // Last wave should have already passed
@@ -670,11 +686,11 @@ mod tests {
         let to = Version::parse("1.5.0").unwrap();
         let targets = find_migrations(&from, &to, &manifest).unwrap();
 
-        assert!(targets.len() == 3);
+        assert_eq!(targets.len(), 3);
         let mut i = targets.iter();
-        assert!(i.next().unwrap() == "migration_1.1.0_a");
-        assert!(i.next().unwrap() == "migration_1.1.0_b");
-        assert!(i.next().unwrap() == "migration_1.5.0_shortcut");
+        assert_eq!(i.next().unwrap(), "migration_1.1.0_a");
+        assert_eq!(i.next().unwrap(), "migration_1.1.0_b");
+        assert_eq!(i.next().unwrap(), "migration_1.5.0_shortcut");
     }
 
     #[test]
@@ -686,10 +702,10 @@ mod tests {
         let to = Version::parse("1.0.0").unwrap();
         let targets = find_migrations(&from, &to, &manifest).unwrap();
 
-        assert!(targets.len() == 3);
+        assert_eq!(targets.len(), 3);
         let mut i = targets.iter();
-        assert!(i.next().unwrap() == "migration_1.5.0_shortcut");
-        assert!(i.next().unwrap() == "migration_1.1.0_b");
-        assert!(i.next().unwrap() == "migration_1.1.0_a");
+        assert_eq!(i.next().unwrap(), "migration_1.5.0_shortcut");
+        assert_eq!(i.next().unwrap(), "migration_1.1.0_b");
+        assert_eq!(i.next().unwrap(), "migration_1.1.0_a");
     }
 }
diff --git a/sources/updater/updog/Cargo.toml b/sources/updater/updog/Cargo.toml
index 98b938cc45e..703fe029578 100644
--- a/sources/updater/updog/Cargo.toml
+++ b/sources/updater/updog/Cargo.toml
@@ -24,11 +24,11 @@ serde_json = "1"
 serde_plain = "1"
 signpost = { path = "../signpost", version = "0.1" }
 simplelog = "0.12"
-snafu = "0.7"
+snafu = "0.8"
 tokio = { version = "~1.32", default-features = false, features = ["fs", "macros", "process", "rt-multi-thread"] }  # LTS
 tokio-util = { version = "0.7", features = ["compat", "io-util"] }
-toml = "0.5"
-tough = { version = "0.15", features = ["http"] }
+toml = "0.8"
+tough = { version = "0.17", features = ["http"] }
 update_metadata = { path = "../update_metadata", version = "0.1" }
 url = "2"
 signal-hook = "0.3"
diff --git a/sources/updater/updog/src/main.rs b/sources/updater/updog/src/main.rs
index dbbc291ceae..ce2d7f36e4c 100644
--- a/sources/updater/updog/src/main.rs
+++ b/sources/updater/updog/src/main.rs
@@ -914,8 +914,12 @@ mod tests {
         // Two waves; the 1st wave that starts immediately, and the final wave which starts in one hour
         let time = Utc::now();
         update.waves.insert(0, time);
-        update.waves.insert(1024, time + TestDuration::hours(1));
-        update.waves.insert(2048, time + TestDuration::hours(1));
+        update
+            .waves
+            .insert(1024, time + TestDuration::try_hours(1).unwrap());
+        update
+            .waves
+            .insert(2048, time + TestDuration::try_hours(1).unwrap());
         manifest.updates.push(update);
 
         assert!(
diff --git a/sources/xfscli/Cargo.toml b/sources/xfscli/Cargo.toml
index 5a249003ee2..c23d57646bf 100644
--- a/sources/xfscli/Cargo.toml
+++ b/sources/xfscli/Cargo.toml
@@ -19,4 +19,4 @@ path = "src/bin/fsck_xfs/main.rs"
 [dependencies]
 argh = "0.1"
 tempfile = "3"
-snafu = "0.7"
+snafu = "0.8"