Skip to content

Commit

Permalink
mqtt: test mqtt frames for truncated messages
Browse files Browse the repository at this point in the history
  • Loading branch information
hsadia538 authored and jasonish committed Aug 29, 2023
1 parent 3fce21b commit c971baf
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 0 deletions.
11 changes: 11 additions & 0 deletions tests/mqtt-frames-truncated/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Description
===========
Test MQTT frames[Pdu, Header, Data] for truncated messages where msg_len > max_msg_size.

PCAP
====
PCAP was shared by Sascha Steinbiss and was generated by setting up a Mosquitto server and recording communication between `mosquitto_sub` client and `local_broker` via a script.

Redmine ticket
==============
https://redmine.openinfosecfoundation.org/issues/5731
Binary file added tests/mqtt-frames-truncated/input.pcap
Binary file not shown.
18 changes: 18 additions & 0 deletions tests/mqtt-frames-truncated/suricata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
%YAML 1.1
---

outputs:
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
types:
- mqtt
- alert
- frame

app-layer:
protocols:
mqtt:
enabled: yes
max-msg-length: 60
17 changes: 17 additions & 0 deletions tests/mqtt-frames-truncated/test.rules
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
alert mqtt any any -> any any (msg:"mqtt Frame 1"; frame:pdu; content:"|10 1c|"; startswith; sid:1;)
alert mqtt any any -> any any (msg:"mqtt Frame 2"; frame:pdu; content:"|14|"; endswith; sid:2;)

alert mqtt any any -> any any (msg:"mqtt Frame 3"; frame:header; content:"|10|"; sid:3;)
alert mqtt any any -> any any (msg:"mqtt Frame 4"; frame:header; content:"|10 1c|"; sid:4;)

alert mqtt any any -> any any (msg:"mqtt Frame 5"; frame:pdu; content:"|17 0C E2|"; sid:5;)
alert mqtt any any -> any any (msg:"mqtt Frame 6"; frame:pdu; content:"|00 00 54 46|"; sid:6;)

# pre-boundary test for truncated data
alert mqtt any any -> any any (msg:"mqtt Frame 7"; frame:data; content:"|0a|"; sid:7;)

# At boundary test for truncated data
alert mqtt any any -> any any (msg:"mqtt Frame 8"; frame:data; content:"|00 04 4d 51 54 54 05|"; sid:8;)

# post-boundary test for truncated data
alert mqtt any any -> any any (msg:"mqtt Frame 9"; frame:data; content:"|c1 90 34|"; sid:9;)
51 changes: 51 additions & 0 deletions tests/mqtt-frames-truncated/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
requires:
min-version: 7

args:
- -k none

checks:
- filter:
count: 1
match:
alert.signature_id: 1
frame.type: "pdu"
- filter:
count: 1
match:
alert.signature_id: 2
frame.type: "pdu"
frame.complete: true
- filter:
count: 1
match:
alert.signature_id: 3
frame.type: "header"
frame.complete: true
- filter:
count: 1
match:
alert.signature_id: 4
frame.type: "header"
frame.length: 2
frame.complete: true
- filter:
count: 0
match:
alert.signature_id: 5
- filter:
count: 0
match:
alert.signature_id: 6
- filter:
count: 1
match:
alert.signature_id: 7
- filter:
count: 1
match:
alert.signature_id: 8
- filter:
count: 0
match:
alert.signature_id: 9

0 comments on commit c971baf

Please sign in to comment.