dc0027ead9f0f2a7e9db90c74adcca04c8fe8c7d
[fwknop.git] / ChangeLog
1 fwknop-2.0.2 (08//2012):
2     - [server] For GPG mode, added a new access.conf variable
3       "GPG_ALLOW_NO_PW" to make it possible to leverage a server-side GPG key
4       pair that has no associated password.  This comes in handy when a system
5       requires the user to leverage gpg-agent / pinentry which can present a
6       problem in automated environments as required by the fwknopd server.
7       Now, it might seem like a problem to remove the passphrase from a GPG
8       key pair, but it's important to note that simply doing this is little
9       worse than storing the passphrase in the clear on disk anyway in the
10       access.conf file.  Further, this link helps provide additional detail:
11
12       http://www.gnupg.org/faq/GnuPG-FAQ.html#how-can-i-use-gnupg-in-an-automated-environment
13
14     - [client] In IP resolution mode (-R) changed HTTP connection type to
15       'close' since there is no need for connection persistence, and indeed the
16       client expects to just get the IP and the connection to be closed.
17       Jonathan Schulz submitted a patch for this.
18     - [client] Bug fix to ensure that all data is read via recv() from a
19       remote webserver IP resolution mode (-R).  Previously IP resolution
20       could fail if HTTP headers were transferred separately from the data
21       (for whatever reason).  Jonathan Schulz submitted a patch for this.
22     - [server] Bug fix to implement FLUSH_IPT_AT_INIT and FLUSH_IPT_AT_EXIT
23       functionality.  These are enabled by default, and now iptables rules
24       added by fwknopd can be made persistant by setting these variables to
25       "N" in the fwknopd.conf file (this is not a recommended setting
26       however).
27       [server] Added FLUSH_IPFW_AT_INIT and FLUSH_IPFW_AT_EXIT for ipfw
28       firewalls to emulate the corresponding functionality that is implemented
29       for iptables firewalls.  This was suggested by Jonathan Schulz.
30     - [server] Replay attack bug fix to ensure that an attacker cannot force a
31       replay attack by intercepting an SPA packet and the replaying it with the
32       base64 version of "Salted__" (for Rindael) or the "hQ" prefix (for
33       GnuPG).  This is an important fix.  The following comment was added into
34       the fwknopd code:
35
36       /* Ignore any SPA packets that contain the Rijndael or GnuPG prefixes
37        * since an attacker might have tacked them on to a previously seen
38        * SPA packet in an attempt to get past the replay check.  And, we're
39        * no worse off since a legitimate SPA packet that happens to include
40        * a prefix after the outer one is stripped off won't decrypt properly
41        * anyway because libfko would not add a new one.
42       */
43
44     - [server] Fixed a memory leak bug in the replay attack detection code.
45       The leak was found with the test suite in --enable-valgrind mode, and
46       here is the valgrind trace that exposed it:
47
48       44 bytes in 1 blocks are definitely lost in loss record 2 of 2
49          at 0x482BE68: malloc (in
50          /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
51          by 0x490EA50: strdup (strdup.c:43)
52          by 0x10CD69: incoming_spa (incoming_spa.c:162)
53          by 0x10E000: process_packet (process_packet.c:200)
54          by 0x4862E63: ??? (in /usr/lib/i386-linux-gnu/libpcap.so.1.1.1)
55          by 0x4865667: pcap_dispatch (in /usr/lib/i386-linux-gnu/libpcap.so.1.1.1)
56          by 0x10DABF: pcap_capture (pcap_capture.c:226)
57          by 0x10A798: main (fwknopd.c:299)
58
59     - [test suite] Added GPG tests for keyrings that have no associated
60       passphrases.
61
62 fwknop-2.0.1 (07/23/2012):
63     - [server] Bug fix where the same encryption key used for two stanzas in
64       the access.conf file would result in access requests that matched the
65       second stanza to always be treated as a replay attack.  This has been
66       fixed for the fwknop-2.0.1 release, and was reported by Andy Rowland. Now
67       the fwknopd server computes the SHA256 digest of raw incoming payload
68       data before decryption, and compares this against all previous hashes.
69       Previous to this commit, fwknopd would add a new hash to the replay
70       digest list right after the first access.conf stanza match, so when SPA
71       packet data matched the second access.conf stanza a matching replay
72       digest would already be there.
73     - [server] Updated PCAP_LOOP_SLEEP default to 1/10th of a second (in
74       microseconds).  This was supposed to be the default anyway, but C
75       Anthony Risinger reported a bug where fwknopd was consuming more
76       resources than necessary, and the cause was PCAP_LOOP_SLEEP set by
77       default to 1/100th of a second - this has been fixed.
78     - [libfko] Added SPA message validation calls to fko decoding routines to
79       help ensure that SPA messages conform to expected values.
80     - Bug fix for PF firewalls: updated the PF anchor check to not rely on
81       listing the PF policy - fwknopd now uses 'pfctl -s Anchor' instead.
82     - [test suite] Added parsing of valgrind output to produce a listing of
83       functions that have been flagged - this assists in the development
84       process to ensure that fwknop is not leaking memory.
85     - [test suite] Bug fix on Mac OS X systems to account for libfko.dylib path
86       instead of libfko.so.  This fixes the existence check for libfko.
87     - [test suite] Added tests for --nat-local mode.
88     - [client] Fixed several minor memory leaks caught by valgrind.
89     - [libfko] Minor gcc warning fix: fko_decode.c:43:17: warning: variable
90       ‘edata_size’ set but not used [-Wunused-but-set-variable].
91     - Updated fwknopd init script for Debian systems (contributed by Franck
92       Joncourt).
93
94 fwknop-2.0 (01/02/2012):
95     - This is the first production release that has been completely re-written
96       in C.  This brings Single Packet Authorization functionality to all sorts
97       of machines from embedded devices to large systems.  iptables, ipfw, and
98       pf firewalls are supported by the fwknopd daemon, and the fwknop client
99       is known to work on most major *NIX environments, the iPhone and Android
100       operating systems, and Cygwin under Windows.
101     - Added FORCE_NAT mode to the access.conf file so that for any valid SPA
102       packet, force the requested connection to be NAT'd through to the
103       specified (usually internal) IP and port value.  This is useful if there
104       are multiple internal systems running a service such as SSHD, and you
105       want to give transparent access to only one internal system for each
106       stanza in the access.conf file.  This way, multiple external users can
107       each directly access only one internal system per SPA key.
108     - Added two new access.conf variables are added "ACCESS_EXPIRE" and
109       "ACCESS_EXPIRE_EPOCH" to allow access stanzas to be expired without
110       having to modify the access.conf file and restart fwknopd.
111     - Added a new feature to allow an access stanza that matches the SPA source
112       address to not automatically short circuit other stanzas if there is an
113       error (such as when there are multiple encryption keys involved and an
114       incoming SPA packet is meant for, say, the second stanza and the first
115       therefore doesn't allow proper decryption).
116     - Bug fix to exclude SPA packets with timestamps in the future that are too
117       great (old packets were properly excluded already).
118     - Bug fix to honor the fwknop client --time-offset-plus and
119       --time-offset-minus options
120     - Added DNAT mode tests, minor memory leak fix in NAT mode, added fwknopd
121       check for ENABLE_IPT_FORWARDING variable before attempting NAT access.
122     - [test suite] Added --diff mode to compare results from one execution to
123       the next.