diff --git a/NEWS b/NEWS index e9769a31b6..2a17735a93 100644 --- a/NEWS +++ b/NEWS @@ -78,6 +78,10 @@ Changed Functionality ``policy/protocols/conn/community-id-logging.zeek`` was loaded before. This was fairly unusual and hard to debug behavior. +- Connections to broadcast addresses are not flipped based on ``likely_server_ports`` + anymore. Previously, broadcast packets originating from a likely server port + resulted in 255.255.255.255 being the originator in ``conn.log``. + Removed Functionality --------------------- diff --git a/src/packet_analysis/protocol/ip/IPBasedAnalyzer.cc b/src/packet_analysis/protocol/ip/IPBasedAnalyzer.cc index 345bfe0722..7a6874f6e6 100644 --- a/src/packet_analysis/protocol/ip/IPBasedAnalyzer.cc +++ b/src/packet_analysis/protocol/ip/IPBasedAnalyzer.cc @@ -171,7 +171,7 @@ zeek::Connection* IPBasedAnalyzer::NewConn(const ConnTuple* id, const detail::Co pkt->ip_hdr->FlowLabel(), pkt); conn->SetTransport(transport); - if ( flip ) + if ( flip && ! id->dst_addr.IsBroadcast() ) conn->FlipRoles(); BuildSessionAnalyzerTree(conn); diff --git a/testing/btest/Baseline/core.udp-broadcast-no-flip/conn.log.cut b/testing/btest/Baseline/core.udp-broadcast-no-flip/conn.log.cut new file mode 100644 index 0000000000..a284951a98 --- /dev/null +++ b/testing/btest/Baseline/core.udp-broadcast-no-flip/conn.log.cut @@ -0,0 +1,3 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +ts uid id.orig_h id.orig_p id.resp_h id.resp_p history +XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 192.168.1.1 40190 255.255.255.255 7437 D diff --git a/testing/btest/Traces/udp-broadcast.pcap b/testing/btest/Traces/udp-broadcast.pcap new file mode 100644 index 0000000000..986f725ad0 Binary files /dev/null and b/testing/btest/Traces/udp-broadcast.pcap differ diff --git a/testing/btest/core/udp-broadcast-no-flip.zeek b/testing/btest/core/udp-broadcast-no-flip.zeek new file mode 100644 index 0000000000..601d1f7290 --- /dev/null +++ b/testing/btest/core/udp-broadcast-no-flip.zeek @@ -0,0 +1,9 @@ +# @TEST-DOC: Pcap contains broadcast with port 40190 to port 7437. Set likely_server_ports to 40190 but don't expect this connection to be flipped. + +# @TEST-EXEC: zeek -b -r $TRACES/udp-broadcast.pcap %INPUT +# @TEST-EXEC: zeek-cut -m ts uid id.orig_h id.orig_p id.resp_h id.resp_p history < conn.log > conn.log.cut +# @TEST-EXEC: btest-diff conn.log.cut + +@load base/protocols/conn + +redef likely_server_ports += { 40190/udp };