secnet (0.6.7) unstable; urgency=medium * Upstream release of changes since 0.6.2. (Versions 0.6.5 and 0.6.6 were Debian-only; 0.6.3 and 0.6.4 were not properly released at all and should be disregarded.) Packaging bugfix: * Update VERSION in Makefile. -- Ian Jackson Mon, 09 Jan 2023 00:15:21 +0000 secnet (0.6.6) unstable; urgency=medium Bugfix: * polypath: Do not separately log xmit failures. Tests: * stest: Fix debugging output about spawning secnet Packaging: * Add missing build-dependency on netbase. Closes: #1028102. * Copyright notices and LICENCE (aka debian/copyright) fixes and improvements. [Requested by Debian ftpmaster] * Add Debian upload step to release checklist. -- Ian Jackson Sun, 08 Jan 2023 18:20:09 +0000 secnet (0.6.5) unstable; urgency=medium Copyright and source code notices: * Include notices and licences of all included elements in LICENCE, not just in the files themselvves. * Tidy up a handful of notices to the most recent facts. * Do not claim CC-BY-SA 4.0 is GPL3+ compatible - only GPL3. * Add a README.source. * Update my own copyright year. * Versions 0.6.3 and 0.6.4 burned due to failed uploads. (See dgit bug #944855.) -- Ian Jackson Sat, 12 Nov 2022 18:58:02 +0000 secnet (0.6.2) unstable; urgency=medium Bugfixes to code and build system: * site: promote creation of st->scratch, allowing new pubkey scheme to work even when secnet is restarting. * comm-common.h: Remove unused `notify' variable. [Colin Watson] * Dir.sd.mk: Prevent builtin make rule overwriting conffile.c. Documentation: * configure: Correct bug reporting address. Report from Colin Watson. * example.conf improvements: - Comment out some tuning overrides - Improve syntax by deleting one of the two map examples - Add a commented-out mobile site setting - Add mtu-target * OLD-NEWS, OLD-BUGS: Rename from NEWS and BUGS, and don't ship OLD-BUGS. Debian packaging changes: * debian/rules: Use dh sequencer. Resulting changes: - We now provide debug symbols in the new Debian way. - The way the prerm stops secnet accords with modern practice. * init script: source /lib/lsb/init-functions. * init script: make "restart" work if secnet is not running. * Expand Description. * debhelper compat: bump to 12 (stretch-backports). * debian/rules: Use dh_prep instead of deprecated dh_clean -k. * Adjust Priority (as per modern policy and lintian). * Add some lintian overrides. * Add missing Pre-Depends on init-system-helpers. Credits and legal documentation improvements: * Add missing credits for base91 and python argparse extension. ensure some packaging credits exist in all the places they should be. * Add copyright/credits notices to many files which were missing them. * Move and centralise legal information into its own file, LICENCE. Testing improvements: * comprehensive-test: Actually allow OLD_SECNET_DIR set to '' * test-example/common.conf: Fix a reference to the sites file. * test-example/null-fake-userv: New test utility script. -- Ian Jackson Thu, 30 Dec 2021 15:10:12 +0000 secnet (0.6.1) unstable; urgency=medium Logging bugfixes: * Fix completely broken startup logging. Config errors would not be repoorted other than via the exit status! (Broken in 0.6.0.) * Suppress various uninteresting messages during startup, to avoid noise during successful startup. * Move "starting" message earlier. make-secnet-sites bugfixes: * Fix error handling if caller is in wrong group. * Fix regressions in handling of delegated sites file fragments (especially wrt the optional group parameter to `location'). Broken since security fixes in 0.5.0. Fixes to example config file: * Use new name-prefixed format for map(site...) runes. Old runes were desupported by make-secnet-sites security fix (in 0.5.0). * Fix "transform" syntax (broken since 0.3.0). Other bugfixes and improvements: * rsa: Do not crash if private key file is not accessible when running --just-check-config. (Broken since 0.6.0.) * rsa: Print errno value if we fail to open key file. * config parsing: When closure is of wrong type, give details. * Use CLOCK_MONOTONIC for all our timing needs (but only when built against an as-yet-unpublished adns feature). Supporting changes: * Tests for some of the changes. * Minor internal refactorings and improvements. * Merge subdirmk 1.0. -- Ian Jackson Sun, 24 May 2020 22:14:26 +0100 secnet (0.6.0) unstable; urgency=medium Bugfixes: * mobile sites: Do not ever expire peer addresses. In practice this fixes transitions between IPv6-only and IPv4-only networks. * make-secnet-sites: Tainted: Fix a lot of bad return values (which would result in assertions rather than nice error messages). * Fix hash algo confusion in mixed sha1/md5 configurations (see below). Incompatible changes: * site: Always advertise all capabilities, even in MSG1. This is incompatible with secnets earlier than 0.3.0 (September 2013), which are all quite badly broken and should have been upgraded long ago. * Drop support for using the same loaded rsa key with multiple different hash algorithms (which was broken in 0.5.0). Right now we support only `sha1' and `md5' so everyone should be using `sha1'. Installations which specified `md5' anywhere may need config changes. Major new featureset (use of which is not adviseable yet): * New facilities for negotiating about the signing keys to use for authentication during key setup, and selecting and using the appropriate keys. (``key-cache'/`privcache' and `peer-keys'). Using these new facilities for keyrollover now is in principle possible but rather complex. Further machinery is planned; for now, retain your existing config which should keep working. In summary: - secnet: new `privcache' closure; - secnet: `key-cache' and `peer-keys' keys on site closures; - secnet: new file format for peer public keysets; - secnet: new `make-public' config operator; - make-secnet-sites `pub', `pkg', `serial', etc. keywords; - make-secnet-sites --filter, --pubkeys-*, --output-version. More minor (logging) improvements: * Make stderr line buffered and log to it by default. * Do not log differently with --nodetach. * New `prefix' option to `logfile' closure. * Tidy and simplify some messages. Supporting changes: * Many substantial internal refactorings in secnet. * Many substantial internal refactorings in make-secnet-sites. * make-secnet-sites option parsing totally replaced. * Imported subtrees for base91-c and base91-python. * New portablity code, etc.: osdep.[ch], fmemopen reimplementation. * Explicitly define oddly-rotated dh padding arrangement (write_mpbin). Build system and packaging: * Do not fail to build from git when HEAD refers to a packed ref. * Update to subdirmk 0.3. * Many makefile fixes (esp. to clean and cdeps). * configure.ac: Drop or suppress some very obsolete checks. * autogen.sh: Write a comment about need for autoheader. * dir-locals: Provide python-indent-offset too. Test suite bugfixes: * stest: Use stderr, not tty, for logging. * stest/udp-preload.c: Fix error handling of sun_prep. * stest: Fix breakage if nproc is not installed. Test suite improvements: * New tests, including tests for new features. * Existing tests (especially stest) generally made more thorough. * New comprehensive-test and pretest-to-tested convenience scripts. * Arrangements for testing with (user-provided) old secnet. * parallel-test.*: scripts to help with parallelised bisection. * stest: Print a lot more output about what we are doing. * stest: Better support for cwd with longish pathname. * stest: More flexibility, env var hooks, etc. -- Ian Jackson Sun, 16 Feb 2020 12:48:13 +0000 secnet (0.5.1) unstable; urgency=medium POTENTIALLY INCOMPATIBLE CHANGE. Some security implications. * make-secnet-sites: Prefix names when writing secnet sites.conf file. make-secnet-sites must copy names (vpn, location and site names) from the input sites file (which is not wholly trusted) to the secnet config file. Prior to this release, naming a location or site the same as a secnet predefined name could generate a broken sites.conf which secnet would reject. (With the existing featureset, malfunctions other than rejection, eg privilege escalation, are not possible.) make-secnet-sites now adds a prefix to these names when writing sites.conf. This will not affect configurations which use the make-secnet-sites-provided `all-sites' key, as is usual. Other configurations will break unless the references in the static part of the config are adjusted. Previous behaviour can be restored with the --no-conf-key-prefix option. (Planned future enhancements to secnet are likely to make use of that option, with untrusted input, dangerously insecure.) other changes to make-secnet-sites: * Fix argument parsing. Fixes a regression affecting -P in 0.5.0, and also fixes new facilities introduced in 0.5.0. * Sort the properties on output (and adjust the test case expected outputs). Tests now pass on (at least) Python 2.7.13, 3.5.3, 3.7.5. * Delete some unused code. secnet: * Change one idiom to avoid a warning from GCC9. No functional change. build system - MAJOR CHANGES: * Fix out-of-tree builds. (Broken in 0.5.0) * Replace recursive make with use of the new subdirmk system. This represents a fairly comprehensive overhaul of the makefiles. Several bugs (esp. involving dependencies between files in different directories) are fixed. * Drop `make check' from `make all'. (Otherwise there is no way to ask for `all' without `check'.) * Suppress two unhelpful new compiler warnings from GCC9. * Release checklist update. documentation: * Credit Mark Wooding properly in CREDITS. * Include DEVELOPER-CERTIFICATE. tests: * Locations now have different names to sites. * Somewhat better debugging output from mtest. * Do not run msgcode-test except with `make fullcheck'. * Other minor bugfixes and improvments. * stest: Suppress unhelpful -Wno-unused-result (needed for stretch). -- Ian Jackson Fri, 22 Nov 2019 23:13:14 +0000 secnet (0.5.0) unstable; urgency=medium make-secnet-sites SECURITY FIX: * Do not blindly trust inputs; instead, check the syntax for sanity. Previous releases can be induced to run arbitrary code as the user invoking secnet (which might be root), if a secnet sites.conf is used that was generated from an untrustworthy sites file. * The userv invocation mode of make-secnet-sites seems to have been safe in itself, but it previously allowed hazardous data to be propagated into the master sites file. This is now prevented too. make-secnet-sites overhaul work: * make-secnet-sites is now in the common subset of Python2 and Python3. The #! is python3 now, but it works with Python2.7 too. It will probably *not* work with old versions of Python2. * We no longer depend on the obsolete `ipaddr' library. We use `ipaddress' now. And this is onlo a Recommends in the .deb. * Ad-hoc argument parser been replaced with `argparse'. There should be no change to existing working invocations. * Bad address syntax error does not wrongly mention IPv6 scopes. * Minor refactoring to support forthcoming work. [Mark Wooding] other bugfixes, improvements and changes to secnet itself: * Better logging of why we are sending NAK messages. * Correctly use the verified copy of the peer remote capabilities from MSG3. (Bug is not a vulnerability.) [Mark Wooding] * Significant internal rearrangements and refactorings, to support forthcoming key management work. [Mark Wooding and Ian Jackson] build system etc.: * Completely overhaul release checklist; drop dist target. * Remove dependency on `libfl.a'. [Mark Wooding] * polypath.c: Fix missing include of . [Mark Wooding] * Add a Wireshark dissector `secnet-wireshark.lua'. It is not installed anywhere right now. [Mark Wooding] documentation: * Improve documentation of capability negotiation in NOTES, secnet(8) and magic.h. [Mark Wooding] -- Ian Jackson Thu, 24 Oct 2019 19:11:54 +0100 secnet (0.4.5) unstable; urgency=medium * INSTALL: Mention that rsa key generation might need ssh-keygen1. * mobile: Fix negotiation bug with mixed old/new secnets and simultaneous key setup attempts by each end. [Mark Wooding] * Makefile.in: Support installation from a `VPATH' build. [Mark Wooding] * Portability fixes for clang. [Mark Wooding] -- Ian Jackson Sat, 21 Sep 2019 12:04:31 +0100 secnet (0.4.4) unstable; urgency=medium Security fix: * make-secnet-sites: Don't allow setting new VPN-level properties when restricted. This could allow denial of service by users with delegated authorisation. [Mark Wooding] Bugfixes for poor network environments: * polypath: cope properly with asymmetric routing, by correcting the handling of late duplicated packets etc. Protocol is now incompatible with secnet prior to 0.3.0 when either end is mobile. * Randomise key setup retry time. Other bugfixes: * rsa and cbcmac: Fix configuration error messages. [Mark Wooding] * Handle IPv4 addresses properly (ie, not foolishly byte-swapped), when IPv6 is not available. [Mark Wooding] * Better logging (and less foolish debug), especially about whether key is set up, and about crossed key setup attempts. * Internal refactoring and fixes. [Ian Jackson and Mark Wooding] Build system and portability: * configure: rerun autogen.sh with autoconf 2.69-10 * Avoid memset(0,0,0) wrt st->sharedsecret. (Fixes compiler warning; in theory might cause miscompilation.) [Mark Wooding] Documentation: * README.make-secnet-sites: new documentation file. [Mark Wooding] * NOTES: Describe current allocation of capability bits. [Mark Wooding] * NOTES: tiny fix tot protocol description. * secnet(8): Delete wrong information about dh groups. [Mark Wooding] Administrivia: * Fix erroneous GPL3+ licence notices "version d or later" (!) * .dir-locals.el: Settings for Python code. [Mark Wooding] -- Ian Jackson Sun, 08 Sep 2019 22:53:14 +0100 secnet (0.4.3) unstable; urgency=low Security improvement: * Use `mpz_powm_sec' for modexps. Enhancements: * Implement comm-info and dedicated-interface-addr feature, for benefit of hippotat. * Implement `keepalive' site option, to try to keep link always up. Build etc. fixes: * #include (fixes the build on jessie). * Tolerate building from a git checkout, but with git not installed. (This can happen in chroots.) * Turn off -Wsign-compare for bison output. * Makefile.in: Fix `check-ipaddrset' rule to get reference from $(srcdir). (Makes out-of-tree builds work properly.) * Release checklist fixes. * Burn version numbers 0.4.1 and 0.4.2 due to errors in release prep. Bugfixes: * When printing messages about dropping IPv6, do not print anything about ihl. (Check the IP version field first!) * When turning on debug, turn on verbose too. -- Ian Jackson Sat, 25 Nov 2017 13:36:41 +0000 secnet (0.4.0) unstable; urgency=low Debugging improvements: * Packet-level debugging from site notes errors from transmit. * Report when transport peers updated as a result of transmit. -- Ian Jackson Sat, 28 Feb 2015 15:03:00 +0000 secnet (0.4.0~beta2) unstable; urgency=low Polypath bugfixes: * Ignore IPv6 Unique Local unicast addresses. * Skip "tentative" IPv6 local addresses. * Improve logging and debug output. Portability fix: * Build where size_t is not compatible with int. Build system and packaging fixes: * Makefile: support DESTDIR. * debian/rules: set DESTDIR (not prefix). * debian/rules: Support dpkg-buildflags. * Install ipaddrset.py and secnet.8 with correct permissions. * Fix check for and git rid of our copy. * Use -lresolv only if inet_aton is not found otherwise. * Use -lnsl only if inet_ntoa is not found otherwise. * debian/rules: Provide build-arch and build-indep targets. * debian/rules: Do not run build for *-indep (!) * Makefile.in: Putative dual (backport and not) release build process doc. Copyright updates: * Update to GPLv3. Add missing copyright notices and credits. * Get rid of old FSF street address; use URL instead. * Remove obsolete LICENCE.txt (which was for snprintf reimplementation). * Remove obsolete references to Cendio (for old ipaddr.py). -- Ian Jackson Sun, 28 Dec 2014 17:14:10 +0000 secnet (0.4.0~beta1) unstable; urgency=low New features: * Support transport over IPv6. (We do not yet carry IPv6 in the private network.) IPv6 support depends on IPv6-capable adns (adns 1.5.x). * New polypath comm, which can duplicate packets so as to send them via multiple routes over the public network, for increased reliability/performance (but increased cost). Currently Linux-only but should be fairly easy to port. * Support multiple public addresses for peers. * Discard previously-received packets (by default). Logging improvements: * Report (each first) transmission and reception success and failure. * Log reason for DNS reolution failure. * Log unexpected kinds of death from userv. * Log authbind exit status as errno value (if appropriate). Configuration adjustments: * Adjust default number of mobile peer addresses to store when a peer public address is also configured. * Make specifying peer public port optional. This avoids making special arrangements to bind to a port for in mobile sites with no public stable address. Bugfixes: * Hackypar children will die if they get a terminating signal. * Fix signal dispositions inherited by secnet's child processes. * Fix off-by-one error which prevented setting transport-peers-max to 5. Test, build and internal improvements: * Use conventional IP address handling library ipaddr.py. * Provide a fuzzer for the slip decoder. * Build system improvements. * Many source code cleanups. -- Ian Jackson Sun, 26 Oct 2014 15:28:31 +0000 secnet (0.3.4) unstable; urgency=low SECURITY FIX: * The previous security fix to buffer handling was entirely wrong. This one is better. Thanks to Simon Tatham for the report and the patch. -- Ian Jackson Mon, 22 Sep 2014 16:16:11 +0100 secnet (0.3.3) unstable; urgency=high SECURITY FIXES: * Pass correct size argument to recvfrom. This is a serious security problem which may be exploitable from outside the VPN. * Fix a memory leak in some error logging. Other related fixes: * Two other latent bugs in buffer length handling found and fixed. * Non-critical stylistic improvements to buffer length handling, to make the code clearer and to assist audit. -- Ian Jackson Fri, 19 Sep 2014 23:50:45 +0100 secnet (0.3.3~beta1) unstable; urgency=low Installation compatibility fix: * In make-secnet-sites, always use our own ipaddr.py even if the incompatible modern ipaddr.py is installed (eg via python-ipaddr.deb). (Future versions of secnet are going to need that Python module to be installed.) For links involving mobile sites: * Use source of NAK packets as hint for peer transport address. * When initiating rekey, make use of data transport peer addresses. Build fix: * Provide clean target in test-example/Makefile. -- Ian Jackson Fri, 19 Sep 2014 00:11:44 +0100 secnet (0.3.2) unstable; urgency=low * Release of 0.3.2. No code changes since 0.3.1~beta1. -- Ian Jackson Thu, 26 Jun 2014 20:27:58 +0100 secnet (0.3.2~beta1) unstable; urgency=low For links involving mobile sites: * SECURITY: Properly update peer address array when it is full. * Do name-resolution on peer-initiated key setup too, when we are mobile (and other name-resolution improvements). Other minor improvements: * Log peer addresses on key exchange timeout. * When printing version (eg during startup), use value from git-describe and thus include git commit id where applicable. * Updates to release checklist in Makefile.in. * Use C99 _Bool for bool_t. -- Ian Jackson Fri, 06 Jun 2014 01:17:54 +0100 secnet (0.3.1) unstable; urgency=low * Release of 0.3.1. No code changes since 0.3.1~beta3. -- Ian Jackson Thu, 15 May 2014 01:08:30 +0100 secnet (0.3.1~beta3) unstable; urgency=low * Build fixes for non-i386 architectures and gcc 4.8.2. -- Ian Jackson Thu, 08 May 2014 19:53:43 +0100 secnet (0.3.1~beta2) unstable; urgency=low Fix relating to new fragmentation / ICMP functionality: * Generate ICMP packets correctly in point-to-point configurations. -- Ian Jackson Sat, 03 May 2014 18:58:09 +0100 secnet (0.3.1~beta1) unstable; urgency=low Security fixes (vulnerabilities are to inside attackers only): * SECURITY: Fixes to MTU and fragmentation handling. * SECURITY: Correctly set "unused" ICMP header field. * SECURITY: Fix IP length check not to crash on very short packets. New feature: * Make the inter-site MTU configurable, and negotiate it with the peer. Bugfixes etc.: * Fix netlink SEGV on clientless netlinks (i.e. configuration error). * Fix formatting error in p-t-p startup message. * Do not send ICMP errors in response to unknown incoming ICMP. * Fix formatting error in secnet.8 manpage. * Internal code rearrangements and improvements. Packaging improvements: * Updates to release checklist in Makefile.in. * Additions to the test-example suite. -- Ian Jackson Thu, 01 May 2014 19:02:56 +0100 secnet (0.3.0) unstable; urgency=low * Release of 0.3.0. No code changes since 0.3.0~beta3. * Update release checklist. -- Ian Jackson Sun, 01 Sep 2013 20:27:48 +0100 secnet (0.3.0~beta3) unstable; urgency=low * New upstream version. - Stability bugfix: properly initialise site's scratch buffer. -- Ian Jackson Mon, 05 Aug 2013 11:54:09 +0100 secnet (0.3.0~beta2) unstable; urgency=low * New upstream version. - SECURITY FIX: RSA public modulus and exponent buffer overflow. - SECURITY FIX: Use constant-time memcmp for message authentication. - SECURITY FIX: Provide a new transform, eax-serpent, to replace cbcmac. - SECURITY FIX: No longer send NAKs for NAKs, avoiding NAK storm. - SECURITY FIX: Fix site name checking when site name A is prefix of B. - SECURITY FIX: Safely reject too-short IP packets. - Better robustness for mobile sites (proper user of NAKs, new PROD msg). - Better robustness against SLIP decoding errors. - Fix bugs which caused routes to sometimes not be advertised. - Protocol capability negotiation mechanism. - Improvements and fixes to protocol and usage documentation. - Other bugfixes and code tidying up. -- Ian Jackson Thu, 25 Jul 2013 18:26:01 +0100 secnet (0.3.0~beta1) unstable; urgency=low * New upstream version. - SECURITY FIX: avoid crashes (or buffer overrun) on short packets. - Bugfixes relating to packet loss during key exchange. - Bugfixes relating to link up/down status. - Bugfixes relating to logging. - make-secnet-sites made more sophisticated to support two vpns on chiark. - Documentation improvements. - Build system improvements. * Debian packaging improvements: - Native package. - Maintainer / uploaders. - init script requires $remove_fs since we're in /usr. -- Ian Jackson Thu, 12 Jul 2012 20:18:16 +0100 secnet (0.2.1-1) unstable; urgency=low * New upstream version. (authbind endianness fix) -- Ian Jackson Sun, 11 Dec 2011 13:14:57 +0000 secnet (0.2.0-1) unstable; urgency=low * New upstream version. -- Ian Jackson Sat, 10 Dec 2011 22:44:41 +0000 secnet (0.1.18-1) unstable; urgency=low * New upstream version. -- Stephen Early Tue, 18 Mar 2008 17:45:00 +0000