Commit graph

7488 commits

Author SHA1 Message Date
Daniel Thayer
97160b15da Add a .travis.yml file 2018-02-02 15:29:03 -06:00
Johanna Amann
884f47a994 Merge remote-tracking branch 'origin/fastpath'
* origin/fastpath:
  Remove bro-plugins submodule from .gitmodules file
2018-02-01 13:21:31 -08:00
Daniel Thayer
5de87ce660 Remove bro-plugins submodule from .gitmodules file 2018-02-01 14:44:20 -06:00
Johanna Amann
a8c0580b45 Merge branch 'topic/johanna/openssl-1.1'
* topic/johanna/openssl-1.1:
  Fix recently introduced double free in OpenSSL code.
  Adjust coding style & fix test failures.
  Adapt most of the X509 support to OpenSSL 1.1
2018-01-30 14:33:32 -08:00
Jon Siwek
44175e0992 BIT-1894: fix bad integer casts in BIFs: sort, rand, order, to_int 2018-01-26 15:49:34 -06:00
Jon Siwek
fd91f58192 Updating submodule(s).
[nomail]
2018-01-26 11:32:03 -06:00
Robin Sommer
419e69f9e4 Updating submodule(s).
[nomail]
2018-01-19 15:17:32 -08:00
Jon Siwek
f25a1453ee Remove TODO comments about using explicit bool operators 2018-01-19 11:40:57 -06:00
Johanna Amann
41285abea5 Make nearly all bool operators explicit.
These are a bit dangerous because the casting can happen in quite
unexpected circumstances and lead to undesirable comparison results.
2018-01-18 14:02:03 -08:00
Jon Siwek
5ed5587b5c Merge remote-tracking branch 'origin/topic/feature/logging-filter-list'
* origin/topic/feature/logging-filter-list:
  Logging: implement get_filter_names and small fixes.

Removed some superfluous existence checks before deleting table indices.

BIT-1890 #merged
2018-01-17 16:17:43 -06:00
Johanna Amann
a4a9bf4199 Logging: implement get_filter_names and small fixes.
get_filter_names(id: ID) : set[string] returns the names of the current
list of filters for a specified log stream.

Furthermore this commit makes a number of logging functions more robust
by checking existence of values before trying to modify them. This
commit also really implements (and tests) the enable_stream function.
2018-01-17 09:47:20 -08:00
Jon Siwek
fc6e3b4e36 Merge remote-tracking branch 'origin/topic/johanna/recognize-websockets'
* origin/topic/johanna/recognize-websockets:
  HTTP: Recognize and skip upgrade/websocket connections.

BIT-1888 #Merged
2018-01-16 15:45:29 -06:00
Jon Siwek
09438d2d06 Merge remote-tracking branch 'origin/topic/johanna/conn-tunnels-empty'
* origin/topic/johanna/conn-tunnels-empty:
  Make tunnel_parents in conn.log optional.

BIT-1889 #merged
2018-01-16 14:56:15 -06:00
Jon Siwek
4bd066ef4f Updating submodule(s).
[nomail]
2018-01-16 13:01:19 -06:00
Johanna Amann
6f9524e082 Make tunnel_parents in conn.log optional.
This makes conn.logs a bit prettier (and smaller) because all lines that
do not use a tunnel will now have a "-" instead of the "(empty)" for
tunnel_parents.
2018-01-12 13:46:00 -08:00
Johanna Amann
bdb7f62335 Correct include-path in x509Common.h
The file used a relative path which leads to problems if it is included
by an external Plugin. This commit changes this to an absolute path,
like everywhere else.
2018-01-12 10:58:20 -08:00
Johanna Amann
cd345caadb Merge remote-tracking branch 'origin/master' into topic/johanna/websockets 2018-01-12 10:27:23 -08:00
Johanna Amann
cc738544eb Merge remote-tracking branch 'remotes/origin/topic/jsiwek/prealloc-ports'
* remotes/origin/topic/jsiwek/prealloc-ports:
  Clean up PortManager class, mark PortVal ctors deprecated.
  Add BRO_DEPRECATED macro.
  Preallocate all possible PortVals.

BIT-1881 #merged
2018-01-12 10:06:30 -08:00
Johanna Amann
762e3c9f12 Merge remote-tracking branch 'origin/topic/seth/add-file-lookup-functions'
* origin/topic/seth/add-file-lookup-functions:
  Functions for retrieving files by their id.

 BIT-1887 #merged
2018-01-12 09:46:24 -08:00
Jon Siwek
89ef5a7b7d Merge remote-tracking branch 'origin/fastpath'
* origin/fastpath:
  Fix a test that fails in some environments
2018-01-11 11:48:00 -06:00
Daniel Thayer
f7c115a47a Fix a test that fails in some environments
The "coverage/init-default.test" will always fail if there is a
path component named "build" anywhere before the bro install
directory (for example, if the tests are run from home dir of a user
named "build").  Fixed this by making a regex more specific so that
it matches the correct lines in loaded_scripts.log.
2018-01-10 13:23:30 -06:00
Seth Hall
7cb6cf24a6 Functions for retrieving files by their id.
There are two new script level functions to query and lookup files
from the core by their IDs.  These are adding feature parity for
similarly named functions for files.  The function prototypes are
as follows:

  Files::file_exists(fuid: string): bool
  Files::lookup_File(fuid: string): fa_file
2018-01-09 12:16:17 -05:00
Johanna Amann
8b28b73124 Add CVE ID for BIT-1856. 2018-01-02 09:12:09 +01:00
Jon Siwek
1c25df6f26 Merge remote-tracking branch 'origin/topic/seth/remove-dns-weird'
* origin/topic/seth/remove-dns-weird:
  Updated news.
  Remove some DNS weirds that caused volume and didn't help anyone.
2017-12-15 15:11:29 -06:00
Jon Siwek
4965a7e156 Fix typo in analyzer::Manager API docs 2017-12-13 14:24:54 -06:00
Seth Hall
f236dcdaa3 Updated news. 2017-12-13 15:09:52 -05:00
Seth Hall
ac955519b2 Remove some DNS weirds that caused volume and didn't help anyone.
These have been lingering for a while and they generally annoy
everyone because of the sheer volume.  They also don't really add
any useful information for debugging and they were generated differently
than most other weirds anyway (which was a little weird...).
2017-12-13 15:00:15 -05:00
Jon Siwek
d6d7f33f5c Clean up PortManager class, mark PortVal ctors deprecated.
Moved PortVal ctors back to public API, but deprecated, just in
case it helps give any external code a chance to adapt.
2017-12-12 11:35:55 -06:00
Jon Siwek
054c4a67c4 Add BRO_DEPRECATED macro. 2017-12-12 11:34:49 -06:00
Jon Siwek
1e4964de77 Preallocate all possible PortVals.
The performance benefit is small (maybe ~1% at most), however, it's a
trivial change without downsides.
2017-12-11 15:29:28 -06:00
Jon Siwek
895e7b06b1 Merge branch 'topic/jazoff/speedup-for'
* topic/jazoff/speedup-for:
  problem: for loops over empty tables are slow.

BIT-1878 #merged
2017-12-08 13:12:09 -06:00
Johanna Amann
03f98c7022 Fix recently introduced double free in OpenSSL code. 2017-12-07 14:47:56 -08:00
Justin Azoff
b730874ea1 problem: for loops over empty tables are slow.
This change doubles the performance of for loops over empty tables.

A bro binary that prints out this size shows for
testing/external/bro-testing/2009-M57-day11-18.trace, for loops are run
over tables of size:

11477 for size 0
8371 for size 1
1227 for size 3
239 for size 2
141 for size 6
57 for size 5
10 for size 4
5 for size 7
2 for size 13
2 for size 8
2 for size 11
1 for size 9

~53% of the for loops were across an empty table.  These loops come from
things like the for loop in the http script over c$http_state$pending

This change prevents the creation of an iteration cookie entirely if the
table is empty.

Using this test script:

    const scan_ports: table[port] of count = { };

    local x = 0;
    while ( x < 20000000 ) {
        for(p in scan_ports) {
        }
        ++x;
    }

$ time bro.orig -b ___bench.bro

real    0m10.732s
user    0m10.415s
sys     0m0.113s

$ time bro.nocookie -b ___bench.bro

real    0m4.694s
user    0m4.464s
sys     0m0.086s
2017-12-07 17:15:14 -05:00
Johanna Amann
6a93abea32 Adjust coding style & fix test failures.
I am still not 100% convinced that there is no memory leak hidden
somwehere...

This also makes everything compile with OpenSSL 1.0.2 for me.
2017-12-07 14:02:27 -08:00
Hilko Bengen
ea4cf7dbe9 Adapt most of the X509 support to OpenSSL 1.1 2017-12-06 00:07:49 +01:00
Johanna Amann
bfe94641cf Fix another gcc7 warning.
Warning is:

/home/johanna/bro/master/src/Type.cc: In member function 'virtual bool IndexType::DoUnserialize(UnserialInfo*)':
/home/johanna/bro/master/src/Type.cc:548:60: warning: enum constant in boolean context [-Wint-in-bool-context]
  indices = (TypeList*) BroType::Unserialize(info, TYPE_LIST);
                                                            ^
/home/johanna/bro/master/src/Type.cc: In member function 'virtual bool FuncType::DoUnserialize(UnserialInfo*)':
/home/johanna/bro/master/src/Type.cc:868:61: warning: enum constant in boolean context [-Wint-in-bool-context]
  args = (RecordType*) BroType::Unserialize(info, TYPE_RECORD);
                                                             ^
/home/johanna/bro/master/src/Type.cc:872:62: warning: enum constant in boolean context [-Wint-in-bool-context]
  arg_types = (TypeList*) BroType::Unserialize(info, TYPE_LIST);

This one is a really nice catch in my opinion. GCC is completely correct
- the 2nd argument to Unserialize is a bool. This means that all these
calls always evaluate to Unserialize(info, true). Which is equivalent
with the default, so I just removed the type from the call.

This was probably caused by someone thinking of BroVal::Unserialize,
which needs the type as the 2nd argument.
2017-12-05 11:30:06 -08:00
Johanna Amann
7c03f4dec0 Fix compile warnings raised by gcc7.
/home/johanna/bro/master/src/Sessions.cc: In member function 'void NetSessions::DoNextPacket(double, const Packet*, const IP_Hdr*, const EncapsulationStack*)':
/home/johanna/bro/master/src/Sessions.cc:343:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if ( ip_hdr_len > len )
       ~~~~~~~~~~~^~~~~
/home/johanna/bro/master/src/Sessions.cc:349:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if ( ip_hdr_len > caplen )
       ~~~~~~~~~~~^~~~~~~~
/home/johanna/bro/master/src/Sessions.cc:399:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if ( ip_hdr_len > len )
         ~~~~~~~~~~~^~~~~

In file included from /usr/include/machine/endian.h:6:0,
                 from /usr/include/sys/types.h:44,
                 from /usr/include/unistd.h:37,
                 from /home/johanna/bro/master/src/Anon.cc:2:
/home/johanna/bro/master/src/Anon.cc: In member function 'virtual ipaddr32_t AnonymizeIPAddr_Seq::anonymize(ipaddr32_t)':
/home/johanna/bro/master/src/Anon.cc:85:18: warning: operation on '((AnonymizeIPAddr_Seq*)this)->AnonymizeIPAddr_Seq::seq' may be undefined [-Wsequence-point]
  return htonl(seq++);
                  ^
2017-12-05 10:27:23 -08:00
Jon Siwek
8827ece34a Updating submodule(s).
[nomail]
2017-12-05 11:19:57 -06:00
Jon Siwek
ecfacbe96e Fix documentation for ReassemblerStats. 2017-12-05 11:01:09 -06:00
Jon Siwek
9d2c41a4ff Merge remote-tracking branch 'origin/topic/johanna/socks-password'
* origin/topic/johanna/socks-password:
  Do not log SOCKS passwords by default.

BIT-1791 #merged
2017-12-02 09:53:56 -06:00
Johanna Amann
8ba5c03538 Do not log SOCKS passwords by default.
This introduces a new option, SOCKS::default_capture_password which can
be used to specify if Socks passwords are logged by default

Like fot FTP/HTTP, this option is set to false by default.

Addresses BIT-1791
2017-12-01 14:36:57 -08:00
Johanna Amann
1f6954ca3e Add missing ; in SSL binpac parser.
Binpac for some reason also works without it.

Found by Luke Valenta.
2017-11-30 08:42:55 -08:00
Jon Siwek
f8f343fd3a Add --ccache option to configure script (requires CMake 3.10+).
This just provides a convient way of indicating that ccache should
be used as compiler-wrapper during builds. e.g. when I want dev/debug
builds that (re)compile quickly, I do:

./configure --build-type=debug --generator=Ninja --ccache
2017-11-29 14:11:37 -06:00
Johanna Amann
577357d509 Small fixes and changes for the recent ssl-keyexchange-event merge.
This commit fixes a few small issues.

* server key exchange parameters are only parsed when a named curve is
  given.

* I removed the ssl-verbose.bro and moved the functionality into the
  testcase.

  The information that we get with these events is likely irrelevant to
  the majority of Bro users; I do not think that we have to ship a
  script that uses them by default. A script like this would be
  something to publish via the Bro package manager instead; this is the
  approach that we have taken with a number of the recent SSL addition.

* I marked the ssl_server_curve event as deprecated. More information is
  contained in the new ssl_ecdh_server_params event.

  This is an events that is probably seldomly (or never) directly used
  by anyone; I plan to completely remove it right after the 2.6 release.
2017-11-28 12:33:27 -08:00
Johanna Amann
917d0c881a Merge branch 'topic/lukev/tls-ext' of https://github.com/bro/bro
* 'topic/lukev/tls-ext' of https://github.com/bro/bro:
  add btest w/ baseline for ssl-verbose testing dhe, ecdhe, and rsa key exchange logging
  now passing btest
  update documentation, fix whitespace errors, add certificate extraction to ssl-verbose script
  add verbose SSL logging output that includes cryptographic values
2017-11-28 12:11:38 -08:00
Jon Siwek
57b3e21de7 Merge remote-tracking branch 'origin/topic/robin/event-args'
* origin/topic/robin/event-args:
  Fix assignments to event arguments becoming visible to subsequent handlers.
2017-11-21 13:24:07 -06:00
Jon Siwek
787b1e6bf2 Merge branch 'topic/corelight/reporter-hook' of https://github.com/corelight/bro
* 'topic/corelight/reporter-hook' of https://github.com/corelight/bro:
  Add reporter hook.
2017-11-21 12:28:52 -06:00
Jon Siwek
deced3795c Fix a nb_dns.c compile error (older OSs) due to C90 vs C99. 2017-11-21 11:35:33 -06:00
Jon Siwek
82a51e0731 Merge branch 'topic/corelight/load-hook' of https://github.com/corelight/bro
* 'topic/corelight/load-hook' of https://github.com/corelight/bro:
  Fix and extend behavior of HookLoadFile

I refactored some parts of scan.l to avoid the ambiguity of some
branches returning 0 and some branches not returning anything.
2017-11-20 14:06:45 -06:00
Jon Siwek
26dc94c31d BIT-1827: fix error on initializing DNS w/ IPv6 nameserver.
This just skips over IPv6 nameserver addresses for now and uses the
first IPv4 one in the resolver config.  Should be possible to support
IPv6, but that may need more testing (e.g. need to make sure the code
will be portable to various platforms).
2017-11-20 11:36:04 -06:00