Re: [PATCH RFC] SUNRPC: Add build option to disable support for insecure enctypes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



LGTM

Acked-by: Simo Sorce <simo@xxxxxxxxxx>

On Tue, 2019-01-15 at 15:18 -0500, Chuck Lever wrote:
> Enable distributions to enforce the rejection of ancient and
> insecure Kerberos enctypes in the kernel's RPCSEC_GSS
> implementation. These are the single-DES encryption types that
> were deprecated in 2012 by RFC 6649.
> 
> Enctypes that were deprecated more recently (by RFC 8429) remain
> fully supported for now because they are still likely to be widely
> used.
> 
> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> ---
>  include/linux/sunrpc/gss_krb5_enctypes.h |   42 +++++++++++++++++++++++++++++-
>  net/sunrpc/Kconfig                       |   16 +++++++++++
>  net/sunrpc/auth_gss/gss_krb5_mech.c      |    2 +
>  3 files changed, 59 insertions(+), 1 deletion(-)
> 
> diff --git a/include/linux/sunrpc/gss_krb5_enctypes.h b/include/linux/sunrpc/gss_krb5_enctypes.h
> index ec6234e..788742d 100644
> --- a/include/linux/sunrpc/gss_krb5_enctypes.h
> +++ b/include/linux/sunrpc/gss_krb5_enctypes.h
> @@ -1,4 +1,44 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
>  /*
> - * Dumb way to share this static piece of information with nfsd
> + * Define the string that exports the set of kernel-supported
> + * Kerberos enctypes. This list is sent via upcall to gssd, and
> + * is also exposed via the nfsd /proc API. The consumers generally
> + * treat this as an ordered list, where the first item in the list
> + * is the most preferred.
> + */
> +
> +#ifndef _LINUX_SUNRPC_GSS_KRB5_ENCTYPES_H
> +#define _LINUX_SUNRPC_GSS_KRB5_ENCTYPES_H
> +
> +#ifdef CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES
> +
> +/*
> + * NB: This list includes encryption types that were deprecated
> + * by RFC 8429 (DES3_CBC_SHA1 and ARCFOUR_HMAC).
> + *
> + * ENCTYPE_AES256_CTS_HMAC_SHA1_96
> + * ENCTYPE_AES128_CTS_HMAC_SHA1_96
> + * ENCTYPE_DES3_CBC_SHA1
> + * ENCTYPE_ARCFOUR_HMAC
> + */
> +#define KRB5_SUPPORTED_ENCTYPES "18,17,16,23"
> +
> +#else	/* CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES */
> +
> +/*
> + * NB: This list includes encryption types that were deprecated
> + * by RFC 6649 and RFC 8429 (DES3_CBC_SHA1 and ARCFOUR_HMAC).
> + *
> + * ENCTYPE_AES256_CTS_HMAC_SHA1_96
> + * ENCTYPE_AES128_CTS_HMAC_SHA1_96
> + * ENCTYPE_DES3_CBC_SHA1
> + * ENCTYPE_ARCFOUR_HMAC
> + * ENCTYPE_DES_CBC_MD5
> + * ENCTYPE_DES_CBC_CRC
> + * ENCTYPE_DES_CBC_MD4
>   */
>  #define KRB5_SUPPORTED_ENCTYPES "18,17,16,23,3,1,2"
> +
> +#endif	/* CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES */
> +
> +#endif	/* _LINUX_SUNRPC_GSS_KRB5_ENCTYPES_H */
> diff --git a/net/sunrpc/Kconfig b/net/sunrpc/Kconfig
> index ac09ca8..83f5617 100644
> --- a/net/sunrpc/Kconfig
> +++ b/net/sunrpc/Kconfig
> @@ -34,6 +34,22 @@ config RPCSEC_GSS_KRB5
>  
>  	  If unsure, say Y.
>  
> +config CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES
> +	bool "Secure RPC: Disable insecure Kerberos encryption types"
> +	depends on RPCSEC_GSS_KRB5
> +	default n
> +	help
> +	  Choose Y here to disable the use of deprecated encryption types
> +	  with the Kerberos version 5 GSS-API mechanism (RFC 1964). The
> +	  deprecated encryption types include DES-CBC-MD5, DES-CBC-CRC,
> +	  and DES-CBC-MD4. These types were deprecated by RFC 6649 because
> +	  they were found to be insecure.
> +
> +	  N is the default because many sites have deployed KDCs and
> +	  keytabs that contain only these deprecated encryption types.
> +	  Choosing Y prevents the use of known-insecure encryption types
> +	  but might result in compatibility problems.
> +
>  config SUNRPC_DEBUG
>  	bool "RPC: Enable dprintk debugging"
>  	depends on SUNRPC && SYSCTL
> diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
> index eab71fc..be31a58 100644
> --- a/net/sunrpc/auth_gss/gss_krb5_mech.c
> +++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
> @@ -53,6 +53,7 @@
>  static struct gss_api_mech gss_kerberos_mech;	/* forward declaration */
>  
>  static const struct gss_krb5_enctype supported_gss_krb5_enctypes[] = {
> +#ifndef CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES
>  	/*
>  	 * DES (All DES enctypes are mapped to the same gss functionality)
>  	 */
> @@ -74,6 +75,7 @@
>  	  .cksumlength = 8,
>  	  .keyed_cksum = 0,
>  	},
> +#endif	/* CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES */
>  	/*
>  	 * RC4-HMAC
>  	 */
> 

-- 
Simo Sorce
Sr. Principal Software Engineer
Red Hat, Inc





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux