chiark / gitweb /
changelog: work on documentation of changes since ea31544cc33a
[secnet.git] / debian / changelog
index 02c9c3cf2739a6eb17e1112cd2de1cb379597beb..37d5c753be3aabdd573c827a950a8fa499c46a1c 100644 (file)
@@ -1,3 +1,498 @@
+secnet (0.6.0~) unstable; urgency=medium
+
+  * secnet: Make stderr line buffered
+  * logfile: Log to stderr by default (`filename' key now optional)
+  * logfile: Do not log differently with --nodetach
+  * logfile: New `prefix' option.
+
+internal refactorings in secnet
+
+test suite
+  * stest: Use stderr, not tty, for logging
+  * stest: Use new `prefix' option.
+  * stest: Add debug logs
+  * tests, mtest: Provide and use `prexec' for helping with debugging
+  * stest: Print the secnet runes we run
+  * stest: Print the special env vars we pass to secnet
+  * stest: Don't prefix ./ with another ./, in socktmp
+  * stest: Support not running secnet ourselves
+  * stest: Replace the call to `exit 1' with a new proc `finish'
+  * stest: Record the pids of of the secnets we spawn
+  * stest: Kill our child secnets when we call finish
+  * stest: Use `finish' for success exits
+  * stest: If one of our secnets dies, call the test a failure
+  * stest: Decode the slip packets that come via fake netlink
+  * stest: Check that received packet is as expected
+  * stest: Drop a redundant test
+  * mtest/t-prefix: Drop redundant setting of seddery
+  * test-example: Rules for making a privkeys directory
+  * test-example: Make privkeys by default
+  * test-example: Add the inside.key to the privcache too
+  * test-example: Add a 2nd rsa1 key
+  * stest: Transfer pubkeys from test-example
+  * stest: Provide a global `hash' key
+  * stest: Honour new privkey() hash
+  * tests: Pass --output-version=1 to make-secnet-sites
+  * test-example: Provide a new-style public key set for site outside
+  * test-example: Make sites.conf variable, in principle
+  * test-example: Generate new style sites.conf
+  * test-example: Test new long-term key arrangements
+  * test-example: all-privkeys: Define, and indirect through, a variable
+  * stest: Fix an entry in &DEPS
+  * mtest: Use --pubkeys-elide instead of --output-version
+  * stest: Honour new sitesconf_hook
+  * stest/t-nonnego-oo: Use `make-public' verb
+  * test-common: Use $(wildcard ) rather than $(shell echo )
+  * test-common: Framework for compatibility tests
+  * stest: Machinery for runing an old secnet if a test wants
+  * sest/t-Cnonnego-on: New test
+  * stest: Make it possible to have kex initiated by `outside'
+  * stest/t-Cnonnego-onr: New test
+  * stest: Add test for load-private
+  * stest: Introduce adj-after
+  * stest: Honour SECNET_STEST_TIMEOUT_MUL to multiply timeouts
+  * stest: Move puts $argl into divert branches
+  * stest: When SECNET_STEST_DIVERT_* set, print diverted command too
+  * stest: Require SECNET_STEST_DIVERT_* paths to start / or ./
+  * stest: Allow SECNET_STEST_DIVERT_*='i <some stuff>'
+  * stest: Print spawn rune on a line by itself
+  * test-example: Use subdirmk's new &:macro feature
+
+administrivia
+  * dir-locals: Provide python-indent-offset too
+  * Provide osdep.[ch], currently empty
+  * portability: Provide implementation of fmemopen
+
+build system
+  * configure.ac: Drop checks for systems lacking stdint.h
+  * configure.ac: Drop AC_STDC_HEADERS
+  * configure.ac: Do not check for lack of standard headers
+  * autogen.sh: Write a comment about need for autoheader
+  * parallel bisect scripts: ad-hoc
+  * parallel bisect scripts: Better logging
+  * parallel bisect scripts: Honour $1 as iteration count
+  * build system: Fix race bug in recheck target
+
+make-secnet-sites tainting
+  * make-secnet-sites: Tainted: Fix a lot of bad return values
+
+config
+  * conffile: find_cl_if: fix fail_if_invalid==False
+  * config: Reject rather than silently ignoring wrong closure values
+
+bugfixes
+  * rsa: emsa_pkcs1: Fix a message
+  * site: Move earlier all things needed for slog
+  * dh: Fix mpz padding bug in use of write_mpbin
+  * mobile sites: Do not ever expire peer addresses
+
+new signature scheme key handling
+  * pubkey handling: Document key sets, id, etc. plan
+  * sigkey handling: Introduce sigkeyid type
+  * sigkey handling: define MAX_SIG_KEYS
+  * sigkey handling: Introduce serialt type
+  * sigpubkey/sigprivkey: Provide a hash_if
+  * sigpubkey/sigprivkey: Provide a dispose() method
+  * sigscheme: Interface for signature schemes
+  * privcache: New closure for signature key handling
+  * privcache: Use new pathprefix_template facility
+  * privcache: Better debug
+  * privcache: Remove some spurious \n in messages
+  * site: New SIGKEYS log class, at level INFO, enabled by default
+  * NOTES: Add protocol elements for public key negotiation
+  * site: generate_msg: Introduce `privkey' variable
+  * site: Introduce `pubkey' variable (twice)
+  * site: Be able to use multiple private keys
+  * site: Read public peer keys from key file
+  * site: Update peer keys from ~update file
+  * site: Write an argument for the soundness of key file update
+  * site: key update soundness argument: deal with concurrency
+  * site: Reserve <peer-keys>~tmp for make-secnet-sites
+  * site: Remove a spurious \n in a message
+  * secnet: Provide `make-public' verb
+
+base91
+  * README: Introduce spec for "base91s" encoding
+  * B91 C DUMMY SYMLINK - WILL BE SUBTREE MERGE
+  * base91: CREDITS: Add information about C library
+  * base91: Build the C basE91 code with our own renaming
+  * base91: Patch the C version for our charset change
+  * base91: Link it into secnet
+  * BASE91 PYTHON DUMMY SYMLINK - WILL BE SUBTREE MERGE
+  * base91: CREDITS: Add information about Python library
+  * base91: Python: make `import' work
+  * pubkeys: Provide parser (and spec) for peer pubkeys files
+  * pubkeys: Provide ability to add extra action to KEYWORD
+  * pubkeys: Provide `fallback_skip' variable
+  * pubkeys: Introduce `pkgf' fallback groups
+  * pubkeys: Print file path in some log messages
+  * pubkeys: Move path and lno into a struct cloc
+  * pubkeys: Pass a cloc to loadpub
+  * pubkeys: Improve debug message for expected ENOENT
+  * pubkeys: Better debug logging for syntax errors
+  * pubkeys: Do not mind missing serial
+
+rsa1
+  [stuff to support new scheme]
+  * rsa1: Drop filename from two error messages
+  * rsa: Strip a couple of spurious newlines from pub key messages
+
+NEEDS FIX/CHECK
+  * README: Document new semantics for `hash'
+  * privcache; uncached_load_file: Introduce error_out
+
+  * docs: Fix rsapriv/rsapub closure names
+  * docs: Move peer-keys documentation into a README file
+
+mss
+  * make-secnet-sites: Deduplicate `complain'
+  * make-secnet-sites: Tolerate late `complain'
+  * make-secnet-sites: Write output to ...~tmp~ and rename
+  * make-secnet-sites: Tainted.name: take `what'
+  * make-secnet-sites: Tainted: Provide hexid and base91
+  * make-secnet-sites: set_property: Break out kw
+  * make-secnet-sites: set_property: Break out propname
+  * make-secnet-sites: set_property: Support "aliases"
+  * make-secnet-sites: pubkeys: Allow multiple
+  * make-secnet-sites: Provide --debug and debugrepr
+  * make-secnet-sites: Tainted: Provide some commented-out debug
+  * make-secnet-sites: Introduce FilterState
+  * make-secnet-sites: pline: Break up `copyout'
+  * make-secnet-sites: Provide base91s_encode and base91s_decode
+  * make-secnet-sites: Provide --output-version option
+  * make-secnet-sites: Allow properties to control output to sites
+  * make-secnet-sites: Provide ArgActionLambda
+  * make-secnet-sites: Provide `serial' property class
+  * make-secnet-sites: Prepare for multiple public key types
+  * make-secnet-sites: Support new `pub' directive
+  * make-secnet-sites: Make the `pub' key name primary
+  * make-secnet-sites: Do not write `pub' entries in v1 output
+  * make-secnet-sites: Do not use `copy' in pubkey forsites
+  * make-secnet-sites: Write rsa1 keys as `pub rsa1 ...' in >=v2
+  * make-secnet-sites: Handle `pub rsa1' properties specially
+  * make-secnet-sites: Add new pubkeys-dir option, and pubkey paths
+  * make-secnet-sites: New --pubkeys-install option
+  * make-secnet-sites: Without --pubkeys-install, write appropriate key
+  * make-secnet-sites: Support `serial'
+  * make-secnet-sites: Support `pkg' and `pkgf'
+  * make-secnet-sites: In v1 output, ignore keys for non-0 groups
+  * make-secnet-sites: Rework with new `inpub' class
+  * make-secnet-sites: Rework --pubkeys-MODE, provide --pubkeys-single
+  * make-secnet-sites: New --pubkeys-elide mode
+  * make-secnet-sites: Declare `pubkey' directive old
+
+  * make-secnet-sites: Introduce new OpMod classes
+  * make-secnet-sites: Refactor operational code into OpModes
+  * make-secnet-sites: Move sites file writing into OpBase
+  * make-secnet-sites: OpBase.read_in: save read lines
+  * make-secnet-sites: Provide explicit --conf mode option
+  * make-secnet-sites: Abolish now-obsolete `service' variable
+  * make-secnet-sites: OpBase.write_out: Tolerate sitesfile is None
+  * make-secnet-sites: OpBase.write_out: Move heading back into OpUserv
+  * make-secnet-sites: OpUserv: Rename sitesfile to outputfile
+  * make-secnet-sites: OpConf: Move positional_args to OpBase
+  * README.make-secnet-sites: Slightly restructure mode docs
+  * make-secnet-sites: Provide --filter mode
+  * mtest/t-filter: New test for --filter mode
+
+other changes
+  * site: Always advertise all capabilities
+  * rsa: Bring hash selection in-house
+  * sig: Abolish sethash and defhash everywhere
+
+
+ --
+
+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:
+  * Creit 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 <ijackson@chiark.greenend.org.uk>  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 <limits.h>.  [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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <limits.h> (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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <linux/if_tun.h> 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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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 <ijackson@chiark.greenend.org.uk>  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.