Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7e46fb8
lint: add optional openssl usage linter
jasonhernandez Apr 1, 2026
50cfe2b
doc: add openssl-to-rustls migration plan and linter output
jasonhernandez Apr 1, 2026
b1f30c5
doc: update migration plan for FIPS 140-3 compliance mode
jasonhernandez Apr 1, 2026
c6f2ccf
deny: ban non-FIPS crypto crates to prevent compliance gaps
jasonhernandez Apr 1, 2026
c5ce52f
lint: add container FIPS compliance auditor
jasonhernandez Apr 2, 2026
73001a8
doc: add comprehensive FIPS 140-3 compliance report
jasonhernandez Apr 2, 2026
accfc2e
lint: fix copyright header and python formatting
jasonhernandez Apr 2, 2026
8d20957
crypto: unblock rustls and add FIPS feature flag via mz-ore
jasonhernandez Apr 2, 2026
1fa0f67
chore: regenerate Cargo.lock after rebase
jasonhernandez Apr 2, 2026
2f50dcd
deny: add duplicate skip entries for Cargo.lock version bumps
jasonhernandez Apr 2, 2026
f14e817
ci: install Go in CI builder for aws-lc-fips-sys
jasonhernandez Apr 2, 2026
ee2d552
chore: pin uuid to 1.19.0 to match main
jasonhernandez Apr 2, 2026
f50159b
fix: pin os_info, chrono-tz, serde_path_to_error to avoid CI regressions
jasonhernandez Apr 2, 2026
ebeb12b
crypto: swap openssl TLS features to rustls in 3 crates
jasonhernandez Apr 2, 2026
03b3e42
deny: add wrappers and skips for rustls ecosystem deps
jasonhernandez Apr 2, 2026
5ded6ae
environmentd: explicitly enable hyper-openssl client-legacy feature
jasonhernandez Apr 2, 2026
daa4555
deny: add CDLA-Permissive-2.0 to about.toml for webpki-roots
jasonhernandez Apr 2, 2026
dc0ab22
crypto: swap reqwest/hyper-tls to rustls in 3 crates
jasonhernandez Apr 2, 2026
523bc53
doc: update aws-util docs to reflect rustls policy change
jasonhernandez Apr 2, 2026
a67e759
environmentd: explicitly enable hyper-openssl client-legacy feature
jasonhernandez Apr 2, 2026
a172e9c
fix: enable default-https-client for aws-config and pin os_info
jasonhernandez Apr 2, 2026
e2a8aca
adapter: WIP compile-time gating of LD and segment behind telemetry f…
jasonhernandez Apr 2, 2026
e239160
adapter,environmentd,balancerd,ore: compile-time gate telemetry SDKs …
jasonhernandez Apr 2, 2026
9f11afd
doc: document telemetry SDK compile-time exclusion for FIPS
jasonhernandez Apr 2, 2026
b13547d
auth: migrate mz-auth SCRAM-SHA256 crypto from openssl to aws-lc-rs
jasonhernandez Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,602 changes: 1,414 additions & 1,188 deletions Cargo.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions about.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ accepted = [
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"CC0-1.0",
"CDLA-Permissive-2.0",
"0BSD",
"BSD-2-Clause",
"BSD-3-Clause",
Expand Down
14 changes: 14 additions & 0 deletions bin/lint-fips-containers
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
#
# lint-fips-containers -- audit container definitions for FIPS compliance gaps

exec "$(dirname "$0")"/pyactivate -m materialize.cli.lint_fips_containers "$@"
14 changes: 14 additions & 0 deletions bin/lint-openssl
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
#
# lint-openssl -- detect OpenSSL usage across the codebase

exec "$(dirname "$0")"/pyactivate -m materialize.cli.lint_openssl "$@"
6 changes: 6 additions & 0 deletions ci/builder/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,12 @@ RUN gpg --dearmor < nodesource.asc > /etc/apt/keyrings/nodesource.gpg \
&& npm install -g corepack \
&& corepack enable

# Install Go, required by aws-lc-fips-sys to build the FIPS-validated
# BoringSSL module. Activated when cargo builds with --all-features (which
# enables the mz-ore `fips` feature). Go 1.18+ is required.
RUN curl -fsSL https://go.dev/dl/go1.24.2.linux-$ARCH_GO.tar.gz | tar -C /usr/local -xzf -
ENV PATH="/usr/local/go/bin:${PATH}"

RUN curl -fsSL https://github.com/koalaman/shellcheck/releases/download/v0.11.0/shellcheck-v0.11.0.linux.$ARCH_GCC.tar.xz > shellcheck.tar.xz \
&& tar -xJf shellcheck.tar.xz -C /usr/local/bin --strip-components 1 shellcheck-v0.11.0/shellcheck \
&& rm shellcheck.tar.xz \
Expand Down
103 changes: 100 additions & 3 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,17 @@ skip = [
{ name = "hashbrown", version = "0.16.1" },
# aws-lc-rs
{ name = "untrusted", version = "0.7.1" },
# Pulled in by rustls ecosystem
{ name = "base64", version = "0.21.7" },
{ name = "core-foundation", version = "0.9.4" },
{ name = "getrandom", version = "0.3.4" },
{ name = "openssl-probe", version = "0.1.6" },
{ name = "security-framework", version = "2.11.1" },
{ name = "security-framework-sys", version = "2.14.0" },
{ name = "toml_datetime", version = "0.6.11" },
{ name = "toml_edit", version = "0.22.27" },
{ name = "webpki-roots", version = "0.26.11" },
{ name = "winnow", version = "0.7.15" },
]

[[bans.deny]]
Expand Down Expand Up @@ -185,6 +196,7 @@ wrappers = [
"eventsource-client",
"fail",
"globset",
"hyper-rustls",
"launchdarkly-server-sdk",
"launchdarkly-server-sdk-evaluation",
"native-tls",
Expand All @@ -197,6 +209,7 @@ wrappers = [
"rdkafka",
"reqsign",
"reqwest",
"rustls",
"tokio-postgres",
"tokio-tungstenite",
"tracing-log",
Expand All @@ -206,10 +219,93 @@ wrappers = [
"zopfli",
]

# We prefer the system's native TLS or OpenSSL to Rustls, since they are more
# mature and more widely used.
# FIPS 140-3 compliance: all cryptographic operations must use `aws-lc-rs` as
# the single crypto backend. The following crates are not FIPS-validated and
# must not be used for new code. Existing wrappers should be removed as each
# crate is migrated to `aws-lc-rs`. See doc/developer/openssl-to-rustls-migration.md.

# Use `aws_lc_rs::digest` instead.
[[bans.deny]]
name = "sha2"
wrappers = [
# Third-party crates (not under our control).
"aws-sdk-s3",
"aws-sigv4",
"aws-smithy-checksums",
"azure_core",
"mysql_common",
"oauth2",
"pest_meta",
"postgres-protocol",
"reqsign",
"ssh-encoding",
"ssh-key",
# Workspace crates — TODO: migrate to aws-lc-rs and remove.
"mz-adapter",
"mz-avro",
"mz-catalog",
"mz-expr",
"mz-fivetran-destination",
"mz-npm",
"mz-orchestrator-kubernetes",
"mz-orchestratord",
"mz-persist",
"mz-storage",
]

# Use `aws_lc_rs::hmac` instead.
[[bans.deny]]
name = "hmac"
wrappers = [
# Third-party crates.
"aws-sdk-s3",
"aws-sigv4",
"azure_core",
"postgres-protocol",
"reqsign",
# Workspace crates — TODO: migrate to aws-lc-rs and remove.
"mz-expr",
]

# Use `aws_lc_rs::constant_time` instead.
[[bans.deny]]
name = "subtle"
wrappers = [
# Third-party crates.
"digest",
"rustls",
"ssh-key",
# Workspace crates — TODO: migrate to aws-lc-rs and remove.
"mz-expr",
]

# Use `aws_lc_rs` instead of `ring` — ring is not FIPS-validated.
[[bans.deny]]
name = "ring"
wrappers = [
# Third-party crate — TODO: track upstream migration.
"aws-config",
]

# Use `aws_lc_rs::pbkdf2` instead.
[[bans.deny]]
name = "pbkdf2"

# Use `aws_lc_rs::signature::Ed25519KeyPair` instead.
[[bans.deny]]
name = "ed25519-dalek"

# Use `aws_lc_rs::cipher` (AES-CBC) instead.
[[bans.deny]]
name = "aes"

# Use `aws_lc_rs::cipher` instead.
[[bans.deny]]
name = "cbc"

# Use `aws_lc_rs::rsa` instead.
[[bans.deny]]
name = "rustls"
name = "rsa"

# once_cell is going to be added to std, and doesn't use macros
# Unfortunately, its heavily used, so we have lots of exceptions.
Expand Down Expand Up @@ -267,6 +363,7 @@ allow = [
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"CC0-1.0",
"CDLA-Permissive-2.0",
"0BSD",
"BSD-2-Clause",
"BSD-3-Clause",
Expand Down
Loading
Loading