diff options
author | Sam James <sam@gentoo.org> | 2023-02-09 04:19:34 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-02-09 04:19:44 +0000 |
commit | 8ea98796eb18ab898c602e5f4c447eb310090435 (patch) | |
tree | 5633969741de3ca0449fd48d16fa06e70eed697c /app-crypt | |
parent | app-shells/bash: fix configure w/ clang 16 (diff) | |
download | gentoo-8ea98796eb18ab898c602e5f4c447eb310090435.tar.gz gentoo-8ea98796eb18ab898c602e5f4c447eb310090435.tar.bz2 gentoo-8ea98796eb18ab898c602e5f4c447eb310090435.zip |
app-crypt/heimdal: fix CVE-2022-45142
Bug: https://bugs.gentoo.org/893722
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'app-crypt')
-rw-r--r-- | app-crypt/heimdal/files/heimdal-7.8.0-CVE-2022-45142.patch | 36 | ||||
-rw-r--r-- | app-crypt/heimdal/heimdal-7.8.0-r1.ebuild | 187 |
2 files changed, 223 insertions, 0 deletions
diff --git a/app-crypt/heimdal/files/heimdal-7.8.0-CVE-2022-45142.patch b/app-crypt/heimdal/files/heimdal-7.8.0-CVE-2022-45142.patch new file mode 100644 index 000000000000..dad75df4b3b8 --- /dev/null +++ b/app-crypt/heimdal/files/heimdal-7.8.0-CVE-2022-45142.patch @@ -0,0 +1,36 @@ +https://bugs.gentoo.org/893722 +https://www.openwall.com/lists/oss-security/2023/02/08/1 + +From: Helmut Grohne <helmut@...divi.de> +Subject: [PATCH v3] CVE-2022-45142: gsskrb5: fix accidental logic inversions + +The referenced commit attempted to fix miscompilations with gcc-9 and +gcc-10 by changing `memcmp(...)` to `memcmp(...) != 0`. Unfortunately, +it also inverted the result of the comparison in two occasions. This +inversion happened during backporting the patch to 7.7.1 and 7.8.0. + +Fixes: f6edaafcfefd ("gsskrb5: CVE-2022-3437 Use constant-time memcmp() + for arcfour unwrap") +Signed-off-by: Helmut Grohne <helmut@...divi.de> +--- a/lib/gssapi/krb5/arcfour.c ++++ b/lib/gssapi/krb5/arcfour.c +@@ -365,7 +365,7 @@ _gssapi_verify_mic_arcfour(OM_uint32 * minor_status, + return GSS_S_FAILURE; + } + +- cmp = (ct_memcmp(cksum_data, p + 8, 8) == 0); ++ cmp = (ct_memcmp(cksum_data, p + 8, 8) != 0); + if (cmp) { + *minor_status = 0; + return GSS_S_BAD_MIC; +@@ -730,7 +730,7 @@ OM_uint32 _gssapi_unwrap_arcfour(OM_uint32 *minor_status, + return GSS_S_FAILURE; + } + +- cmp = (ct_memcmp(cksum_data, p0 + 16, 8) == 0); /* SGN_CKSUM */ ++ cmp = (ct_memcmp(cksum_data, p0 + 16, 8) != 0); /* SGN_CKSUM */ + if (cmp) { + _gsskrb5_release_buffer(minor_status, output_message_buffer); + *minor_status = 0; +-- +2.38.1 diff --git a/app-crypt/heimdal/heimdal-7.8.0-r1.ebuild b/app-crypt/heimdal/heimdal-7.8.0-r1.ebuild new file mode 100644 index 000000000000..7852376dbebc --- /dev/null +++ b/app-crypt/heimdal/heimdal-7.8.0-r1.ebuild @@ -0,0 +1,187 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +VIRTUALX_REQUIRED="manual" + +inherit autotools db-use multilib-minimal python-any-r1 virtualx flag-o-matic + +MY_P="${P}" +DESCRIPTION="Kerberos 5 implementation from KTH" +HOMEPAGE="https://www.heimdal.software/" +SRC_URI="https://github.com/${PN}/${PN}/releases/download/${P}/${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="afs +berkdb caps gdbm hdb-ldap +lmdb otp selinux ssl static-libs test X" +RESTRICT="!test? ( test )" + +CDEPEND=" + virtual/libcrypt:=[${MULTILIB_USEDEP}] + ssl? ( + >=dev-libs/openssl-1.0.1h-r2:0=[${MULTILIB_USEDEP}] + ) + berkdb? ( >=sys-libs/db-4.8.30-r1:*[${MULTILIB_USEDEP}] ) + gdbm? ( >=sys-libs/gdbm-1.10-r1:=[${MULTILIB_USEDEP}] ) + lmdb? ( dev-db/lmdb:= ) + caps? ( sys-libs/libcap-ng ) + >=dev-db/sqlite-3.8.2[${MULTILIB_USEDEP}] + >=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}] + sys-libs/ncurses:0= + >=sys-libs/readline-6.2_p5-r1:0=[${MULTILIB_USEDEP}] + afs? ( net-fs/openafs ) + hdb-ldap? ( >=net-nds/openldap-2.3.0:= ) + X? ( + x11-libs/libX11 + x11-libs/libXau + x11-libs/libXt + ) + !!app-crypt/mit-krb5 + !!app-crypt/mit-krb5-appl" + +DEPEND="${CDEPEND} + ${PYTHON_DEPS} + dev-perl/JSON + virtual/pkgconfig + sys-apps/texinfo + >=sys-devel/autoconf-2.62 + test? ( X? ( ${VIRTUALX_DEPEND} ) )" + +RDEPEND="${CDEPEND} + selinux? ( sec-policy/selinux-kerberos )" + +MULTILIB_WRAPPED_HEADERS=( + /usr/include/krb5-types.h + /usr/include/cms_asn1.h + /usr/include/digest_asn1.h + /usr/include/hdb_asn1.h + /usr/include/krb5_asn1.h + /usr/include/pkcs12_asn1.h + /usr/include/pkinit_asn1.h + /usr/include/rfc2459_asn1.h +) + +MULTILIB_CHOST_TOOLS=( + /usr/bin/krb5-config +) + +PATCHES=( + "${FILESDIR}/heimdal_disable-check-iprop.patch" + "${FILESDIR}/heimdal_tinfo.patch" + "${FILESDIR}/heimdal_build-headers-before-use.patch" + "${FILESDIR}/heimdal_fix-db60.patch" + "${FILESDIR}/heimdal-7.8.0-CVE-2022-45142.patch" +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + # QA + append-flags -fno-strict-aliasing + + multilib-minimal_src_configure +} + +multilib_src_configure() { + local myeconfargs=( + --enable-kcm + --disable-osfc2 + --enable-shared + --with-libintl="${EPREFIX}"/usr + --with-readline="${EPREFIX}"/usr + --with-sqlite3="${EPREFIX}"/usr + --libexecdir="${EPREFIX}"/usr/sbin + --enable-pthread-support + --enable-kx509 + --enable-pk-init + --with-ipv6 + $(use_enable afs afs-support) + $(use_enable gdbm ndbm-db) + $(use_enable lmdb mdb-db) + $(use_enable otp) + $(use_enable static-libs static) + $(multilib_native_use_with caps capng) + $(multilib_native_use_with hdb-ldap openldap "${EPREFIX}"/usr) + $(use_with ssl openssl "${EPREFIX}"/usr) + $(multilib_native_use_with X x) + ) + if use berkdb; then + myeconfargs+=( + --with-berkeley-db + --with-berkeley-db-include="$(db_includedir)" + ) + else + myeconfargs+=( + --without-berkeley-db + ) + fi + + CONFIG_SHELL="${BROOT}"/bin/bash ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C include + emake -C lib + emake -C kdc + emake -C tools + emake -C tests/plugin + fi +} + +multilib_src_test() { + multilib_is_native_abi && emake -j1 check +} + +multilib_src_install() { + if multilib_is_native_abi; then + INSTALL_CATPAGES="no" emake DESTDIR="${D}" install + else + emake -C include DESTDIR="${D}" install + emake -C lib DESTDIR="${D}" install + emake -C kdc DESTDIR="${D}" install + emake -C tools DESTDIR="${D}" install + emake -C tests/plugin DESTDIR="${D}" install + fi +} + +multilib_src_install_all() { + dodoc ChangeLog* README NEWS TODO + + # client rename + mv "${ED}"/usr/share/man/man1/{,k}su.1 + mv "${ED}"/usr/bin/{,k}su + + newinitd "${FILESDIR}"/heimdal-kdc.initd-r2 heimdal-kdc + newinitd "${FILESDIR}"/heimdal-kadmind.initd-r2 heimdal-kadmind + newinitd "${FILESDIR}"/heimdal-kpasswdd.initd-r2 heimdal-kpasswdd + newinitd "${FILESDIR}"/heimdal-kcm.initd-r1 heimdal-kcm + + newconfd "${FILESDIR}"/heimdal-kdc.confd heimdal-kdc + newconfd "${FILESDIR}"/heimdal-kadmind.confd heimdal-kadmind + newconfd "${FILESDIR}"/heimdal-kpasswdd.confd heimdal-kpasswdd + newconfd "${FILESDIR}"/heimdal-kcm.confd heimdal-kcm + + insinto /etc + newins "${S}"/krb5.conf krb5.conf.example + + if use hdb-ldap; then + insinto /etc/openldap/schema + doins "${S}/lib/hdb/hdb.schema" + fi + + if ! use static-libs ; then + find "${ED}" -name "*.la" -delete || die + fi + + # default database dir + keepdir /var/heimdal +} |