-secnet (0.4.1) unstable; urgency=low
-
+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.