]> git.ipfire.org Git - thirdparty/strongswan.git/log
thirdparty/strongswan.git
2 months agoMerge branch 'android-managed-configurations' android-2.5.0
Tobias Brunner [Thu, 22 Feb 2024 12:37:01 +0000 (13:37 +0100)] 
Merge branch 'android-managed-configurations'

This adds support for managed configurations via enterprise mobility
management (EMM) systems. Also changes details regarding the SQL data
source.

2 months agoandroid: New release after adding support for managed configurations
Tobias Brunner [Wed, 21 Feb 2024 07:29:54 +0000 (08:29 +0100)] 
android: New release after adding support for managed configurations

2 months agoandroid: Add translations for managed configuration strings
Tobias Brunner [Tue, 30 Jan 2024 17:57:43 +0000 (18:57 +0100)] 
android: Add translations for managed configuration strings

Not actually translating anything, but making the linter happy.

2 months agoandroid: Update managed certificates if config changes
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:24 +0000 (15:37 +0100)] 
android: Update managed certificates if config changes

2 months agoandroid: Add manager for managed user certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:24 +0000 (15:37 +0100)] 
android: Add manager for managed user certificates

This can be used to install, replace or delete currently installed user
certificates based on the app's current managed configuration.

2 months agoandroid: Add manager for managed trusted certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:24 +0000 (15:37 +0100)] 
android: Add manager for managed trusted certificates

This is used to install, replace or delete currently installed trusted
certificates based on the app's current managed configuration.

Certificates that are shared between multiple profiles are protected
and not uninstalled if a profile that uses it remains.

2 months agoandroid: Add utility class to determine differences in two lists of objects
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:24 +0000 (15:37 +0100)] 
android: Add utility class to determine differences in two lists of objects

This allows determining the difference between two lists in the form of
inserts, updates and deletes (and unchanged elements).

2 months agoandroid: Add repository for managed user certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add repository for managed user certificates

2 months agoandroid: Add repository for managed trusted certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add repository for managed trusted certificates

2 months agoandroid: Add base repository for installed managed certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add base repository for installed managed certificates

2 months agoandroid: Add installer for managed user certificates/keys
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add installer for managed user certificates/keys

This installs the configured user certificate into Android's key store
using the DevicePolicyManager.

This is only accessible if the app is installed on an enrolled device and
has been granted the CERT_INSTALL delegate scope.

2 months agoandroid: Add installer for managed trusted certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add installer for managed trusted certificates

This installs a configured CA or server certificate into the app's local
key store.

2 months agoandroid: Add database migration for managed certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add database migration for managed certificates

2 months agoandroid: Add trusted and user certificates to ManagedVpnProfile
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add trusted and user certificates to ManagedVpnProfile

2 months agoandroid: Add entities for CA/server and user certificates
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add entities for CA/server and user certificates

2 months agoandroid: Add utility that parses a PKCS#12 container and extracts a KeyPair
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add utility that parses a PKCS#12 container and extracts a KeyPair

2 months agoandroid: Add utility that converts a Base64 string to a X509Certificate
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add utility that converts a Base64 string to a X509Certificate

2 months agoandroid: Add utility class that pairs a certificate with a private key
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add utility class that pairs a certificate with a private key

2 months agoandroid: Add password for client certificate to managed config
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Add password for client certificate to managed config

2 months agoandroid: Provide global database helper instance
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Provide global database helper instance

2 months agoandroid: Extend database helper with table definition
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:23 +0000 (15:37 +0100)] 
android: Extend database helper with table definition

This simplifies database migration.

2 months agoandroid: Move database helper into separate class
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Move database helper into separate class

Reduce strong coupling between database helper and VPN profiles, to
prepare for the addition of other tables.

2 months agoandroid: Hide unmanaged profiles by default
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Hide unmanaged profiles by default

Such profiles could exist if a user already had strongSwan installed.

2 months agoandroid: Disable access to settings depending on managed configuration
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Disable access to settings depending on managed configuration

2 months agoandroid: Hide menu items depending on managed configuration
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Hide menu items depending on managed configuration

Hide and disable menu items when disabled by the managed configuration.

2 months agoandroid: Add data source for managed VPN profiles
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add data source for managed VPN profiles

Include the managed VPN profile data source in the profile source,
to show profiles from both sources in the UI.

2 months agoandroid: Expose static instance for Application object
Tobias Brunner [Fri, 19 Jan 2024 17:29:20 +0000 (18:29 +0100)] 
android: Expose static instance for Application object

While it seems to be possible to cast Context.getApplicationContext()
to the application class, there really is no documented reason why that
should actually be the same object.

2 months agoandroid: Expose managed configuration globally and notify listeners on changes
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Expose managed configuration globally and notify listeners on changes

Triggers a broadcast if the configuration changed and updates the
profile list accordingly (previously only handled removal of multiple
profiles).

If the app resumes, the configuration is also loaded and listeners are
notified in case the config was updated while the app was in the
background.

2 months agoandroid: Add ManagedConfigurationService and related classes
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add ManagedConfigurationService and related classes

Add service that provides access to managed configurations.

2 months agoandroid: Add managed_configuration.xml
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add managed_configuration.xml

Add managed configuration and associated English strings.

2 months agoandroid: Make VpnType#fromIdentifier null-safe
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:24 +0000 (15:37 +0100)] 
android: Make VpnType#fromIdentifier null-safe

2 months agoandroid: Add data source to VpnProfile
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add data source to VpnProfile

2 months agoandroid: Show warning message for read-only profiles in detail view
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Show warning message for read-only profiles in detail view

Show a message explaining that a managed profile can't be edited in
its detail view.

2 months agoandroid: Add label to read-only profiles in list
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Add label to read-only profiles in list

Show "Managed profile" in the list of VPN profiles, to make it
immediately obvious that a profile is managed/read-only.

2 months agoandroid: Disable copy/delete for read-only profiles
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Disable copy/delete for read-only profiles

If a profile is marked as read-only, do not allow users to copy or
delete the profile.

2 months agoandroid: Make selected apps read-only
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Make selected apps read-only

Also prevent users from changing selected apps in read-only VPN profiles.

2 months agoandroid: Prevent editing of read-only profiles
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Prevent editing of read-only profiles

Do not allow users to edit read-only VPN profiles, with the exception of
the profile's password.

2 months agoandroid: Add read-only flag to VpnProfile
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add read-only flag to VpnProfile

2 months agoandroid: Always use UUID to access profiles
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Always use UUID to access profiles

Use the UUID rather than the ID to ensure there are no conflicts between
profiles from the database and managed profiles.

2 months agoandroid: Fix version number on port column
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:22 +0000 (15:37 +0100)] 
android: Fix version number on port column

The onUpgrade method creates this column for database version 6. Update
the DbColumn definition to match that version number.

2 months agoandroid: Add interface for VPN data source
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Add interface for VPN data source

Change VPN profile source to an interface. Preparation to allow managed
configurations as a second source.

2 months agoandroid: Use try-with-resources for IO
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Use try-with-resources for IO

2 months agoandroid: Remove unnecessary @TargetApi
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Remove unnecessary @TargetApi

The minSdkVersion is 21, remove unnecessary @TargetApi annotations.

2 months agoandroid: Remove unnecessary API checks
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Remove unnecessary API checks

The minSdkVersion is 21, remove unnecessary checks and code that target
older API versions.

2 months agoandroid: Remove AndroidX legacy support
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:21 +0000 (15:37 +0100)] 
android: Remove AndroidX legacy support

2 months agoAdd ._.DS_Store to .gitignore
Markus Pfeiffer [Tue, 21 Nov 2023 14:37:20 +0000 (15:37 +0100)] 
Add ._.DS_Store to .gitignore

2 months agopki: Added key and cert handles to --ocsp command 2090/head
Andreas Steffen [Wed, 7 Feb 2024 06:55:10 +0000 (07:55 +0100)] 
pki: Added key and cert handles to --ocsp command

2 months agopkcs11: Support RSA-PSS signatures 2082/head
Andreas Steffen [Fri, 26 Jan 2024 18:58:23 +0000 (19:58 +0100)] 
pkcs11: Support RSA-PSS signatures

2 months agopkcs11: Updated pkcs11.h header file based on OpenSC
Andreas Steffen [Thu, 25 Jan 2024 17:51:51 +0000 (18:51 +0100)] 
pkcs11: Updated pkcs11.h header file based on OpenSC

2 months agoopenssl: Condition out unsupported curves for AWS-LC
Gerardo Ravago [Tue, 20 Feb 2024 16:54:01 +0000 (11:54 -0500)] 
openssl: Condition out unsupported curves for AWS-LC

AWS-LC lacks support for a number of elliptic curve algorithms so this
adds some conditional macros to avoid registering the related plugin
features. Support for curves ed448 and x448 is completely absent and are
not planned for implementation as they are no longer recommended for use.
While ed25519 is supported by the library, a single missing API for
ASN.1 DER encoding of its private keys is missing which prevents its
use in strongSwan. Future work may remove this limitation, but for now
we will disable the functionality.

Closes strongswan/strongswan#2109

2 months agoopenssl: Add conditional macros around SHA_CTX for AWS-LC
Gerardo Ravago [Thu, 15 Feb 2024 15:42:36 +0000 (10:42 -0500)] 
openssl: Add conditional macros around SHA_CTX for AWS-LC

AWS-LC is a BoringSSL-based libcrypto implementation. SHA_CTX is declared with
the hash data specified as an array rather than as a field in upstream OpenSSL.
Since AWS-LC builds against C99, we are unable to handle this with anonymous
unions like BoringSSL. The workaround I propose is to add these conditional
macros around the accessors within openssl_sha1_prf. After this change,
everything builds successfully with AWS-LC headers.

Closes strongswan/strongswan#2103

2 months agopf-handler: Always free the object even if no socket has been opened yet
Tobias Brunner [Mon, 19 Feb 2024 08:49:08 +0000 (09:49 +0100)] 
pf-handler: Always free the object even if no socket has been opened yet

2 months agodhcp: Port the plugin to FreeBSD/macOS
Dan James [Fri, 24 Nov 2023 15:54:04 +0000 (10:54 -0500)] 
dhcp: Port the plugin to FreeBSD/macOS

This also refactors the BPF handling so it can be shared between the
dhcp and farp plugins.  The latter is adapted accordingly.

Closes strongswan/strongswan#2047

Co-authored-by: Tobias Brunner <tobias@strongswan.org>
2 months agogithub: Use new property to pass token for sonarcloud
Tobias Brunner [Fri, 16 Feb 2024 13:48:44 +0000 (14:48 +0100)] 
github: Use new property to pass token for sonarcloud

sonar.login is deprecated.

2 months agoMerge branch 'ref-overflows'
Tobias Brunner [Fri, 16 Feb 2024 13:04:45 +0000 (14:04 +0100)] 
Merge branch 'ref-overflows'

Different users in the strongSwan code base use the refcount helpers to
allocate incrementing unique values. So far the risk of overflows for
these unsigned 32-bit values has been considered mostly theoretical, as
it requires a longer uptime and a lot of activity to hit such an overflow.

At least for the Netlink sequence numbers, this is not only theoretical,
though, and an overflow has been hit on a productive setup. Unfortunately,
the consequences are rather unpleasant, as the response with a zero
sequence number can't be matched to the request. This results in the
offending thread to block indefinitely while holding the Netlink mutex.

So add a helper to allocate incrementing unique identifiers that checks
for overflows and never returns 0. Use it for Netlink sequence numbers
and some other potential users affected, namely those allocating
IKE_SA/CHILD_SA unique identifiers, marks and interface identifiers.

Closes strongswan/strongswan#2062

2 months agochild-sa: Handle refcount overflow for unique mark/if_id allocation gracefully
Martin Willi [Fri, 16 Feb 2024 09:59:11 +0000 (10:59 +0100)] 
child-sa: Handle refcount overflow for unique mark/if_id allocation gracefully

The refcount_t for allocating unique marks and interface IDs may overflow or
hit the special value for unique marks/if_ids, in the worst case not setting it
on CHILD_SAs that should have one.

As (potentially two) marks/if_ids are allocated only for newly created CHILD_SAs,
but not for rekeying, this not very likely. Still, if a setup uses
aggressive re-authentication and or re-creates CHILD_SAs every minute,
a gateway with 100'000 tunnels may hit the overflow within a month uptime.

2 months agochild-sa: Move unique mark allocation to a separate helper function
Martin Willi [Fri, 16 Feb 2024 09:42:43 +0000 (10:42 +0100)] 
child-sa: Move unique mark allocation to a separate helper function

This aligns the code with unique interface ID allocation, which uses a helper
function for the same purpose and mechanic as well.

2 months agochild-sa: Handle CHILD_SA unique identifier refcount overflow gracefully
Martin Willi [Wed, 10 Jan 2024 16:31:49 +0000 (17:31 +0100)] 
child-sa: Handle CHILD_SA unique identifier refcount overflow gracefully

CHILD_SA unique identifier allocation starts at 1. If the counter overflows,
a unique ID of 0 is assigned to an CHILD_SA, which may have unclear
consequences.

Overflowing the unique ID counter is theoretical for most setups, but on
a Gateway terminating 100'000 tunnels and rekeying CHILD_SAs every 60s
overflows the counter after a month uptime. So avoid a 0 unique identifier
by using ref_get_nonzero().

2 months agoike-sa: Handle IKE_SA unique identifier refcount overflow gracefully
Martin Willi [Wed, 10 Jan 2024 16:27:00 +0000 (17:27 +0100)] 
ike-sa: Handle IKE_SA unique identifier refcount overflow gracefully

IKE_SA unique identifier allocation starts at 1. If the counter overflows,
a unique ID of 0 is assigned to an IKE_SA, which may have unclear consequences.

Overflowing the unique ID counter is theoretical for most setups, but on
a Gateway terminating 100'000 tunnels and rekeying the IKE_SA every 60s
overflows the counter after a month uptime. So avoid a 0 unique identifier
by using ref_get_nonzero().

2 months agokernel-netlink: Handle Netlink sequence number counter overflows gracefully
Martin Willi [Wed, 10 Jan 2024 15:54:17 +0000 (16:54 +0100)] 
kernel-netlink: Handle Netlink sequence number counter overflows gracefully

A refcount variable is used to allocate sequential unique identifiers for
Netlink sequence numbers, subject to overflows. The risk of an overflow
has so far not been considered practical, as it requires 2^32 netlink
requests.

It seems that this issue is not only theoretical. A host with thousands
of tunnels doing aggressive rekeying and/or aggressive status checking
(via vici list-sas) may trigger the overflow after a few weeks uptime.

The consequences are rather devastating: Once the refcount overflows, a
Netlink request is sent with sequence number 0. This request is answered
by the kernel, but can't be matched to the request, resulting in the error:
"received unknown netlink seq 0, ignored". Without Netlink timeouts, the
thread indefinitely waits for a response while holding the Netlink mutex,
bringing all threads to a halt.

So at all costs avoid zero sequence numbers. Also, start at sequence number
1 instead of the arbitrary 201, so the same range is used on start and after
an overflow.

2 months agoatomics: Add a ref_get() variant returning non-zero on overflows
Martin Willi [Wed, 10 Jan 2024 15:38:54 +0000 (16:38 +0100)] 
atomics: Add a ref_get() variant returning non-zero on overflows

This is useful for users using ref_get() for unique identifier allocation,
but the zero value has special meaning.

2 months agoopenssl: Add missing error checking when encoding ED private key
Gerardo Ravago [Tue, 13 Feb 2024 15:24:33 +0000 (10:24 -0500)] 
openssl: Add missing error checking when encoding ED private key

This applies the same logic found in other private key implementations
like that for ECDSA.

Closes strongswan/strongswan#2097

2 months agoauth-cfg: Improve log message for identity constraint mismatch error
Florian Bezannier [Thu, 1 Feb 2024 15:43:35 +0000 (16:43 +0100)] 
auth-cfg: Improve log message for identity constraint mismatch error

Closes strongswan/strongswan#2088

3 months agogithub: Use NDK version in build.gradle to build OpenSSL
Tobias Brunner [Tue, 12 Dec 2023 17:08:05 +0000 (18:08 +0100)] 
github: Use NDK version in build.gradle to build OpenSSL

Also fix the path to the sdkmanager (the old one was removed in the latest
images and the incorrect path caused a weird sudo error) and install
Java 17 as that's necessary for newer versions of the Gradle plugin.

3 months agoandroid: Replace PowerMock with mechanism provided by newer Mockito versions
Tobias Brunner [Tue, 12 Dec 2023 18:41:47 +0000 (19:41 +0100)] 
android: Replace PowerMock with mechanism provided by newer Mockito versions

PowerMock isn't maintained anymore and causes issues with newer Java
versions.  We only used it to mock static methods, which Mockito now
supports as well.  Instead of using the try-with-resources construct,
this uses a @Before and @After method so we don't have to change all the
test methods.

3 months agoandroid: Update Gradle plugin and build scripts and dependencies
Tobias Brunner [Tue, 12 Dec 2023 16:19:18 +0000 (17:19 +0100)] 
android: Update Gradle plugin and build scripts and dependencies

This also references the NDK via ndkVersion and replaces the custom
ndk-build tasks.  It also replaces the deprecated compileSdkVersion and
increases it because dependencies of updated dependencies require that.

targetSdkVersion is not yet updated because there might be some work
required for Android 14 compatibility.

3 months agogithub: Also run tests on macOS 13
Tobias Brunner [Mon, 15 Jan 2024 14:56:58 +0000 (15:56 +0100)] 
github: Also run tests on macOS 13

Uses a newer version of clang and doesn't seem to have the issue with
process_t.

3 months agogithub: Increase timeout for process_t tests
Tobias Brunner [Mon, 15 Jan 2024 14:31:21 +0000 (15:31 +0100)] 
github: Increase timeout for process_t tests

This seems to be necessary on macOS 12 for some reason (note that handling
timeouts in these test cases doesn't really work).

3 months agogithub: Use newer gperf version on macOS
Tobias Brunner [Mon, 15 Jan 2024 14:14:46 +0000 (15:14 +0100)] 
github: Use newer gperf version on macOS

The gperf version that's already available on the system generates
function declarations with K&R syntax (separate arguments) for which newer
compilers produce a warning as C23 doesn't support that syntax anymore.

3 months agosimaka-crypto: Fix constructor declaration
Tobias Brunner [Mon, 15 Jan 2024 12:51:19 +0000 (13:51 +0100)] 
simaka-crypto: Fix constructor declaration

Prototype didn't match the implementation.

3 months agocirrus: Use FreeBSD 14.0
Tobias Brunner [Wed, 10 Jan 2024 10:06:09 +0000 (11:06 +0100)] 
cirrus: Use FreeBSD 14.0

FreeBSD 12.4 has been removed.

3 months agounit-tests: Use function pointers to test generic return_* helper functions
Tobias Brunner [Mon, 15 Jan 2024 12:39:32 +0000 (13:39 +0100)] 
unit-tests: Use function pointers to test generic return_* helper functions

These functions are declared without arguments, passing arguments to them
causes warnings such as the following with newer compilers:

  passing arguments to 'return_null' without a prototype is deprecated in all versions of C and is not supported in C2x [-Werror,-Wdeprecated-non-prototype]

We only use them via function pointers, which doesn't trigger any warnings
and hopefully continues to work.

3 months agocurl: Fix issue with printf checks in newer curl versions
Tobias Brunner [Wed, 10 Jan 2024 10:17:58 +0000 (11:17 +0100)] 
curl: Fix issue with printf checks in newer curl versions

Newer curl versions (as used on macOS via Homebrew) add attributes like

  __attribute__ ((format(printf, a, b)))

to their `curl_*printf*` functions, which fails if we redefine `printf`
as e.g. `builtin_printf` (pulled in via library.h).  We could disable
these checks via CURL_NO_FMT_CHECKS, but reordering the headers should
do the trick as well.

3 months agoSuppress compiler warnings with specific bison and compiler combinations
Tobias Brunner [Wed, 10 Jan 2024 17:04:32 +0000 (18:04 +0100)] 
Suppress compiler warnings with specific bison and compiler combinations

Bison generates code that only increases the yynerrs counter, it's never
read.  This causes a warning in newer compilers (in particular clang).
Newer versions of bison mark yynerrs with __attribute__((unused)), but
at least on FreeBSD 14 that's not yet available.

3 months agoleak-detective: Add implementation of malloc_usable_size()
Tobias Brunner [Mon, 8 Jan 2024 15:05:20 +0000 (16:05 +0100)] 
leak-detective: Add implementation of malloc_usable_size()

systemd seems to use this and if we indirectly use libraries provided
by it, which can e.g. happen via getgrnam_r() and nss-systemd, this may
be called on pointers returned by leak detective's malloc(), which will
not point to the original start of the block and cause a segmentation
fault.

Closes strongswan/strongswan#2045

4 months agoMerge branch 'linux-strongswan'
Tobias Brunner [Thu, 14 Dec 2023 10:28:41 +0000 (11:28 +0100)] 
Merge branch 'linux-strongswan'

Closes strongswan/strongswan#2026

4 months agoipsec: Remove mention of NETKEY stack
Tobias Brunner [Thu, 14 Dec 2023 10:27:25 +0000 (11:27 +0100)] 
ipsec: Remove mention of NETKEY stack

4 months agoReplace some other mentions of "Linux strongSwan"
Tobias Brunner [Thu, 14 Dec 2023 10:23:22 +0000 (11:23 +0100)] 
Replace some other mentions of "Linux strongSwan"

4 months agoipsec: strongSwan is not exclusive to Linux kernels 2026/head
Jose Luis Duran [Sat, 9 Dec 2023 18:42:27 +0000 (18:42 +0000)] 
ipsec: strongSwan is not exclusive to Linux kernels

The project is now called "the strongSwan project" rather than "Linux
strongSwan" to better reflect this.

4 months agoVersion bump to 5.9.13 5.9.13
Andreas Steffen [Fri, 1 Dec 2023 06:26:22 +0000 (07:26 +0100)] 
Version bump to 5.9.13

5 months agoVersion bump to 5.9.13rc1 5.9.13rc1
Andreas Steffen [Sat, 25 Nov 2023 16:16:59 +0000 (17:16 +0100)] 
Version bump to 5.9.13rc1

5 months agoMerge branch 'ocsp-fixes'
Tobias Brunner [Fri, 24 Nov 2023 16:41:51 +0000 (17:41 +0100)] 
Merge branch 'ocsp-fixes'

Fixes a regression with handling OCSP error responses and adds a new
option to specify the length of nonces in OCSP requests.  Also adds some
other improvements for OCSP handling and fuzzers for OCSP
requests/responses.

Closes strongswan/strongswan#2011

5 months agox509: Make sure the status in OCSP responses has the correct length
Tobias Brunner [Fri, 24 Nov 2023 13:49:24 +0000 (14:49 +0100)] 
x509: Make sure the status in OCSP responses has the correct length

5 months agofuzz: Add fuzzing targets for OCSP requests/responses
Tobias Brunner [Thu, 23 Nov 2023 17:40:44 +0000 (18:40 +0100)] 
fuzz: Add fuzzing targets for OCSP requests/responses

5 months agox509: Make length of nonces in OCSP requests configurable
Tobias Brunner [Thu, 23 Nov 2023 17:10:08 +0000 (18:10 +0100)] 
x509: Make length of nonces in OCSP requests configurable

Some servers might not support a length of 32 and return a malformed
request error. Lowering the value to the previous default of 16 could
help in that case.

5 months agopki: Generate internal error OCSP response if no signer certificate is found
Tobias Brunner [Thu, 23 Nov 2023 16:54:40 +0000 (17:54 +0100)] 
pki: Generate internal error OCSP response if no signer certificate is found

That can happen if a request is sent to the wrong OCSP server.

5 months agocertificate-printer: Add some output for empty OCSP responses
Tobias Brunner [Thu, 23 Nov 2023 16:53:41 +0000 (17:53 +0100)] 
certificate-printer: Add some output for empty OCSP responses

5 months agorevocation: Reject OCSP error responses
Tobias Brunner [Thu, 23 Nov 2023 16:51:57 +0000 (17:51 +0100)] 
revocation: Reject OCSP error responses

Otherwise, there is lengthy code that tries to validate such responses,
even though they don't contain any signatures.

5 months agox509: Add getter for status of OCSP responses
Tobias Brunner [Thu, 23 Nov 2023 16:50:02 +0000 (17:50 +0100)] 
x509: Add getter for status of OCSP responses

5 months agox509: Correctly parse responderId as ASN.1 CHOICE in OCSP response
Tobias Brunner [Thu, 23 Nov 2023 15:52:55 +0000 (16:52 +0100)] 
x509: Correctly parse responderId as ASN.1 CHOICE in OCSP response

The two OPTs that were used previously allowed to omit it completely (hence
the fallback to ID_ANY), but that's invalid, so it's better to fail
parsing.

5 months agox509: Correctly handle missing responder ID when parsing OCSP response errors
Tobias Brunner [Thu, 23 Nov 2023 10:32:15 +0000 (11:32 +0100)] 
x509: Correctly handle missing responder ID when parsing OCSP response errors

The has_issuer() and issued_by() methods relied on it to be defined, so
if the OCSP response wasn't successful (i.e. OCSP status indicates an
error and no OCSP response is parsed), a null-pointer dereference was
caused if the caller checked if the OCSP response was issued by a
specific certificate.

That's a side-effect of the referenced commit.  Previously, error codes
caused the OCSP response to not get parsed successfully, which technically
wasn't correct as it's well formed and successfully parsed, it's just
indicating an error state.

Fixes: 00ab8d62c089 ("x509: Support generation of OCSP responses")
5 months agocert-enroll: Set the environment variables needed by cert-install-ssl
Andreas Steffen [Thu, 23 Nov 2023 18:05:22 +0000 (19:05 +0100)] 
cert-enroll: Set the environment variables needed by cert-install-ssl

5 months agoVersion bumpt to 5.9.12 5.9.12
Andreas Steffen [Mon, 20 Nov 2023 11:10:34 +0000 (12:10 +0100)] 
Version bumpt to 5.9.12

5 months agoNEWS: Add info about CVE-2023-41913
Tobias Brunner [Wed, 15 Nov 2023 13:23:56 +0000 (14:23 +0100)] 
NEWS: Add info about CVE-2023-41913

5 months agocharon-tkm: Validate DH public key to fix potential buffer overflow
Tobias Brunner [Tue, 11 Jul 2023 10:12:25 +0000 (12:12 +0200)] 
charon-tkm: Validate DH public key to fix potential buffer overflow

Seems this was forgotten in the referenced commit and actually could lead
to a buffer overflow.  Since charon-tkm is untrusted this isn't that
much of an issue but could at least be easily exploited for a DoS attack
as DH public values are set when handling IKE_SA_INIT requests.

Fixes: 0356089d0f94 ("diffie-hellman: Verify public DH values in backends")
Fixes: CVE-2023-41913
5 months agox509: Ensure extensions are encoded even if others are missing
Tobias Brunner [Wed, 15 Nov 2023 16:08:46 +0000 (17:08 +0100)] 
x509: Ensure extensions are encoded even if others are missing

As with the previous commit, this is probably never an issue in practice
as most certificates contain at least one SAN.

5 months agox509: Also encode extendedKeyUsage in cert requests if there are no SANs or certifica...
Tobias Brunner [Wed, 15 Nov 2023 16:01:02 +0000 (17:01 +0100)] 
x509: Also encode extendedKeyUsage in cert requests if there are no SANs or certificate type

Probably never was an issue in practice as most certificates contain at
least one SAN.

5 months agopki: Mention --index in description
Tobias Brunner [Wed, 15 Nov 2023 14:16:07 +0000 (15:16 +0100)] 
pki: Mention --index in description

5 months agoNEWS: Add news for 5.9.12
Tobias Brunner [Wed, 15 Nov 2023 13:05:09 +0000 (14:05 +0100)] 
NEWS: Add news for 5.9.12

5 months agoMove ocsp_responder_t interface as it's not a certificate
Tobias Brunner [Tue, 14 Nov 2023 09:35:47 +0000 (10:35 +0100)] 
Move ocsp_responder_t interface as it's not a certificate