News & Updates
2008-04-25 New version: Engine 24, MDPlugin 6
This release is an upgrade more than a bug fix. Replace your
SNFServer.exe or snfmdplugin.dll as appropriate.
No changes have been made to the configuration file.
This version improves memory management in the SNF Engine for improved
performance, improves the header injection mechanism for improved
reliability, and improves logging for IP scans done with the MDaemon
plugin.
As usual you can get the latest distributions here:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
Here is an excerpt from the change log (this time from the MDaemon
plugin change log since it contains all changes from the last
version):
20080424 - Version V2-9rc6.24.6
- Refactored snfScanData.clear() to reduce heap work and fragments.
- Added mutex to scanMessageFile() entry point just in case some app attempts to
put multiple threads through a single engine handler. scanMessage() is already
protected and fully wraped by the new scanMessageFile() mutex.
- Added non-specific runtime exception handling to XHDR injection code.
- Added 2 retries w/ 300ms delay to remove original message in XHDR inject code.
If remove fails after 3 attempts the injector throws.
- Added 2 retries w/ 300ms delay to rename temp file to msg in XHDR inject code.
If rename fails after 3 attempts the injector throws.
- Added IPTest logging.
2008-04-16 New Version: Engine 23 - fix for network bug on some win* systems.
This update fixes a bug that effects some Win* systems.
Please replace your SNFServer or snfmdplugin.dll and your SNFClient.
You can always get the latest distribution here:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
Here is a snippet from the change log:
20080416 - Version V2-9rc2.23.6
-
Fixed bug where SNCY open() would fail on some Win* platforms with
WSAEINVAL instead of the standard EINPROGRESS or EALREADY which were expected.
Also added WSAEWOULDBLOCK to cover other "ambiguities" in windows sockets
implementations. InProgress() on Win* now test for any of:
WSAEINPROGRESS, WSAEALREADY, WSAEWOULDBLOCK, WSAEINVAL
2008-04-13 New Version SYNC bug fix! SNFEngine 22
It seems that in our last update we introduced a bug that effects SYNC
operations for some customers - particularly those with longer network
transit times to our servers.
The bug could cause SYNC sessions to fail either consistently or
intermittently depending on the transit time. If SYNC sessions
consistently fail then the new UpdateReady feature will not fire.
GBUdb collaboration is also diminished with failed SYNC sessions.
A new version has been posted that solves this problem. Please upgrade
your SNFServer or snfmdplugin.dll files from the new distributions as
soon as possible to avoid missing telemetry, UpdateReady information,
and GBUdb collaboration traffic.
We have also included a new build of the SNFClient program since it
uses the same networking library. Although it is unlikely this bug
would cause a problem with the SNFClient program you should update to
the newest build to be sure.
No configuration changes are necessary with this update.
Here is a description of the changes in this newest distribution:
20080413 - Version V2-9rc2.22.6
-
Fixed bug in TCPHost.open() where [WSA]EALREADY was not counted as a
version of [WSA]EINPROGRESS. This would cause open() to throw an
unnecessary exception when a socket open() required extra time.
20080413 - Version V2-9rc2.21.6
- Extended timeout for SYNC session open() to the full session length. This way
if a session takes a long time to open it still has a shot at success.
2008-04-11 Latest RC release SNFMulti 20, SNFServer 2, SNFClient 6, MDaemon 5
The newest RC release has been posted in the usual location:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
There are NO changes to the configuration file. You need only replace SNFServer.exe and SNFClient.exe and/or
snfmdplugin.dll (as appropriate to your system). This release resolves all known bugs / tweaks.
Snippets from the change log:
20080411 - Version V2-9rc2.20.6
- Adjusted snfNETmgr to use non-blocking open in SYNC sessions. Open timeout is 1/3 of the session
timeout. Session timeout is 2 * Session pacing. Open polling uses golden spiral delay from 10ms to 340ms.
20080410 - Version V2-9rc2.19.6
- Adjusted XCI manager to use new snfCFGPacket paradigm in checkCFG().
- Adjusted snf_RulebaseHandler::addRulePanic() to use MyMutex and eliminated the AutoPanicMutex and waiting scheme.
- Refactored scanMessage() to use a ScopeMutex() rather than lock()/unlock().
- Refactored scanMessage() to use MyCFGPacket.isRulePanic() test.
- Redesigned snfCFGPacket handling to automate grab() / drop() functions.
- Fixed lock-up bug: Redesigned AutoPanic posting and checking mechanisms to eliminate potential dead-lock condition.
Under some conditions a precisely timed auto-panic posting could cause the RulebaseHandler mutex and the
AutoPanicMutex to become intertwined leading to a cascading deadlock. When this occurred all XCI processing
threads and eventually the XCI listener thread would become blocked waiting to get the current configuration.
20080409 - Version V2-9rc2.18.6
- Enhanced XCI exception handling and logging to provide additional detail.
- Added code to explicitely check for zero length files in scanMessagFile().Previously a zero length file would
cause the CBFR module of the filter chain to throw an invalid buffer exception. Now if the message file is empty
scanMessageFile() will throw a FileError stating FileEmpty!.
20080407 - Version V2-9rc2.17.6
- Enhanced exception reporting in snfXCImrg
2008-04-05 New Version Engine: 16, Client 6
The newest distributions for the Command Line (Std Test Package), MDaemon plugin, and Source have been posted. You can find them
here as always:
http://kb.armresearch.com/index.php?title=Message_Sniffer.GettingStarted.Distributions
This update is important because it includes a bug fix to the networking library. This update also includes some tweaks
intended to improve network performance under heavy traffic conditions.
Please upgrade to the new DLL, SNFClient, and SNFServer. There is no need to change your configuration file ;-)
A snippet from the change log:
20080405 - SNFServer V2-9rc2.16.6
- Reduced safety limits on status reports to 100K for status reports and
100K for samples. Previous values were 10M. Most full sessions from
the busiest systems are < 50K total.
- Recoded sendDataTimeout() to break uploads into 512 byte chunks and insert
delays only when a chunk is fragmented. This methodology improves reliability
on Win* systems without any significant penalty on systems that don't need
socket sends() to be in smaller chunks.
- Fixed TCPClient::transmit() and TCPHost::transmit() bug where returned byte
count might be -1. Now returned byte counts can only be 0 or more.
2008-03-27 More progress SNF2-9 SNFMulti engine goes to version 15
Short version:
Here is a new beta/rc release. The changes are internal and should
solve a bug that happens on a handfull of systems. You should upgrade
so that you're on the latest version. If you're not having trouble you
can put off upgrading until some later time (but not too long please).
Please find the newest release here:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
The long version:
This release goes further to eliminate the "hanging" bug on those few
systems that see it. One case should be solved completely by this
revision and possibly all cases (we shall see).
This release also eliminates a minor bug (not worth a revision) that
was in the previous release. It seems I failed to remove a line of
code that forces the Debug mode in SNFServer before pushing out the
last release -- so SNFServer in the previous release would be in debug
mode no matter what -- thus creating extra monitor data on the screen
(if not run as a service or piped to /dev/null).
The big change in this release is in the snfNETmgr module that handles
SYNC operations (GBUdb & Telemetry). The previous version used
blocking IO and a separate thread (TCPWatchdog) to kill off
connections that lasted too long. The new version uses non-blocking IO
and has been refactored to consolidate some of it's communications
routines.
In one case the "hanging" bug presented as a loss of telemetry without
errors or exceptions. It appeared from the debug data that the
snfNETmgr thread had gotten stuck in an IO call and that even though
the TCPWatchdog thread had killed the connection the function call
never returned.
The theory supporting this change is that after some number of these
TCPWatchdog events the TCP stack might become unstable on some systems
and cause this kind of behavior. The new non-blocking methodology
eliminates this possibility.
It is possible, if the above theory is true in any way, that this
change will solve the other "hanging" cases also -- In those cases the
snfXCImgr thread appears to get stuck while attempting to accept()
another client. If the TCPWatchdog methodology used before did cause
instability in some way to cause this, then this presentation of the
"hanging" bug should also disappear.
If the new revision doesn't solve the XCI related "hanging" bug then
the addition of very detailed status tracking in the snfXCImgr module
should help us see more clearly where to look.
Excerpts from the change log:
20080326 - SNFServer V2-9rc2.15.4
- Refactored snfNETmgr::sync() to consolidate non-blocking io routines.
- Added detailed thread status data to XCI listener thread.
- Fixed minor bug in main (not changing revision), Debug flag for internal use
was left on in the last build cycle. It is commented out now.
20080325 - SNFServer V2-9rc2.14.4
- Updated snfNETmgr with comprehensive thread status data.
- Refactored snfNETmgr::sync() to check a Timeout, removed TCPWatchdog.
20080325 - SNFServer V2-9rc2.13.4
- Upgraded TCPWatcher code to use new threading features (type, status).
2008-03-25 New 2-9rc Versions Posted Client - v2, Server - v4, MDaemon DLL v4, Engine v12
Three new releases today:
SNFv2-9rc2.12.4.StdTestPackage.zip
SNFv2-9rc4.12.4.MDaemon.zip
SNFv2-9rc2.12.4.source.zip
You can find them here as usual:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
Some items of note:
There is an obscure, intermittent bug in SNFServer that has been
reported on a handfull of systems. The vast majority of systems run
normally (including our lab systems) for hundreds of days -- only
stopping when we tell them to.
The bug manifests as either:
SNFServer stops listening for requests.
OR
SNFServer stops sending telemetry.
In both of the above cases there are no errors in the logs, no core
dumps, no unhandled exceptions, no corruption of any kind--
Only two cases show any kind of pattern so far:
- In one case SNFServer will stop sending telemetry after approximately
1 day give or take a few hours. Scanning and all other functions
continue normally.
- In another case SNFServer appears to stop accepting requests via XCI
after approximately one week give or take a few days.
- Other cases are completely random (est fewer than 5 cases total).
If you come across this scenario please let us know all of the data
you can about the situation and then please run your SNFServer in
debug mode (see next item) to help us track down this critter.
SNFServer now has a debug mode. If "debug" or "Debug" are found in
the path to the SNFServer.exe then debug mode is turned. Most commonly
to run SNFServer in debug mode rename it to SNFDebugServer.exe.
When in debug mode SNFServer will make a thread status report to the
console once per second along with the usual activity information. The
idea is to pipe all of this information to a log file so that when the
above bug occurs we can record the status of all of the active threads
at that time, before, and after.
For example:
/SNF/SNFServer.exe /SNF/snf_engine.xml > debuglog
---- now some good news ---
There is a new feature in SNFServer. When there is a new rulebase
file available SNFServer can call a user-defined script to retrieve
the new rulebase file. We've also provided that script and set up the
default settings to call it ;-)
The script name is getRulebase.cmd on Win* systems and simply
getRulebase on *nix systems. Please read the readme files and check
your configuration files to make sure that the script is setup
properly for your system. Wget and Gzip utilities are included in all
of the above distributions for your convenience.
If the script fails to replace the rulebase file then it will be
retried after 3 minutes (default). Retries will continue until the
script is successful.
-- The feature can be turned off.
-- SNFServer still produces an UpdateReady.txt file so if you want to
continue using that methodolgy nothing will break -- though you should
turn off the in your config file.
-- If you write your own script or want to launch the script some
other way (such as calling cmd or start with special options) then you
can do that -- but be careful! The update-script engine runs in it's
own thread and makes a system() call when triggered. If your script
fails to return then the update-script thread will be stuck waiting
for it to return. Remember: what you put into the call= attribute will
be passed to system() when the feature is triggered. The best way to
do anything special there is to write a script that does what you want
and have the update-script mechanism call that script. It's probably
not a good idea to put a lot of special switches and "other craziness"
in the call= attribute --- If you need them, put them in your script
and keep the call= simple :-)
2008-03-20 MDaemon Plugin SNFv2-9rc4.11.4 Posted
I have just posted the latest beta (release candidate) MDaemon plugin.
You can find the latest betas here:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
This distribution includes an automated update utility that is
triggered from the SNFServer engine running in the plugin. When a
newer rulebase file is available an UpdateAvailable.txt file is
created in the SNF directory. The getRulebase.cmd script can be
scheduled to run once per minute. When the UpdateAvailable.txt file is
present the script will download, validate, and install the latest
rulebase file. Before using the getRulebase.cmd script be sure to edit
the top of it to establish the correct working directory, license ID,
and authentication string.
Engine improvements and updates to the SNFClient utility are also
included...
A few excerpts from the change log:
20080319 - Version SNF2-9rc4.11
- Added IPScan on-off to snfmdplugin.xml. This allows users to turn off the
IPScan feature without editing the Plugins.dat file as was previously
required. The feature can now be enabled or disabled at will by editing the
configuration file.
- Added Configuration editor options to snfmdplugin.xml. Previously the built-
in configuration function was hard coded to start notepad with the config
file. Now the system() call made by the ConfigFunc() can be edited in the
configuration file. The configuration file name can be appended to the
command optionally. The default is still to start notepad and append the
configuration file path so that it is loaded automatically. It is hoped that
GUI based configuration editors for the SNF plugin will be built by third
parties and in the mean time folks can now configure their favorite XML file
editor to modify their SNF plugin configuration.
- Modified API use fixed shutdown bug - The plugin used to initialize the SNF
scanning engine when the DLL was loaded and would shut it down when the DLL
was unloaded. Now the Startup and Shutdown functions in the MDaemon plugin
API. This ensures that the engine components are started and shutdown in the
proper sequence.
- Included new SNFEngine core (excerpts from that change log included).
20080318 - SNF2-9rc1.11.exe Consolidated several mods/fixes
- Corrected scan error logging bug. Was posting <s/> now posts <e/>.
- Updated scan error logging to be more uniform with non-scan errors.
- Enhanced error and exception reporting in SNFMulti.cpp
scanMessageFile().
- Enhanced exception handling in networking module. All exceptions now
throw descriptive runtime_error exceptions.
2008-03-07 Version 2-9rc1.8.2 Release Candidate (Std Test Package) Released
This is the first release candidate for what will become version 3 this quarter!
You can find the latest updates here as they arrive:
http://kb.armresearch.com/index.php?title=Message_Sniffer. GettingStarted.Distributions#NEW_SNF_V2-9_Wide_Beta
Over the next few days we will be updating the MDaemon DLL with the
new engine and a new feature or two. Then we will update the source distribution for *nix & OEM systems. Then we will be launching
two SDKs -- one is a .SO for *nix systems
and the other is a DLL for Win* systems. Along the way we will be launching a new web site with documentation
for the new version. Then later this year (Q2 - Q3 perhaps) we'll be launching DNS based IP
reputation services.
For now -- back to this moment in time and the new SNFServer and
SNFClient release. There are extensive updates to both the client and
server programs. Be sure to go through the readme files if you are
upgrading.
Also - if you are upgrading you will want to update your
snf_engine.xml file to cover the new features. (GHASP! What if I
forget to do that?!!) -- If you don't get to it right away then your
existing snf_engine.xml file will work fine... but do get the update
process on your to-do list so you can take advantage of the new
features and improved default settings.
Here is a chunk of the change log to show you what is new since version 2-9b1.5.1:
20080306 - SNF2-9rc1.8.exe (FIRST RELEASE CANDIDATE for VERSION 3!)
-
Added Drilldown Header Directive Functions - When the candidate source IP
comes from a header matching a drilldown directive the IP is marked "Ignore"
in GBUdb and the candidate is no longer eligible to be the source for that
message. This allows SNF to follow the trusted chain of devices (by IP) down
to the actual source of the message. It is handy for ignoring net blocks
because it can match partial IPs but it is designed to allow SNF to learn
it's way through the servers at large ISPs so that the original source for
each message can be evaluated directly.
- Added Source Header Directive Functions - This feature allows SNF to
acquire the source IP for a message from a specific header rather than
searching through the Received headers in the message. This is useful
when the original source for a message is not represented in Received
headers. For example: Hotmail places the originating source IP in a
special header and does not provide a Received header for that IP.
This feature is protected from abuse by a "Context" feature which only
activates the source header directive when specific content is found
in a specific received header. Using the above example, this feature
can be configured so that a Hotmail source header would only be read
if the top Received header contained "hotmail.com [" indicating that
the ptr lookup for the header matched the hotmail domain. Note: When a
source is pulled from a header directive that source is put into a
synthetic Received header and injected into the scanning stream (not
the message) as the first Received header.
- Added forced source IP to XCI - It is now possible to "inject" or "force"
the source IP for any message by providing that IP in the XCI request or
directly in a scan...() function call. This allows the calling application
to provide the source IP for a message ahead of any Received headers that
might be in the message. This is useful when the calling application knows
the original source IP for the message but that IP is not represented in
the Received headers and it is not desireable to use the Source Header
Directive mechanism.
- Added forced source IP mode to SNFClient - It is now possible to call the
SNFClient utility with an IP4Address using the syntax:
SNFClient -source=12.34.56.78
The -source mode of SNFClient exercises the forced source IP feature in
the XCI (see above)
- Added Status Report features to SNFClient and XCI - It is now possible to
request the latest status.second, status.minute, or status.hour data via
the XCI and SNFClient. The syntax for requesting a status report using the
SNFClient is:
SNFClient -status.second
SNFClient -status.minute
SNFClient -status.hour
In addition to providing status reports the SNFClient in this mode will
return a nonzero value (usually 99) if it is unable to get a status report
from SNFServer. This feature can be used to verify that SNFServer is up
and responding. If SNFServer is OK then the result code returned is 0.
- Added result codes to SNFClient - test and XCI IP test functions - The XCI
engine has been upgraded to provide the range value for the IP under test
as well as the symbolic result code associated with that range. This allows
the -test function to provide results that are consistent with the GBUdb
configuration without additional processing: For example, if the IP falls
in the Caution range then the Caution result code will be returned just
as if a message had been scanned with the same IP and no pattern match
occurred. The same is true for Truncate and Black range hits.
- Added Timestamp and Command Line Parameter data to SNFClient.exe.err - When
an error occurs with SNFClient that may not appear in the SNFServer logs an
entry is appended to the SNFClient.exe.err file. That in itself is not new.
The new feature is that the entries added to the SNFClient.exe.err file now
include timestamp and command line data to aid in debugging.
- Added BIG-ENDIAN Conversion - When the SNFServer program is compiled on a
system that uses a BIG-ENDIAN processor (such as a power-mac) the rulebase
load process now includes a routine to convert the token matrix from it's
native LITTLE-ENDIAN format to a BIG-ENDIAN format. This solves a bug where
Power-Mac (and presumably other BIG-ENDIAN systems) could compile and run
the SNF* software but were unable to capture spam because the token matrix
in the rulebase file was misinterpreted.
Note: The BIG-ENDIAN Conversion feature is still considered experimental
because it has not yet been thoroughly tested.
- Updated the Configuration Log to include all of the current configuration
features and to improve it's readability.
20080207 - SNF2-9b1.7.exe
- SYNC Timeout now 2x SYNC Schedule
- SNFServer now produces an UpdateReady.txt file when the UTC timestamp on
the SYNC server is newer than the UTC timestamp of the active rulebase. It
is presumed that a suitable update script or program will run periodically
and download a fresh rulebase file if the UpdateReady.txt file is present.
The update script should remove the UpdateReady.txt file when it completes
a successful download of the new rulebase file.
- Added available rulebase UTC in status reports <udate utc.../>
- Added Automatic path fixup for ending / or \
- Added option to use local time in log rotation <rotation localtime='no'/>
The default is still utc.
2008-03-05 MX Uptime adds Fully Integrated SNF!
The newest version of Message Sniffer is now an integral component of MX Uptime's plugin for MailEnable. Anyone wishing to use SNF only needs to enter their license ID and authentication string, then check the box :-) Screenshot for integration.
|