Commit Graph
24 Commits
Author SHA1 Message Date
R. Elliott Childre 075323d895 identification: Fix double-free when cloning empty IDs
The clone() method was missing a branch when there is an encoded chunk
of length 0 that still needed to be cloned.  Otherwise, the destruction
of the clone frees the same pointer that the original owns.

This double free was found with an improved `fuzz_ids` fuzz harness and
a two byte input to create an identification from "@#" or [0x40, 0x23].
It can also be triggered with `<type>:#` e.g. `dns:#`.

One of the problematic constructors is used to parse EAP-Identities,
which are cloned before storing them in the auth-cfg.   So this can be
triggered by an unauthenticated attacker.

Note that while the length check was already added with 418dbd6243
("cloning %any ID without zero-byte memleak") and identities that trigger
this can be created since 86ab5636c2 ("support for @#hex ID_KEY_ID
identification_t"), it was the referenced commit that made the length
check problematic.

Fixes: 2147da40a5 ("simplified identification_t.clone() using memcpy")
Fixes: CVE-2026-47895
2026-06-05 17:35:06 +02:00
Arthur ChanandTobias Brunner 615e7ad9ab oss-fuzz: Add new fuzzer targeting libtls
Closes strongswan/strongswan#3004

Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
Co-authored-by: Tobias Brunner <tobias@strongswan.org>
2026-05-29 15:30:42 +02:00
Arthur Chan 50fc4c24a6 fuzz: Add fuzzer targeting RADIUS messages
Closes strongswan/strongswan#3027

Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
2026-05-27 12:36:26 +02:00
Arthur Chan a5bcaa70ed fuzz: Add fuzzer targeting VICI messages
Closes strongswan/strongswan#3026

Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
2026-05-27 12:32:40 +02:00
Tobias Brunner b9d9f8ad95 fuzz: Remove unnecessary calls to set plugin dirs
All the plugins are linked statically into the binaries, so there
is no reason to set the directories that are only required when loading
them from files.
2026-04-08 15:57:17 +02:00
Tobias Brunner 444a1dc0e3 fuzz: Create fuzzers with default and custom crypto plugins
The pa_tnc fuzzer does not rely on any plugins and the pb_tnc fuzzer is
a bit special in that it does use code from the tnccs-20 plugin, but that
doesn't actually have to be loaded as such. The fuzzer directly calls
statically linked code from the plugin.
2026-04-08 15:56:42 +02:00
Arthur Chan 005a3fb168 fuzz: Add dependency to fuzz RADIUS message parsing
Due to the static build, libcharon will depend on libradius as soon as
eap-radius is enabled even if not actually used.  So in order to avoid
breaking the build of fuzz_ike when enabling this in CIFuzz, enable
it now before adding the actual fuzzer.

Closes strongswan/strongswan#3028

Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
2026-03-16 16:37:57 +01:00
Tobias Brunner 2ed929d9f6 fuzz-ike: Initialize libcharon as logging will cause crashes otherwise
The bus.h header file redirects DBG* macros to the bus but that won't be
available unless libcharon is initialized.
2026-02-06 08:12:52 +01:00
Arthur Chan b8deb618ef oss-fuzz: Add new fuzzer for libcharon IKE message parser
Closes strongswan/strongswan#2988

Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
2026-01-28 11:59:41 +01:00
Tobias Brunner a42e24b762 fuzz: Fix build after changing default plugins 2024-11-22 14:41:19 +01:00
Tobias Brunner ebf5afcefa fuzz: Add fuzzing targets for OCSP requests/responses 2023-11-24 17:41:18 +01:00
Tobias Brunner 74e319c3f5 fuzz: Force make check to fail if fuzz target fails 2022-12-02 14:58:23 +01:00
Tobias Brunner 19ef2aec15 Update copyright headers after acquisition by secunet 2022-06-28 10:22:56 +02:00
Tobias Brunner d3bd576c46 fuzz: Add fuzzer for identification_t 2019-09-30 10:10:43 +02:00
Tobias Brunner 05e3751ebb fuzz: Support build with -fsanitize=fuzzer instead of libFuzzer.a
Recent clang versions (6.0+) include libFuzzer and OSS-Fuzz switched to
that mode a while ago.
2019-07-17 11:44:27 +02:00
Andreas Steffen 75181f4836 fuzz: Added PB-TNC fuzzer 2018-06-12 21:47:40 +02:00
Andreas Steffen 508b308768 fuzz: Added PA-TNC fuzzer 2018-06-12 21:47:39 +02:00
Tobias Brunner bd6e4bbe68 fuzzing: Add fuzzer for CRL parsing 2018-02-20 17:54:08 +01:00
Tobias Brunner bf31485e1e fuzzing: Also run input that previously caused crashes 2017-08-15 10:35:20 +02:00
Tobias Brunner 9f2e74cfbb fuzzing: Run local fuzz targets on given corpora during make check
The base directory of the corpora must be set in FUZZING_CORPORA.
2017-08-15 10:35:20 +02:00
Tobias Brunner be1beea7a4 fuzzing: Add driver to run fuzz targets on a given list of files
This is enabled if the path to libFuzzer.a is not specified when running
the configure script.
2017-08-15 10:35:20 +02:00
Tobias Brunner 05eeffb2f2 fuzz: Change how fuzz_certs is built
We mainly do this because we have to create a self-contained executable
and it isn't so easy to actually get libtool to link e.g. libgmp
statically.
2017-05-23 18:29:12 +02:00
Tobias Brunner 8806b00f43 fuzz: Make path to libFuzzer.a configurable 2017-05-23 18:29:11 +02:00
Tobias Brunner 157742be7d fuzz: Add fuzzing boilerplate 2017-05-23 18:29:11 +02:00