Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jan 2024 17:53:49 -0800
From:      Cy Schubert <Cy.Schubert@cschubert.com>
To:        Alexander Richardson <arichardson@freebsd.org>
Cc:        Cy Schubert <Cy.Schubert@cschubert.com>, Jessica Clarke <jrtc27@freebsd.org>, Shawn Webb <shawn.webb@hardenedbsd.org>, Cy Schubert <cy@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@freebsd.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@freebsd.org>
Subject:   Re: git: 0990136ed175 - main - kerberos5: Mitigate the possibility  of using an old libcrypto
Message-ID:  <20240119015349.7E16A249@slippy.cwsent.com>
In-Reply-To: <CA%2BZ_v8qm=ABncb69ZAxon%2ByUh=ye=9-aDvWRxqcNj8xtEqzroQ@mail.gmail.com>
References:  <202401181523.40IFNvXI077592@gitrepo.freebsd.org>  <D89E55DF-846D-44FA-9287-0FFED7B08C2C@freebsd.org>  <kicsvwuaptgfe2y5krflx35smstai6siea4rl7ycyrqdkawrxt@rqobtpgi257u>  <973524D3-FCB2-47E1-B04F-BB42E18550C5@freebsd.org>  <20240118175553.9CC5E19B@slippy.cwsent.com> <CA%2BZ_v8qm=ABncb69ZAxon%2ByUh=ye=9-aDvWRxqcNj8xtEqzroQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message <CA+Z_v8qm=ABncb69ZAxon+yUh=ye=9-aDvWRxqcNj8xtEqzroQ@mail.gmail.c
om>
, Alexander Richardson writes:
> On Thu, 18 Jan 2024 at 10:06, Cy Schubert <Cy.Schubert@cschubert.com> wrote:
> >
> > In message <973524D3-FCB2-47E1-B04F-BB42E18550C5@freebsd.org>, Jessica
> > Clarke w
> > rites:
> > > On 18 Jan 2024, at 17:35, Shawn Webb <shawn.webb@hardenedbsd.org> wrote:
> > > >=20
> > > > On Thu, Jan 18, 2024 at 05:29:47PM +0000, Jessica Clarke wrote:
> > > >> On 18 Jan 2024, at 15:23, Cy Schubert <cy@FreeBSD.org> wrote:
> > > >>>=20
> > > >>> The branch main has been updated by cy:
> > > >>>=20
> > > >>> URL: =
> > > https://cgit.FreeBSD.org/src/commit/?id=3D0990136ed1753ac7837206f9c5f4b83
> c=
> > > cff6c405
> > > >>>=20
> > > >>> commit 0990136ed1753ac7837206f9c5f4b83ccff6c405
> > > >>> Author:     Cy Schubert <cy@FreeBSD.org>
> > > >>> AuthorDate: 2024-01-18 08:22:20 +0000
> > > >>> Commit:     Cy Schubert <cy@FreeBSD.org>
> > > >>> CommitDate: 2024-01-18 15:12:14 +0000
> > > >>>=20
> > > >>>   kerberos5: Mitigate the possibility of using an old libcrypto
> > > >>>=20
> > > >>>   By using the full library name (libcrypto.so.30) we avoid the =
> > > exposure
> > > >>>   of using an old, possibly vulnerable, library.
> > > >>>=20
> > > >>>   Reported by:            jrtc27
> > > >>>   MFC after:              3 days
> > > >>>   X-MFC with:             476d63e091c2
> > > >>>   Fixes:                  476d63e091c2
> > > >>> ---
> > > >>> kerberos5/lib/libroken/fbsd_ossl_provider_load.c | 3 ++-
> > > >>> 1 file changed, 2 insertions(+), 1 deletion(-)
> > > >>>=20
> > > >>> diff --git a/kerberos5/lib/libroken/fbsd_ossl_provider_load.c =
> > > b/kerberos5/lib/libroken/fbsd_ossl_provider_load.c
> > > >>> index 497b32124f96..2328041bc166 100644
> > > >>> --- a/kerberos5/lib/libroken/fbsd_ossl_provider_load.c
> > > >>> +++ b/kerberos5/lib/libroken/fbsd_ossl_provider_load.c
> > > >>> @@ -5,6 +5,7 @@
> > > >>> #include <openssl/provider.h>
> > > >>>=20
> > > >>> #if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >=3D 3)
> > > >>> +#define CRYPTO_LIBRARY "/lib/libcrypto.so.30"
> > > >>=20
> > > >> This still assumes the native ABI is in use, i.e. doesn=E2=80=99t =
> > > account for
> > > >> libcompat. Can we please just drop the directory, or if it=E2=80=99s =
> > > really
> > > >> needed for some reason at least handle the libcompat case?
> > > >=20
> > > > Using relative paths might carry a potential security risk if the
> > > > LD_LIBRARY_PATH environment variable is set to an attacker-controlled
> > > > directory.
> > >
> > > That=E2=80=99s true for direct linking too, yet we don=E2=80=99t =
> > > hard-code everything
> > > everywhere there. What=E2=80=99s special about dlopen?
> >
> > The reason for dlopen is to avoid building libcrypto during pre-build.
> > libcrypto requires TARGET_ENDIANNESS to be defined. It is not defined when
> > cross building from Linux or MacOS.
> >
> > TARGET_ENDIANNESS is defined by bsd.endian.mk, which state:
> >
> > # During bootstrapping on !FreeBSD OSes, we need to define some value.
> > Short of
> > # having an exhaustive list for all variants of Linux and MacOS we simply
> > do not
> > # set TARGET_ENDIANNESS and poison the other variables. They should be
> > unused
> > # during the bootstrap phases (apart from one place that's adequately
> > protected
> > # in bsd.compiler.mk) where we're building the bootstrap tools.
> >
> > To avoid this requirement during we let libroken build as usual during
> > prebuild and load libcrypto, which is built later, thereby circumventing
> > the prebuild requirement and avoiding redesigning our prebuild to define
> > TARGET_ENDIANNESS for non-FreeBSD OSes.
>
> If the problem is just missing TARGET_ENDIANESS, we can add something like
> TARGET_ENDIANESS!=echo "__BYTE_ORDER__" | ${CC} -E -P -
> for the bootstrapping case. But it seems to me that we just need to define th
> e
> L_ENDIAN/B_ENDIAN macros, can't that be done using the compiler-provided
> macros (or endian.h) from some internal config header instead (or even
> a new file injected via -include)?

That would be a solution to making it possible for TARGET_ENDIANNESS 
consumers to
build during prebuild.

I can submit a phabricator review if people want.


-- 
Cheers,
Cy Schubert <Cy.Schubert@cschubert.com>
FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy@nwtime.org>    Web:  https://nwtime.org

			e^(i*pi)+1=0





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20240119015349.7E16A249>