linux/include/crypto
Eric Biggers 2f204fe718 crypto: af_alg - Add af_alg_restrict sysctl, defaulting to 1
AF_ALG is a frequent source of vulnerabilities and a maintenance
nightmare.  It exposes far more functionality to userspace than ever
should have been exposed, especially to unprivileged processes.  Recent
exploits have targeted kernel internal implementation details like
"authencesn" that have zero use case for userspace access.

Fortunately, AF_ALG is rarely used in practice, as userspace crypto
libraries exist.  And when it is used, only some functionality is known
to be used, and many users are known to hold capabilities already.
iwd for example requires CAP_NET_ADMIN and has a known algorithm list
(https://lore.kernel.org/linux-crypto/bcbbef00-5881-421b-8892-7be6c04b832d@gmail.com/).

Thus, let's restrict the set of allowed algorithms by default, depending
on the capabilities held.

Add a sysctl /proc/sys/crypto/af_alg_restrict with meaning:

    0: unrestricted
    1: limited functionality
    2: completely disabled

Set the default value to 1, which enables an algorithm allowlist for
unprivileged processes and a slightly longer allowlist for privileged
processes.

Note that the list may be tweaked in the future.  However, the common
use cases such as iwd and bluez are taken into account already.  I've
tested that iwd still works with the default value of 1.

Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2026-07-05 13:27:15 +08:00
..
internal Networking changes for 7.2. 2026-06-17 08:17:00 +01:00
acompress.h crypto: acomp - repair kernel-doc warnings 2026-03-07 14:12:20 +09:00
aead.h crypto: aead - Add support for on-stack AEAD req allocation 2025-10-31 17:43:56 +08:00
aes-cbc-macs.h lib/crypto: aes: Add support for CBC-based MACs 2026-03-09 13:27:20 -07:00
aes.h lib/crypto: arm64/aes: Remove obsolete chunking logic 2026-04-01 13:02:09 -07:00
akcipher.h crypto: akcipher - Drop sign/verify operations 2024-10-05 13:22:04 +08:00
algapi.h Revert "crypto: scatterwalk - Move skcipher walk and use it for memcpy_sglist" 2025-11-22 10:04:50 +08:00
arc4.h
aria.h crypto: Prepare to move crypto_tfm_ctx 2022-12-02 18:12:40 +08:00
authenc.h crypto: Add 'krb5enc' hash and cipher AEAD algorithm 2025-03-02 21:39:34 +00:00
b128ops.h cyrpto/b128ops: Remove struct u128 2023-06-05 09:36:35 +02:00
blake2b.h crypto: blake2b - Reimplement using library API 2025-10-29 22:04:24 -07:00
blake2s.h lib/crypto: blake2s: Document the BLAKE2s library API 2025-10-29 22:04:24 -07:00
blowfish.h
cast_common.h
cast5.h
cast6.h crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
chacha.h lib/crypto: chacha: Add at_least decoration to fixed-size array params 2025-11-23 12:19:47 -08:00
chacha20poly1305.h lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit 2026-03-30 12:35:30 -07:00
cryptd.h crypto: cryptd - Remove unused functions 2026-03-27 18:52:44 +09:00
ctr.h crypto: ctr - Remove unnecessary header inclusions 2025-04-16 15:16:21 +08:00
curve25519.h lib/crypto: curve25519: Add at_least decoration to fixed-size array params 2025-11-23 12:19:47 -08:00
des.h crypto: des - fix all kernel-doc warnings 2026-03-07 14:12:20 +09:00
dh.h crypto: dh - split out deserialization code from crypto_dh_decode() 2022-03-03 10:47:50 +12:00
ecc_curve.h crypto: ecc - Add nbits field to ecc_curve structure 2024-04-12 15:07:52 +08:00
ecdh.h crypto: ecc - Add NIST P521 curve parameters 2024-04-12 15:07:52 +08:00
engine.h crypto: engine - remove request batching support 2025-07-18 20:52:00 +10:00
gcm.h lib/crypto: aesgcm: Use GHASH library API 2026-03-23 16:44:30 -07:00
gf128hash.h lib/crypto: gf128hash: Remove unused content from ghash.h 2026-03-23 16:44:30 -07:00
gf128mul.h lib/crypto: gf128mul: Remove unused 4k_lle functions 2026-03-23 16:44:30 -07:00
ghash.h lib/crypto: gf128hash: Remove unused content from ghash.h 2026-03-23 16:44:30 -07:00
hash_info.h crypto: FIPS 202 SHA-3 register in hash info for IMA 2023-10-27 18:04:30 +08:00
hash.h crypto: hash - Remove support for cloning hash tfms 2026-05-28 17:45:45 -07:00
hmac.h
if_alg.h crypto: af_alg - Add af_alg_restrict sysctl, defaulting to 1 2026-07-05 13:27:15 +08:00
kdf_sp800108.h crypto: kdf - add SP800-108 counter key derivation function 2021-11-26 16:25:17 +11:00
kpp.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
krb5.h crypto/krb5, rxrpc: Fix lack of pre-decrypt/pre-verify length checks 2026-05-20 16:36:45 -07:00
md5.h lib/crypto: md5: Add at_least decoration to fixed-size array params 2025-11-23 12:19:47 -08:00
mldsa.h lib/crypto: mldsa: Clarify the documentation for mldsa_verify() slightly 2026-02-03 19:28:51 -08:00
nh.h lib/crypto: nh: Add NH library 2026-01-12 11:07:49 -08:00
null.h crypto: null - remove the default null skcipher 2025-05-12 13:32:53 +08:00
padlock.h
pcrypt.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
pkcs7.h PKCS#7: Introduce pkcs7_get_digest() 2019-08-05 18:40:19 -04:00
poly1305.h lib/crypto: poly1305: Add at_least decoration to fixed-size array params 2025-11-23 12:19:47 -08:00
public_key.h pkcs7: Allow the signing algo to do whatever digestion it wants itself 2026-01-30 11:33:19 +00:00
rng.h crypto: rng - Make crypto_stdrng_get_bytes() use normal RNG in non-FIPS mode 2026-04-03 08:56:12 +08:00
scatterwalk.h Revert "crypto: scatterwalk - Move skcipher walk and use it for memcpy_sglist" 2025-11-22 10:04:50 +08:00
serpent.h crypto: x86 - Regularize glue function prototypes 2019-12-11 16:36:54 +08:00
sha1.h lib/crypto: sha1: Remove low-level functions from API 2026-01-27 15:47:41 -08:00
sha2.h lib/crypto: sha2: Add at_least decoration to fixed-size array params 2025-11-23 12:19:47 -08:00
sha3.h crypto: sha3 - Reimplement using library API 2025-11-05 20:30:51 -08:00
sig.h crypto: ecdsa - Fix NIST P521 key size reported by KEYCTL_PKEY_QUERY 2025-04-16 15:16:21 +08:00
skcipher.h crypto: add missing kernel-doc for anonymous union members 2026-03-22 11:17:59 +09:00
sm3.h crypto: sm3 - Remove 'struct sm3_state' 2026-03-23 17:50:59 -07:00
sm4.h crypto: sm4 - export sm4 constant arrays 2022-04-08 16:12:46 +08:00
streebog.h crypto: streebog - Use API partial block handling 2025-05-05 18:20:44 +08:00
twofish.h crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
utils.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
xts.h crypto: xts - drop xts_check_key() 2023-01-06 17:15:47 +08:00