SuricataThe Open Information Security Foundation (OISF) is a non-profit foundation organized to build a next generation IDS/IPS engine.  The OISF has formed a multi-national group of the leading software developers in the security industry.  In addition to developers and a consortium consisting of leading cyber security companies, OISF has engaged the open source security community to identify current and future IDS/IPS needs and desires. 

OISF’s primary goal is to remain on the leading edge of open source IDS/IPS development, community needs and objectives.  This is only attainable if you, the community, get involved.  We welcome participation large and small and have built working groups and mailing lists to engage and educate all interested people and organizations.

Funding for the OISF comes from the 
US Department of Homeland Security (DHS) and a number of private companies that form the OISF Consortium. These companies gain a non-gpl limited license for the engine in return for their ongoing support. Over time, OISF will take on new projects and challenges.  Future OISF project proposals are welcome and should be submitted in summary form using the ‘Contact Us’ link above.

Thank you for visiting OISF!

Get Involved

get involved
• Organizations
Companies
Individuals
• Developers

Click here to find out how you can get involved!

Join the Mailing List

openinfosecfoundationReceive all of the latest Open Information Security Foundation updates directly.
Sign up here.

Download Suricata

Suricata Logo

Suricata is our next generation IDS/IPS engine.  Start using it today!

The OISF development team is proud to announce Suricata 1.1.1. This is the first maintenance update of the 1.1 series. It brings an important bug fix. Upgrading is highly recommended.

Get the new release here: http://www.openinfosecfoundation.org/download/suricata-1.1.1.tar.gz

Fixes

- Fixed a bug that make the SMTP parser crash on certain traffic.
- AF_PACKET compilation on modern Linux versions (such as Fedora 16) was fixed.

Known issues & missing features

If you encounter issues, please let us know! As always, we are doing our best to make you aware of continuing development and items within the engine that are not yet complete or optimal.  With this in mind, please notice the list we have included of known items we are working on.

See http://redmine.openinfosecfoundation.org/projects/suricata/issues for an up to date list and to report new issues. See http://redmine.openinfosecfoundation.org/projects/suricata/wiki/Known_issues for a discussion and time line for the major issues.
The OISF development team is proud to announce Suricata 1.1. This is the first stable release after the 1.0 series. It brings significant gains in performance, stability and accuracy. It is the result of more than a year of work by the development team and our contributors, resulting in a 70% growth of our code base.

Get the new release here: http://www.openinfosecfoundation.org/download/suricata-1.1.tar.gz

The configuration file has evolved but backward compatibility is provided. We thus encourage you to update your Suricata configuration file. Upgrade guidance is provided here: https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Upgrading_Suricata_10_to_Suricata_11

Notable Improvements

- performance improvements
  - new default pattern matcher
  - multi pattern matcher inspection of HTTP buffers
  - improved running modes
- accuracy was greatly improved
- improved logging
  - extended HTTP logging
  - support of stream event logging
- IPS improvements
  - inline mode for stream engine
  - new keyword and running options for Netfilter based IPS
- removal of the unified1 output plugins (#353)

New features

- new keywords ssl_state, ssl_version (#258, #262).
- support for http_raw_header, http_stat_msg, http_stat_code and http_raw_uri keywords (#259, #260).
- new keyword support: nfq_set_mark
- support for suppress keyword was added (#274)
- byte_extract keyword support was added
- new default pattern matcher, Aho-Corasick based, that uses much less memory and performs better
- fast_pattern & multi pattern matching support for HTTP buffers
- extended HTTP request logging for use with (among other things) http_agent for Sguil (#38)
- new counters in stats.log for flow and stream engines (#348)
- AF_PACKET support for high speed packet capture
- advanced and fine tuning of CPU affinity setting for enhanced multicore performances
- "replace" keyword support for IPS mode (#303)
- new "workers" runmode for multi-dev and/or clustered PF_RING, AF_PACKET, pcap
- added "stream-event" keyword to match on TCP session anomalies
- Inline mode for the stream engine (#230, #248)
- Included an example decoder-events.rules file
- pcap logging / recording output was added
- basic SCTP protocol parsing was added
- reference.config support as supplied by ET/ETpro and VRT
- smtp protocol parser and protocol detection was added
- better handling of detection for timed out TCP sessions
- improved protocol detection accuracy with additional support for port based detection

Fixes since 1.1rc1

- CUDA build fixed
- minor pcap, AF_PACKET and PF_RING fixes (#368)
- bpf handling fix
- Windows CYGWIN build
- more cleanups

Known issues & missing features

If you encounter issues, please let us know! As always, we are doing our best to make you aware of continuing development and items within the engine that are not yet complete or optimal.  With this in mind, please notice the list we have included of known items we are working on.

See http://redmine.openinfosecfoundation.org/projects/suricata/issues for an up to date list and to report new issues. See http://redmine.openinfosecfoundation.org/projects/suricata/wiki/Known_issues for a discussion and time line for the major issues.

The OISF development team is proud to announce Suricata 1.1 beta 3. This release is the result of 6 months of work. At our last brainstorm session at the RAID 2011 conference, one of the things that was decided is do more frequent releases. It's our intent to do a release at least once a month with a stable at least once every two months. Today's 1.1beta3 release is starting this new cycle.

Get the new release here: http://www.openinfosecfoundation.org/download/suricata-1.1beta3.tar.gz

The new beta comes with a great number of improvements and fixes.

New features

- af-packet support for high speed packet capture
- "replace" keyword support (#303)
- new "workers" runmode for multi-dev and/or clustered PF_RING, AF_PACKET, pcap
- added "stream-event" keyword to match on TCP session anomalies
- support for suppress keyword was added (#274)
- byte_extract keyword support was added

Improvements

- improved handling of timed out TCP sessions in the detection engine
- unified2 payload logging if detection was in the HTTP state (#264)
- improved accuracy of the HTTP transaction logging
- support for larger (64 bit) Flow/Stream memcaps (#332)
- major speed improvements for PCRE, including support for PCRE JIT
- support setting flowbits in ip-only rules (#292)

Under the hood

- performance increases on SSE3+ CPU's
- overhaul of the packet acquisition subsystem
- packet based performance profiling subsystem was added
- TCP SACK support was added to the stream engine
- updated included libhtp to 0.2.6 which fixes several issues
- 297 files changed, 41525 insertions(+), 9032 deletions(-)

Notable Fixes

- ip_proto related FN fixed (#340)
- "tag" fixes and cleanups
- many misc fixes

Known issues & missing features

This is a beta release so it can be a little rough although the stability should be good.

As always, we are doing our best to make you aware of continuing development and items within the engine that are not yet complete or optimal.  With this in mind, please notice the list we have included of known items we are working on.

See http://redmine.openinfosecfoundation.org/projects/suricata/issues for an up to date list and to report new issues. See http://redmine.openinfosecfoundation.org/projects/suricata/wiki/Known_issues for a discussion and time line for the major issues.

The OISF development team is proud to announce Suricata 1.1rc1, the first (and hopefully only) release candidate for Suricata 1.1. This release fixes a number of issues in the 1.1beta3 release. In general it's fairly small patchset aimed at stabilizing the 1.1 codebase.

Get the new release here: http://www.openinfosecfoundation.org/download/suricata-1.1rc1.tar.gz

The new release comes with a number of important improvements and fixes.

New features

- extended HTTP request logging for use with (among other things) http_agent for Sguil (#38)
- AF_PACKET report drop stats on shutdown (#325)
- new counters in stats.log for flow and stream engines (#348)

Improvements

- SMTP parsing code support for BDAT command (#347)
- HTTP URI normalization no longer converts to lowercase (#362)
- AF_PACKET works with privileges dropping now (#361)
- Prelude output for state matches (#264, #355)

Under the hood

- update of the pattern matching code that should improve accuracy
- rule parser was made more strict (#295, #312)

Notable Fixes & Changes

- multiple event suppressions for the same SID was fixed (#366)
- several accuracy fixes
- removal of the unified1 output plugins (#353)

Known issues & missing features

This is a "release candidate"-quality release so the stability should be good although unexpected corner cases might happen. If you encounter one, please let us know!

As always, we are doing our best to make you aware of continuing development and items within the engine that are not yet complete or optimal. With this in mind, please notice the list we have included of known items we are working on.

See http://redmine.openinfosecfoundation.org/projects/suricata/issues for an up to date list and to report new issues. See http://redmine.openinfosecfoundation.org/projects/suricata/wiki/Known_issues for a discussion and time line for the major issues.

Brainstorming Session Summary

Phase Three Dev Roadmap

Developed at RAID 2011, Menlo Park, San Francisco CA

Monday September 19, 2011

 

 

The Open Information Security Foundation (OISF) is a non-profit foundation organized to build a next generation IDS/IPS engine, Suricata. 

 

The primary goal of this our fourth Brainstorming Session was to review and adjust the Development Roadmap for Phase Three. Following is the result of that meeting and discussion.

 

Topics and features that gained consensus and are reasonably feasible are listed here. They are rated by priority and resources required. Highest priority items with the least resources required will generally be the first to be attempted. This is a work in progress. All comments, additions, adjustments welcome! 

 

First, overall results of the meeting:

 

Bro

The Bro team was present and extremely helpful, thanks to all! We learned a lot about our similarities and differences, and have identified a number of places where code could be shared, event data and even reputation data. We are resolved to pursue a much closer relationship with the Bro team and Bro itself, including exploring how Suricata and Bro can work together in realtime to share data and events. They are very complementary tools. 

 

Remote Attendance

We made our first attempt at mass remote attendance using a conference line, Google+ hangouts, and then Webex. The conference line was not useful. Google+ was extremely useful but we unfortunately hit the max attendees in the room quickly. (This max has since been lifted by Google). We then shifted to Webex which was a great success. 

 

Remote users had sound difficulties which we can solve technically at the next meeting. But were able to speak to the room via PA and see via video. Feedback was extremely positive. We will plan to make this a more technically solid feature at the next brainstorming meeting. We will also shoot for a more neutral time of day to accommodate more eastern and western hemisphere users. 

 

Library-ization

It was agreed to continue to build and develop toward being able to separate Suricata’s core functions to libraries to make them available for use in other tools. Lib-HTP is already a separate module. Suricata’s stream reassembly will be the next function to be separated into a library over time. 

 

Universal Ruleset Language

The idea of a universal descriptive language was brought up for discussion again. There are a number of organizations that have expressed interest in this idea, so we will pursue getting a project started. This could be the foundation for a future new language for Suricata. 

 

The concept in brief is a universal and very descriptive language that can be used to describe the exploitation of vulnerabilities, traffic on a network, state of a protocol, etc. The goal being to have a central language where an issue can be described and output parsers that put that into many different formats, including snort syntax, blacklists, url blocklists, other IDS formats, web app firewalls, etc. 

 

Roadmap Features:

 

SSL Analyzer: High Priority / Medium Resources required

This module will be implemented in two phases. The first phase will do the following:

 

  1. Verify the cert validity, chain, and check CRL
  2. Allow admins to white/blacklist certain certificates 
  3. Log certificates used, cipher, and timestamp
  4. User configurable alerts based on CA, whether a cert has been seen recently or ever, when a cert is bad or on a CRL. 

 

Phase two will include the ability to decrypt sessions where keys are intercept-able, and the ability to provide private keys for local ssl relationships for decryption and analysis. We will consider the use of commodity crypto acceleration cards for this phase especially considering their reasonable cost.

 

 

IP and DNS Reputation Distribution: High Priority / High Resources Required

IP reputation is already implemented in the Suricata Engine, but only at a basic level. We have stumbled on development of a larger system to allow live bi-directional data distribution due to the scale of the project and numerous issues to solve. 

 

It was decided by the group to take this in smaller steps, and thus this phase will take an incremental step forward and design a static database model that will be extremely small (less than 10megabytes) that could be imported on a regular basis and replace in -memory data on demand. This will allow immediate use of IP Reputation data and allow live updates with minimal transport complexity. 

 

Configuration options will be made available to set thresholds per category to allow either alerting or blocking per stream at setup, and checks within the rules language to allow queries. A directive such as this will be the goal:

 

ip_rep:<category>,<=>,int;    

 

This will return true or false. The user should be able to determine if a no-data means true or false. 

 

We also need to look into using something like the Common Intelligence Framework (CIF), and other similar projects for transport of data.

 

 

DNS Preprocessor and Anomaly Detection: High Priority / Medium Resources

This preprocessor will process and log all dns requests detected in udp or tcp. Logging will be for a user-configurable time and into an in-memory database of a format to be determined. Query and response and attributes will be logged. Alerting may be done based on user-configurable attributes.

 

This module should be prepared to interface with DNS Reputation services to be implemented later and be able to make an alert/block decision based on blacklisting of the domain requested. Perhaps even fake the response to a defined IP and block the true response.

 

A second portino of this task will build an external tool (i.e. not in the packet processing path) to analyze this DNS database for at least the following attributes:

 

  1. Hosts with significantly more frequent lookups than peers in their network.
  2. Hosts with lookups resulting in frequent low TTL responses
  3. Domains that resolve to different IP addresses frequently
  4. Possible analysis of variance in DNS queries for the same domain (potential covert channels)
  5. Very regularly timed queries for the same domain name.

 

This module should make available the rules directive dns_name: parameter, which will be the contents of the domain name in a DNS query, or if known the domain name that resulted in the response containing a specified IP. For example, to check that the remote IP address in a rule for a Microsoft Patch update came in the response to a DNS query containing microsoft.com. 

 

 

Time Based Counters: Medium Priority / Medium Resources Required

This will be a flowbit/flowvar or thresholding style directive to allow checking of timestamp of a previous event. For example, to set a flowbit and timestamp for an event, upon a second occurrence verify that it was within or outside a certain time interval. A command and Control channel for example that checkins in every 15 minutes but uses a url that is not extremely unique. If it happens on a regular basis be able to create an event. 

 

 

FTP Port Prediction: Low Priority / Low Resources

This module would be an addition to the current ftp protocol identification module. It will watch the port commands on the control channels to predict the data port coming. Then allow analysis of just that data stream.

 

 

GEO IP: High Priority / Low Resources

This module will use a geo-ip database such as Maxmind to allow geolocation of IP addresses. 

 

 

Live Ruleset Swapping: High Priority / Medium Resources

This will allow signaling Suricata to begin a ruleset reload while still running. It will reload from the same configuration files and then swap to the new ruleset using the same state table and var table. 

 

This will of course require more memory in many cases, but was determined to be a sufficiently valuable feature. 

 

 

 

Thanks to everyone who was able to attend in person and remotely. Turnout was great and the discussions as always were very productive and collaborative. Suricata is a great tool because of the community, it’s collective intelligence, and the willingness of everyone involved to chip in and help. I know I speak for the entire OISF team in saying thank you for your energy and ideas.

 

 

PDF Version