180 lines
11 KiB
Plaintext
180 lines
11 KiB
Plaintext
fwknop-2.0.4 (09/20/2012):
|
|
- [server] Added upstart config at extras/upstart/fwknop.conf. This
|
|
allows the fwknopd to easily be managed with upstart via commands like
|
|
"service fwknop start" and "service fwknop stop".
|
|
- [server] (Vlad Glagolev) Submitted a patch to fix ndbm/gdbm usage when
|
|
--disable-file-cache is used for the autoconf configure script. This
|
|
functionality was broken in be4193d734850fe60f14a26b547525ea0b9ce1e9
|
|
through improper handling of #define macros from --disable-file-cache.
|
|
- [server] (Vlad Glagolev) Submitted a patch to fix command exec mode
|
|
under SPA message type validity test. Support for command exec mode was
|
|
also added to the test suite.
|
|
- (Vlad Glagolev) Submitted an OpenBSD port for fwknop-2.0.3, and this has
|
|
been checked in under extras/openbsd/.
|
|
|
|
fwknop-2.0.3 (09/03/2012):
|
|
- [server] Fernando Arnaboldi from IOActive found several DoS/code
|
|
execution vulnerabilities for malicious fwknop clients that manage to
|
|
get past the authentication stage (so a such a client must be in
|
|
possession of a valid access.conf encryption key). These vulnerabilities
|
|
manifested themselves in the handling of malformed access requests, and
|
|
both the fwknopd server code along with libfko now perform stronger input
|
|
validation of access request data. These vulnerabilities affect
|
|
pre-2.0.3 fwknop releases.
|
|
- [server] Fernando Arnaboldi from IOActive found a condition in which
|
|
the server did not properly validate allow IP addresses from malicious
|
|
authenticated clients. This has been fixed with stronger allow IP
|
|
validation.
|
|
- [client+server] Fernando Arnaboldi from IOActive found that strict
|
|
filesystem permissions for various fwknop files are not verified. Added
|
|
warnings whenever permissions are not strict enough, and ensured that
|
|
files created by the fwknop client and server are only set to user
|
|
read/write.
|
|
- [client] Fernando Arnaboldi from IOActive found a local buffer overflow
|
|
in --last processing with a maliciously constructed ~/.fwknop.run file.
|
|
This has been fixed with proper validation of .fwknop.run arguments.
|
|
- [server] Fernando Arnaboldi from IOActive found several conditions in
|
|
which the server did not properly throw out maliciously constructed
|
|
variables in the access.conf file. This has been fixed along with new
|
|
fuzzing tests in the test suite.
|
|
- [test suite] Added a new fuzzing capability to ensure proper server-side
|
|
input validation. Fuzzing data is constructed with modified fwknop
|
|
client code that is designed to emulate malicious behavior.
|
|
- Fixed RPM builds by including the $(DESTDIR) prefix for uninstall-local
|
|
and install-exec-hook stages in Makefile.am.
|
|
|
|
fwknop-2.0.2 (08/18/2012):
|
|
- [server] For GPG mode, added a new access.conf variable
|
|
"GPG_ALLOW_NO_PW" to make it possible to leverage a server-side GPG key
|
|
pair that has no associated password. This comes in handy when a system
|
|
requires the user to leverage gpg-agent / pinentry which can present a
|
|
problem in automated environments as required by the fwknopd server.
|
|
Now, it might seem like a problem to remove the passphrase from a GPG
|
|
key pair, but it's important to note that simply doing this is little
|
|
worse than storing the passphrase in the clear on disk anyway in the
|
|
access.conf file. Further, this link helps provide additional detail:
|
|
|
|
http://www.gnupg.org/faq/GnuPG-FAQ.html#how-can-i-use-gnupg-in-an-automated-environment
|
|
|
|
- [client] In IP resolution mode (-R) changed HTTP connection type to
|
|
'close' since there is no need for connection persistence, and indeed the
|
|
client expects to just get the IP and the connection to be closed.
|
|
Jonathan Schulz submitted a patch for this.
|
|
- [client] Bug fix to ensure that all data is read via recv() from a
|
|
remote webserver IP resolution mode (-R). Previously IP resolution
|
|
could fail if HTTP headers were transferred separately from the data
|
|
(for whatever reason). Jonathan Schulz submitted a patch for this.
|
|
- [client] Added backup check against a cipherdyne.com 'myip' cgi instance
|
|
in -R mode if the normal check against cipherdyne.org fails.
|
|
- [server] Bug fix to implement FLUSH_IPT_AT_INIT and FLUSH_IPT_AT_EXIT
|
|
functionality. These are enabled by default, and now iptables rules
|
|
added by fwknopd can be made persistent by setting these variables to
|
|
"N" in the fwknopd.conf file (this is not a recommended setting
|
|
however).
|
|
[server] Added FLUSH_IPFW_AT_INIT and FLUSH_IPFW_AT_EXIT for ipfw
|
|
firewalls to emulate the corresponding functionality that is implemented
|
|
for iptables firewalls. This was suggested by Jonathan Schulz.
|
|
- [server] Replay attack bug fix to ensure that an attacker cannot force a
|
|
replay attack by intercepting an SPA packet and the replaying it with the
|
|
base64 version of "Salted__" (for Rijndael) or the "hQ" prefix (for
|
|
GnuPG). This is an important fix. The following comment was added into
|
|
the fwknopd code:
|
|
|
|
/* Ignore any SPA packets that contain the Rijndael or GnuPG prefixes
|
|
* since an attacker might have tacked them on to a previously seen
|
|
* SPA packet in an attempt to get past the replay check. And, we're
|
|
* no worse off since a legitimate SPA packet that happens to include
|
|
* a prefix after the outer one is stripped off won't decrypt properly
|
|
* anyway because libfko would not add a new one.
|
|
*/
|
|
|
|
- [server] Fixed a memory leak bug in the replay attack detection code.
|
|
The leak was found with the test suite in --enable-valgrind mode, and
|
|
here is the valgrind trace that exposed it:
|
|
|
|
44 bytes in 1 blocks are definitely lost in loss record 2 of 2
|
|
at 0x482BE68: malloc (in
|
|
/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
|
|
by 0x490EA50: strdup (strdup.c:43)
|
|
by 0x10CD69: incoming_spa (incoming_spa.c:162)
|
|
by 0x10E000: process_packet (process_packet.c:200)
|
|
by 0x4862E63: ??? (in /usr/lib/i386-linux-gnu/libpcap.so.1.1.1)
|
|
by 0x4865667: pcap_dispatch (in /usr/lib/i386-linux-gnu/libpcap.so.1.1.1)
|
|
by 0x10DABF: pcap_capture (pcap_capture.c:226)
|
|
by 0x10A798: main (fwknopd.c:299)
|
|
|
|
- [test suite] Added GPG tests for keyrings that have no associated
|
|
passphrases.
|
|
- [server] Implemented a new check to ensure that the iptables 'comment'
|
|
match exists to ensure the proper environment for fwknopd operations.
|
|
This check is controlled by the new ENABLE_IPT_COMMENT_CHECK variable,
|
|
and was suggested by Hank Leininger.
|
|
- [server] 'make install' fix to ensure restrictive permissions on the
|
|
/etc/fwknop/ directory and /etc/fwknop/* files. Also updated the 'make
|
|
install' step to not overwrite any existing config files in /etc/fwknop/
|
|
and instead install new copies from the source tree at
|
|
/etc/fwknop/fwknopd.conf.inst and /etc/fwknop/access.conf.inst
|
|
|
|
fwknop-2.0.1 (07/23/2012):
|
|
- [server] Bug fix where the same encryption key used for two stanzas in
|
|
the access.conf file would result in access requests that matched the
|
|
second stanza to always be treated as a replay attack. This has been
|
|
fixed for the fwknop-2.0.1 release, and was reported by Andy Rowland. Now
|
|
the fwknopd server computes the SHA256 digest of raw incoming payload
|
|
data before decryption, and compares this against all previous hashes.
|
|
Previous to this commit, fwknopd would add a new hash to the replay
|
|
digest list right after the first access.conf stanza match, so when SPA
|
|
packet data matched the second access.conf stanza a matching replay
|
|
digest would already be there.
|
|
- [server] Updated PCAP_LOOP_SLEEP default to 1/10th of a second (in
|
|
microseconds). This was supposed to be the default anyway, but C
|
|
Anthony Risinger reported a bug where fwknopd was consuming more
|
|
resources than necessary, and the cause was PCAP_LOOP_SLEEP set by
|
|
default to 1/100th of a second - this has been fixed.
|
|
- [libfko] Added SPA message validation calls to fko decoding routines to
|
|
help ensure that SPA messages conform to expected values.
|
|
- Bug fix for PF firewalls: updated the PF anchor check to not rely on
|
|
listing the PF policy - fwknopd now uses 'pfctl -s Anchor' instead.
|
|
- [test suite] Added parsing of valgrind output to produce a listing of
|
|
functions that have been flagged - this assists in the development
|
|
process to ensure that fwknop is not leaking memory.
|
|
- [test suite] Bug fix on Mac OS X systems to account for libfko.dylib path
|
|
instead of libfko.so. This fixes the existence check for libfko.
|
|
- [test suite] Added tests for --nat-local mode.
|
|
- [client] Fixed several minor memory leaks caught by valgrind.
|
|
- [libfko] Minor gcc warning fix: fko_decode.c:43:17: warning: variable
|
|
'edata_size' set but not used [-Wunused-but-set-variable].
|
|
- Updated fwknopd init script for Debian systems (contributed by Franck
|
|
Joncourt).
|
|
|
|
fwknop-2.0 (01/02/2012):
|
|
- This is the first production release that has been completely re-written
|
|
in C. This brings Single Packet Authorization functionality to all sorts
|
|
of machines from embedded devices to large systems. iptables, ipfw, and
|
|
pf firewalls are supported by the fwknopd daemon, and the fwknop client
|
|
is known to work on most major *NIX environments, the iPhone and Android
|
|
operating systems, and Cygwin under Windows.
|
|
- Added FORCE_NAT mode to the access.conf file so that for any valid SPA
|
|
packet, force the requested connection to be NAT'd through to the
|
|
specified (usually internal) IP and port value. This is useful if there
|
|
are multiple internal systems running a service such as SSHD, and you
|
|
want to give transparent access to only one internal system for each
|
|
stanza in the access.conf file. This way, multiple external users can
|
|
each directly access only one internal system per SPA key.
|
|
- Added two new access.conf variables are added "ACCESS_EXPIRE" and
|
|
"ACCESS_EXPIRE_EPOCH" to allow access stanzas to be expired without
|
|
having to modify the access.conf file and restart fwknopd.
|
|
- Added a new feature to allow an access stanza that matches the SPA source
|
|
address to not automatically short circuit other stanzas if there is an
|
|
error (such as when there are multiple encryption keys involved and an
|
|
incoming SPA packet is meant for, say, the second stanza and the first
|
|
therefore doesn't allow proper decryption).
|
|
- Bug fix to exclude SPA packets with timestamps in the future that are too
|
|
great (old packets were properly excluded already).
|
|
- Bug fix to honor the fwknop client --time-offset-plus and
|
|
--time-offset-minus options
|
|
- Added DNAT mode tests, minor memory leak fix in NAT mode, added fwknopd
|
|
check for ENABLE_IPT_FORWARDING variable before attempting NAT access.
|
|
- [test suite] Added --diff mode to compare results from one execution to
|
|
the next.
|