Skip to content

Commit 56da56c

Browse files
authored
Merge pull request #1833 from stratosphereips/develop
Slips v1.1.18
2 parents 3166690 + 49a1c15 commit 56da56c

218 files changed

Lines changed: 9904 additions & 2883 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: "List Test Files"
2+
description: "Build JSON matrix of test files"
3+
inputs:
4+
test_dir:
5+
description: "Directory to search for test_*.py files"
6+
required: true
7+
output_prefix:
8+
description: "Optional prefix to prepend to each file entry in the output array"
9+
required: false
10+
default: ""
11+
outputs:
12+
test_files:
13+
description: "JSON array of integration test files (relative to tests/)"
14+
value: ${{ steps.set-matrix.outputs.files }}
15+
16+
runs:
17+
using: "composite"
18+
steps:
19+
- id: set-matrix
20+
shell: bash
21+
run: |
22+
# Find files in test_dir/ and optionally prefix entries for consumers.
23+
PREFIX="${{ inputs.output_prefix }}"
24+
FILES=$(find "${{ inputs.test_dir }}" -name "test_*.py" -printf "%P\n" | sed "s|^|${PREFIX}|" | jq -R -s -c 'split("\n")[:-1]')
25+
echo "files=$FILES" >> "$GITHUB_OUTPUT"

.github/workflows/integration-tests.yml

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,20 @@ on:
77
- 'develop'
88

99
jobs:
10+
list-integration-tests:
11+
runs-on: ubuntu-latest
12+
outputs:
13+
test_files: ${{ steps.list.outputs.test_files }}
14+
steps:
15+
- uses: actions/checkout@v5
16+
- id: list
17+
uses: ./.github/actions/list-tests-dir
18+
with:
19+
test_dir: tests/integration
20+
output_prefix: integration/
21+
1022
integration-tests:
23+
needs: list-integration-tests
1124
runs-on: ubuntu-22.04
1225
timeout-minutes: 1800
1326

@@ -23,33 +36,28 @@ jobs:
2336
TF_ENABLE_ONEDNN_OPTS: 0
2437

2538
strategy:
39+
fail-fast: false
2640
matrix:
27-
test_file:
28-
- test_config_files.py
29-
- test_portscans.py
30-
- test_dataset.py
31-
- test_pcap_dataset.py
32-
- test_zeek_dataset.py
33-
- test_fides.py
34-
- test_iris.py
41+
test_file: ${{ fromJson(needs.list-integration-tests.outputs.test_files) }}
3542

3643
steps:
37-
- uses: actions/checkout@v5
38-
with:
39-
ref: ${{ github.ref }}
40-
fetch-depth: ''
41-
42-
- name: Start Redis
43-
uses: ./.github/actions/start-redis
44-
45-
- name: Run Integration Tests for ${{ matrix.test_file }}
46-
run: |
47-
python3 -m pytest tests/integration_tests/${{ matrix.test_file }} -p no:warnings -vv -s -n 3
48-
49-
- name: Upload Artifacts
50-
if: always()
51-
uses: actions/upload-artifact@v5
52-
with:
53-
name: ${{ matrix.test_file }}-integration-tests-output
54-
path: |
55-
output/integration_tests
44+
- uses: actions/checkout@v5
45+
with:
46+
ref: ${{ github.ref }}
47+
fetch-depth: 0
48+
49+
- name: Start Redis
50+
uses: ./.github/actions/start-redis
51+
52+
- name: Run Integration Tests for ${{ matrix.test_file }}
53+
run: |
54+
python3 -m pytest tests/${{ matrix.test_file }} -p no:warnings -vv -s -n 3
55+
56+
- name: Upload Artifacts
57+
if: always()
58+
uses: actions/upload-artifact@v5
59+
with:
60+
# Replaces slashes with underscores for valid artifact naming
61+
name: ${{ github.run_id }}-${{ strategy.job-index }}-integration-output
62+
path: |
63+
output/integration

.github/workflows/publish-slips-images.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ jobs:
4343
needs: setup
4444
runs-on: ubuntu-22.04
4545
strategy:
46+
# prevents the whole job from being canceled if one entry fails
47+
fail-fast: false
4648
matrix:
4749
image_type:
4850
- name: slips

.github/workflows/unit-tests.yml

Lines changed: 39 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -7,110 +7,57 @@ on:
77
- 'develop'
88

99
jobs:
10+
# This job finds all test files and creates a JSON array for the matrix
11+
list-tests:
12+
runs-on: ubuntu-latest
13+
timeout-minutes: 120
14+
outputs:
15+
test_files: ${{ steps.list.outputs.test_files }}
16+
steps:
17+
- uses: actions/checkout@v5
18+
- id: list
19+
uses: ./.github/actions/list-tests-dir
20+
with:
21+
test_dir: tests/unit
1022

1123
unit-tests:
24+
needs: list-tests
1225
runs-on: ubuntu-22.04
1326
timeout-minutes: 120
1427

28+
# Do not stop other tests if one file fails
29+
strategy:
30+
fail-fast: false
31+
matrix:
32+
test_file: ${{ fromJson(needs.list-tests.outputs.test_files) }}
33+
1534
container:
1635
image: stratosphereips/slips_dependencies
1736
# TensorFlow + multiprocessing + pytest -n can hit /dev/shm limits.
1837
options: --shm-size=2g
1938

20-
2139
env:
2240
TF_CPP_MIN_LOG_LEVEL: 3
2341
TF_ENABLE_ONEDNN_OPTS: 0
2442

25-
strategy:
26-
matrix:
27-
test_file:
28-
- test_input.py
29-
- test_main.py
30-
- test_conn.py
31-
- test_downloaded_file.py
32-
- test_ssl.py
33-
- test_tunnel.py
34-
- test_ssh.py
35-
- test_dns.py
36-
- test_notice.py
37-
- test_software.py
38-
- test_smtp.py
39-
- test_whitelist.py
40-
- test_arp.py
41-
- test_arp_poisoner.py
42-
- test_arp_filter.py
43-
- test_blocking.py
44-
- test_unblocker.py
45-
- test_flow_handler.py
46-
- test_horizontal_portscans.py
47-
- test_http_analyzer.py
48-
- test_vertical_portscans.py
49-
- test_network_discovery.py
50-
- test_virustotal.py
51-
- test_update_file_manager.py
52-
- test_threat_intelligence.py
53-
- test_slips_utils.py
54-
- test_slips.py
55-
- test_profiler.py
56-
- test_profiler_worker.py
57-
- test_profilers_manager.py
58-
- test_leak_detector.py
59-
- test_ip_info.py
60-
- test_evidence.py
61-
- test_asn_info.py
62-
- test_urlhaus.py
63-
- test_markov_chain.py
64-
- test_daemon.py
65-
- test_go_director.py
66-
- test_notify.py
67-
- test_checker.py
68-
- test_base_model.py
69-
- test_set_evidence.py
70-
- test_trustdb.py
71-
- test_cesnet.py
72-
- test_output.py
73-
- test_riskiq.py
74-
- test_spamhaus.py
75-
- test_scan_detections_db.py
76-
- test_circllu.py
77-
- test_evidence_handler.py
78-
- test_evidence_logger.py
79-
- test_evidence_formatter.py
80-
- test_alert_handler.py
81-
- test_redis_manager.py
82-
- test_ioc_handler.py
83-
- test_timeline.py
84-
- test_database.py
85-
- test_symbols_handler.py
86-
- test_profile_handler.py
87-
- test_process_manager.py
88-
- test_metadata_manager.py
89-
- test_host_ip_manager.py
90-
- test_rnn_cc_detection.py
91-
- test_idea_format.py
92-
- test_fides_sqlite_db.py
93-
- test_fides_module.py
94-
- test_fides_queues.py
95-
- test_fides_bridge.py
96-
9743
steps:
98-
- uses: actions/checkout@v5
99-
with:
100-
ref: ${{ github.ref }}
101-
fetch-depth: 0
102-
103-
- name: Start Redis
104-
uses: ./.github/actions/start-redis
105-
106-
- name: Run Unit Tests for ${{ matrix.test_file }}
107-
run: |
108-
python3 -m pytest tests/${{ matrix.test_file }} -p no:warnings -vv -s -n 5
109-
110-
- name: Upload Artifacts
111-
if: always()
112-
uses: actions/upload-artifact@v5
113-
with:
114-
name: test_slips_locally-unit-tests-output
115-
path: |
116-
output/unit_tests
44+
- uses: actions/checkout@v5
45+
with:
46+
ref: ${{ github.ref }}
47+
fetch-depth: 0
48+
49+
- name: Start Redis
50+
uses: ./.github/actions/start-redis
51+
52+
- name: Run Unit Tests for ${{ matrix.test_file }}
53+
run: |
54+
# The path is reconstructed here using the matrix variable
55+
python3 -m pytest tests/unit/${{ matrix.test_file }} -p no:warnings -vv -s -n 5
56+
57+
- name: Upload Artifacts
58+
if: always()
59+
uses: actions/upload-artifact@v5
60+
with:
61+
name: test_slips-output-${{ strategy.job-index }}
62+
path: |
63+
output/unit_tests

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,4 @@ appendonly.aof
177177
/slipsOut/metadata/slips.yaml
178178
/slipsOut/metadata/whitelist.conf
179179
/p2p_db.sqlite
180-
180+
old-pipeline/

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@
1818
[submodule "SlipsWeb"]
1919
path = SlipsWeb
2020
url = https://github.com/stratosphereips/SlipsWeb.git
21+
branch = master

.pre-commit-config.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ repos:
2222
- repo: https://github.com/astral-sh/ruff-pre-commit
2323
rev: v0.9.6
2424
hooks:
25-
# Run the linter.
2625
- id: ruff
2726
args: [ --fix ]
2827
# excludes formatting slips_files/common/imports.py

.secrets.baseline

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
"filename": "config/slips.yaml",
150150
"hashed_secret": "4cac50cee3ad8e462728e711eac3e670753d5016",
151151
"is_verified": false,
152-
"line_number": 222
152+
"line_number": 268
153153
}
154154
],
155155
"dataset/test14-malicious-zeek-dir/http.log": [
@@ -7185,5 +7185,5 @@
71857185
}
71867186
]
71877187
},
7188-
"generated_at": "2025-12-11T01:08:53Z"
7188+
"generated_at": "2026-03-02T22:46:58Z"
71897189
}

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
1.1.18 (Mar 3rd, 2026)
2+
3+
* Add the HTTPS anomaly detection module with adaptive baselines, confidence scoring, and detailed evidence reasons.
4+
* Enable ADWIN drift detection by default for HTTPS anomaly detection, with separate hourly and flow drift paths.
5+
* Add a local HTML report generator for HTTPS anomaly detection logs, with interactive charts and anomaly summaries.
6+
* Improve performance under high-throughput traffic and reduced OOM risk.
7+
* Improve Redis memory hygiene with tighter TTLs, capped zsets, periodic cleanups.
8+
* Cap non-HTTP port 80 checks in the HTTP analyzer to reduce resource spikes.
9+
110
1.1.17 (Jan 30th, 2025)
211

312
* Improve horizontal, vertical, and ICMP portscan detection logic and speed.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<h1 align="center">
2-
Slips v1.1.16
2+
Slips v1.1.18
33
</h1>
44

55

@@ -184,6 +184,7 @@ Slips key features are:
184184
* **Targeted Attacks and Command & Control Detection**: It places a strong emphasis on identifying targeted attacks and command and control channels in network traffic.
185185
* **Traffic Analysis Flexibility**: Slips can analyze network traffic in real-time, PCAP files, and network flows from popular tools like Suricata, Zeek/Bro, and Argus.
186186
* **Threat Intelligence Updates**: Slips continuously updates threat intelligence files and databases, providing relevant detections as updates occur.
187+
* **HTTPS Anomaly Detection**: Adaptive TLS/HTTPS anomaly detection with drift handling and a local HTML report generator for deep dives.
187188
* **Integration with External Platforms**: Modules in Slips can look up IP addresses on external platforms such as VirusTotal and RiskIQ.
188189
* **Graphical User Interface**: Slips provides a console graphical user interface (Kalipso) and a web interface for displaying detection with graphs and tables.
189190
* **Peer-to-Peer (P2P) Module**: Slips includes a complex automatic system to find other peers in the network and share IoC data automatically in a balanced, trusted manner. The P2P module can be enabled as needed.

0 commit comments

Comments
 (0)