Changelog for 4.2.x

Version 4.2.14

  • The new server-side EAP RADIUS plugin (--enable-eap-radius)
    relays EAP messages to and from a RADIUS server. Succesfully
    tested with with a freeradius server using EAP-MD5 and EAP-SIM.
  • A vulnerability in the Dead Peer Detection (RFC 3706) code was found by
    Gerd v. Egidy <gerd.von.egidy AT intra2net DOT com> of Intra2net AG affecting
    all Openswan and strongSwan releases. A malicious (or expired ISAKMP)
    R_U_THERE or R_U_THERE_ACK Dead Peer Detection packet can cause the
    pluto IKE daemon to crash and restart. No authentication or encryption
    is required to trigger this bug. One spoofed UDP packet can cause the
    pluto IKE daemon to restart and be unresponsive for a few seconds while
    restarting. This DPD null state vulnerability has been officially
    registered as CVE-2009-0790 and is fixed by this release.
  • ASN.1 to time_t conversion caused a time wrap-around for
    dates after Jan 18 03:14:07 UTC 2038 on 32-bit platforms.
    As a workaround such dates are set to the maximum representable
    time, i.e. Jan 19 03:14:07 UTC 2038.
  • Distinguished Names containing wildcards (*) are not sent in the
    IDr payload anymore.

Version 4.2.13

  • Fixed a use-after-free bug in the DPD timeout section of the
    IKEv1 pluto daemon which sporadically caused a segfault.
  • Fixed a crash in the IKEv2 charon daemon occuring with
    mixed RAM-based and SQL-based virtual IP address pools.
  • Fixed ASN.1 parsing of algorithmIdentifier objects where the
    parameters field is optional.
  • Ported nm plugin to NetworkManager 7.1.

Version 4.2.12

  • Support of the EAP-MSCHAPv2 protocol enabled by the option
    --enable-eap-mschapv2. Requires the MD4 hash algorithm enabled
    either by --enable-md4 or --enable-openssl.
  • Assignment of up to two DNS and up to two WINS servers to peers via
    the IKEv2 Configuration Payload (CP). The IPv4 or IPv6 nameserver
    addresses are defined in strongswan.conf.
  • The strongSwan applet for the Gnome NetworkManager is now built and
    distributed as a separate tarball under the name NetworkManager-strongswan.

Version 4.2.11

  • Fixed ESP NULL encryption broken by the refactoring of keymat.c.
    Also introduced proper initialization and disposal of keying material.
  • Fixed the missing listing of connection definitions in ipsec statusall
    broken by an unfortunate local variable overload.

Version 4.2.10

  • Several performance improvements to handle thousands of tunnels with almost
    linear upscaling. All relevant data structures have been replaced by faster
    counterparts with better lookup times.
  • Better parallelization to run charon on multiple cores. Due to improved
    ressource locking and other optimizations the daemon can take full
    advantage of 16 or even more cores.
  • The load-tester plugin can use a NULL Diffie-Hellman group and simulate
    unique identities and certificates by signing peer certificates using a CA
    on the fly.
  • The redesigned stroke in-memory IP pool handles leases. The "ipsec leases"
    command queries assigned leases.
  • Added support for smartcards in charon by using the ENGINE API provided by
    OpenSSL, based on patches by Michael Ro├čberg.
  • The Padlock plugin supports the hardware RNG found on VIA CPUs to provide a
    reliable source of randomness.

Version 4.2.9

  • Flexible configuration of logging subsystem allowing to log to multiple
    syslog facilities or to files using fine-grained log levels for each target.
  • Load testing plugin to do stress testing of the IKEv2 daemon against self
    or another host. Found and fixed issues during tests in the multi-threaded
    use of the OpenSSL plugin.
  • Added profiling code to synchronization primitives to find bottlenecks if
    running on multiple cores. Found and fixed an issue where parts of the
    Diffie-Hellman calculation acquired an exclusive lock. This greatly improves
    parallelization to multiple cores.
  • updown script invocation has been separated into a plugin of its own to
    further slim down the daemon core.
  • Separated IKE_SA/CHILD_SA key derivation process into a closed system,
    allowing future implementations to use a secured environment in e.g. kernel
    memory or hardware.
  • The kernel interface of charon has been modularized. XFRM NETLINK (default)
    and PFKEY (--enable-kernel-pfkey) interface plugins for the native IPsec
    stack of the Linux 2.6 kernel as well as a PFKEY interface for the KLIPS
    IPsec stack (--enable-kernel-klips) are provided.
  • Basic Mobile IPv6 support has been introduced, securing Binding Update
    messages as well as tunneled traffic between Mobile Node and Home Agent.
    The installpolicy=no option allows peaceful cooperation with a dominant
    mip6d daemon and the new type=transport_proxy implements the special MIPv6
    IPsec transport proxy mode where the IKEv2 daemon uses the Care-of-Address
    but the IPsec SA is set up for the Home Adress.
  • Implemented migration of Mobile IPv6 connections using the KMADDRESS
    field contained in XFRM_MSG_MIGRATE messages sent by the mip6d daemon
    via the Linux 2.6.28 (or appropriately patched) kernel.

Version 4.2.8

  • IKEv2 charon daemon supports authentication based on raw public keys
    stored in the SQL database backend. The ipsec listpubkeys command
    lists the available raw public keys via the stroke interface.
  • Several MOBIKE improvements: Detect changes in NAT mappings in DPD exchanges,
    handle events if kernel detects NAT mapping changes in UDP-encapsulated
    ESP packets (requires kernel patch), reuse old addesses in MOBIKE updates as
    long as possible and other fixes.
  • Fixed a bug in addr_in_subnet() which caused insertion of wrong source
    routes for destination subnets having netwmasks not being a multiple of 8 bits.
    Thanks go to Wolfgang Steudel, TU Ilmenau for reporting this bug.

Version 4.2.7

  • Fixed a Denial-of-Service vulnerability where an IKE_SA_INIT message with
    a KE payload containing zeroes only can cause a crash of the IKEv2 charon
    daemon due to a NULL pointer returned by the mpz_export() function of the
    GNU Multiprecision Library (GMP). Thanks go to Mu Dynamics Research Labs
    for making us aware of this problem.
  • The new agent plugin provides a private key implementation on top of an
  • The NetworkManager plugin has been extended to support certificate client
    authentication using RSA keys loaded from a file or using ssh-agent.
  • Daemon capability dropping has been ported to libcap and must be enabled
    explicitly --with-capabilities=libcap. Future version will support the
    newer libcap2 library.
  • ipsec listalgs lists the IKEv2 cryptografic algorithms registered with the
    charon keying daemon.

Version 4.2.6

  • A NetworkManager plugin allows GUI-based configuration of road-warrior
    clients in a simple way. It features X509 based gateway authentication
    and EAP client authentication, tunnel setup/teardown and storing passwords
    in the Gnome Keyring.
  • A new EAP-GTC plugin implements draft-sheffer-ikev2-gtc-00.txt and allows
    username/password authentication against any PAM service on the gateway.
    The new EAP method interacts nicely with the NetworkManager plugin and allows
    client authentication against e.g. LDAP.
  • Improved support for the EAP-Identity method. The new ipsec.conf eap_identity
    parameter defines an additional identity to pass to the server in EAP
  • The "ipsec statusall" command now lists CA restrictions, EAP
    authentication types and EAP identities.
  • Fixed two multithreading deadlocks occurring when starting up
    several hundred tunnels concurrently.
  • Fixed the --enable-integrity-test configure option which
    computes a SHA-1 checksum over the libstrongswan library.

Version 4.2.5

  • Consistent logging of IKE and CHILD SAs at the audit (AUD) level.
  • Improved the performance of the SQL-based virtual IP address pool
    by introducing an additional addresses table. The leases table
    storing only history information has become optional and can be
    disabled by setting charon.plugins.sql.lease_history = no in
  • The XFRM_STATE_AF_UNSPEC flag added to xfrm.h allows IPv4-over-IPv6
    and IPv6-over-IPv4 tunnels with the 2.6.26 and later Linux kernels.
  • management of different virtual IP pools for different
    network interfaces have become possible.
  • fixed a bug which prevented the assignment of more than 256
    virtual IP addresses from a pool managed by an sql database.
  • fixed a bug which did not delete own IPCOMP SAs in the kernel.

Version 4.2.4

  • Added statistics functions to ipsec pool --status and ipsec pool --leases
    and input validation checks to various ipsec pool commands.
  • ipsec statusall now lists all loaded charon plugins and displays
    the negotiated IKEv2 cipher suite proposals.
  • The openssl plugin supports the elliptic curve Diffie-Hellman groups
    19, 20, 21, 25, and 26.
  • The openssl plugin supports ECDSA authentication using elliptic curve
    X.509 certificates.
  • Fixed a bug in stroke which caused multiple charon threads to close
    the file descriptors during packet transfers over the stroke socket.
  • ESP sequence numbers are now migrated in IPsec SA updates handled by
    MOBIKE. Works only with Linux kernels >= 2.6.17.

Version 4.2.3

  • Fixed the strongswan.conf path configuration problem that occurred when
    --sysconfig was not set explicitly in ./configure.
  • Fixed a number of minor bugs that where discovered during the 4th
    IKEv2 interoperability workshop in San Antonio, TX.

Version 4.2.2

  • Plugins for libstrongswan and charon can optionally be loaded according
    to a configuration in strongswan.conf. Most components provide a
    "load = " option followed by a space separated list of plugins to load.
    This allows e.g. the fallback from a hardware crypto accelerator to
    to software-based crypto plugins.
  • Charons SQL plugin has been extended by a virtual IP address pool.
    Configurations with a rightsourceip=%poolname setting query a SQLite or
    MySQL database for leases. The "ipsec pool" command helps in administrating
    the pool database. See ipsec pool --help for the available options
  • The Authenticated Encryption Algorithms AES-CCM-8/12/16 and AES-GCM-8/12/16
    for ESP are now supported starting with the Linux 2.6.25 kernel. The
    syntax is e.g. esp=aes128ccm12 or esp=aes256gcm16.

Version 4.2.1

  • Support for "Hash and URL" encoded certificate payloads has been implemented
    in the IKEv2 daemon charon. Using the "certuribase" option of a CA section
    allows to assign a base URL to all certificates issued by the specified CA.
    The final URL is then built by concatenating that base and the hex encoded
    SHA1 hash of the DER encoded certificate. Note that this feature is disabled
    by default and must be enabled using the option "charon.hash_and_url".
  • The IKEv2 daemon charon now supports the "uniqueids" option to close multiple
    IKE_SAs with the same peer. The option value "keep" prefers existing
    connection setups over new ones, where the value "replace" replaces existing
  • The crypto factory in libstrongswan additionaly supports random number
    generators, plugins may provide other sources of randomness. The default
    plugin reads raw random data from /dev/(u)random.
  • Extended the credential framework by a caching option to allow plugins
    persistent caching of fetched credentials. The "cachecrl" option has been
  • The new trustchain verification introduced in 4.2.0 has been parallelized.
    Threads fetching CRL or OCSP information no longer block other threads.
  • A new IKEv2 configuration attribute framework has been introduced allowing
    plugins to provide virtual IP addresses, and in the future, other
    configuration attribute services (e.g. DNS/WINS servers).
  • The stroke plugin has been extended to provide virtual IP addresses from
    a pool defined in ipsec.conf. The "rightsourceip" parameter now accepts
    address pools in CIDR notation (e.g. The parameter also accepts
    the value "%poolname", where "poolname" identifies a pool provided by a
    separate plugin.
  • Fixed compilation on uClibc and a couple of other minor bugs.
  • Set DPD defaults in ipsec starter to dpd_delay=30s and dpd_timeout=150s.
  • The IKEv1 pluto daemon now supports the ESP encryption algorithm CAMELLIA
    with key lengths of 128, 192, and 256 bits, as well as the authentication
    algorithm AES_XCBC_MAC. Configuration example: esp=camellia192-aesxcbc.

Version 4.2.0

  • libstrongswan has been modularized to attach crypto algorithms,
    credential implementations (keys, certificates) and fetchers dynamically
    through plugins. Existing code has been ported to plugins:
    • RSA/Diffie-Hellman implementation using the GNU Multi Precision library
    • X509 certificate system supporting CRLs, OCSP and attribute certificates
    • Multiple plugins providing crypto algorithms in software
    • CURL and OpenLDAP fetcher
  • libstrongswan gained a relational database API which uses pluggable database
    providers. Plugins for MySQL and SQLite are available.
  • The IKEv2 keying daemon charon is more extensible. Generic plugins may provide
    connection configuration, credentials and EAP methods or control the daemon.
    Existing code has been ported to plugins:
    • EAP-AKA, EAP-SIM, EAP-MD5 and EAP-Identity
    • stroke configuration, credential and control (compatible to pluto)
    • XML based management protocol to control and query the daemon

    The following new plugins are available:

    • An experimental SQL configuration, credential and logging plugin on
      top of either MySQL or SQLite
    • A unit testing plugin to run tests at daemon startup
  • The authentication and credential framework in charon has been heavily
    refactored to support modular credential providers, proper
    CERTREQ/CERT payload exchanges and extensible authorization rules.
  • The framework of strongSwan Manager has envolved to the web application
    framework libfast (FastCGI Application Server w/ Templates) and is usable
    by other applications.