Commit graph

28199 commits

Author SHA1 Message Date
Manuel Ceroni
c554a3dd7c
Implemented site:traffic ts (#11100) (#11101)
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-21 14:59:34 +02:00
Matteo Biscosi
01bc48c74d Optimized and fixed top talkers not correctly calculated 2026-10-21 13:12:13 +02:00
Matteo Biscosi
a9b97da05a Optimized lua sorting functions 2026-10-21 13:12:13 +02:00
Ivan Nardi
39ad39a297 Limit the server ports of the assets to 64 2026-10-21 12:30:09 +02:00
Ivan Nardi
6e2a1de985
Limit the server ports of the assets saved to redis/DB (#11107)
Save at most MAX_NUM_ASSET_SERVER_PORTS (128) server ports per L4
protocol of a local host, keeping the lowest ports, in the server ports
bitmap saved to redis and in the asset info. A warning (once per host)
reports the number of ports and the host IP when the limit is exceeded.
2026-10-21 11:46:23 +02:00
Matteo Biscosi
51173915c7 Fixes ThreadPool issues in windows 2026-10-21 11:09:09 +02:00
Matteo Biscosi
09ff6e0e79 Added option also on timeout 0 2026-10-21 11:09:09 +02:00
manuelceroni
fabf987ff3 Added doc for the exporter interfaces bandwidth usage (#11086) 2026-10-21 10:36:08 +02:00
manuelceroni
75f4a126ff Added per-application link usage ts for exporter interfaces (#11086) 2026-10-21 10:04:23 +02:00
Luca Deri
ad8ee5b963 Implemented service aggregation 2026-10-21 07:25:33 +02:00
Alfredo Cardigliano
28cc7262c1 Move url_encode (fix #11096)
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-20 18:38:27 +02:00
Ivan Nardi
2ebe803808 Update tests/e2e 2026-10-20 18:30:29 +02:00
Ivan Nardi
bfbb9b9586 Update tests/e2e 2026-10-20 17:08:05 +02:00
Luca Deri
59e52a5584 Modified code signing
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-20 10:12:05 +02:00
GabrieleDeri
7730284121
Fixed MCP ping method output (#11104) 2026-10-20 09:40:58 +02:00
GabrieleDeri
c331a113f2
Updated gitignore (#11103) 2026-10-20 09:20:21 +02:00
Ivan Nardi
4e2a5af7e4
Tags: add the Operating System of the host as built-in tags (#11102)
A host whose Operating System is known is now tagged with it, with one
of five new built-in tags: Windows, macOS/iOS/iPadOS, Android, Linux and
FreeBSD (tags 31 to 27). As the other tags they are shown as badges, can
be used as filters and, on the assets, can have a TTL.

Unlike the other tags, a host (and its asset) has at most one of them:
when a different OS is detected the new tag replaces the previous one.
With a TTL, the tag is removed from the asset when the OS is not
observed again in time; the OS reported for the asset is not changed.

The assets already in the inventory are tagged, at the first start, with
the OS they are stored with.

Implementation:
* The tag is not stored in the host: it is computed from its OS, as the
  tags of the services are, so there is one at most and it always
  matches the OS the host reports. It is not transferred to the flows.
* When the OS of a host is set or changes, the new tag is reported to
  the asset as refreshed and the previous one as removed; when the same
  OS is observed again the tag is refreshed, for the TTL.
* What refreshes the tag: TCP fingerprint / nDPI hint (once per TCP
  flow), OS hint from nProbe, HTTP User-Agent (when it tells the OS the
  host has; when it tells another one it is ignored, as before), network
  discovery. DHCP sets the OS.
* The asset side (one OS tag per asset, "replaced" as reason of the
  removal, tagging of the existing assets) is in the pro repository:
  without it an OS change is logged as a tag removed by the user.

View interfaces behave the same.

User documentation (tags page) and developer documentation updated.
2026-10-20 08:52:34 +02:00
Luca Deri
07131f9ddd Modified build scripts 2026-10-20 08:06:55 +02:00
Alfredo Cardigliano
b7bc1949a0 Show 1h in the traffic ts for the light view, same interval as single interfaces
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-19 16:53:32 +02:00
Alfredo Cardigliano
ec243983e6 nmap is not installed by default as recommended and can be removed 2026-10-19 12:24:18 +02:00
Ivan Nardi
0cf983b017 Fix IGMP classification
Close #11099
2026-10-19 11:03:38 +02:00
Alfredo Cardigliano
9290af2cfc Rework toast check 2026-10-19 10:46:33 +02:00
Ivan Nardi
c2c8c7a1b2 Update tests/e2e
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-19 09:17:02 +02:00
Ivan Nardi
65c0b561c2
Fix host services/tags set on the wrong peer with view interfaces (#11095)
With a view interface, a host could be marked with a service or a tag
that belongs to its peer. The visible case is DNS: a DNS client was
marked as a DNS server (host service "DNS", "DNS Server" tag, and from
there the matching asset) when the first packet seen on its flow is a
reply, i.e. when the query has not been captured (capture started in the
middle of the exchange, packet lost, asymmetric traffic).

When the first packet of a flow is sent by the server, the flow is
recorded "reversed" (the server looks like the client) and a swap of its
peers is requested. Until the swap is performed, the services and the
tags have to be set on the peers as they will be after the swap.

On a regular interface this is what happens, as the hosts of the flow
are taken honouring the swap request. The flows of a viewed interface
have no hosts: services and tags are stored in the IP addresses of the
flow and moved to the hosts of the view later on. There the swap request
was ignored, so they ended up on the other peer.

Fix: take the IP addresses of the flow honouring the swap request, exactly as
it is done with the hosts, when a service or a tag is set on a peer of a
flow with no hosts.

Impact:
* View interfaces only. Nothing changes on the other interfaces, where
  flows have hosts.
* Only flows with a pending swap request, that is flows seen "reversed":
  they are uncommon. With DNS it takes a flow starting with a reply.
* It applies to all the services and tags set on the peers of a flow,
  not only to DNS, as the change is in the common code. Only the DNS
  case has been tested.
* This is unrelated to the DNS replies with no records fixed in #11079:
  that issue never showed up on view interfaces.
2026-10-19 08:58:56 +02:00
GabrieleDeri
bc89aaaa1e
Added AI dashboard documentation (#11098)
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
* updated MCP tools documentaiton

* Added ai dashboard documentation
2026-10-18 18:40:05 +02:00
Luca Deri
1183429c4d Removed vulscan references
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
2026-10-17 14:16:22 +02:00
manuelceroni
ebc3a2cbf1 Updated AS doc (#11093)
Some checks failed
Build / build (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
CodeQL / Analyze-1 (push) Has been cancelled
CIFuzz / Fuzzing (address) (push) Has been cancelled
CIFuzz / Fuzzing (undefined) (push) Has been cancelled
2026-10-16 11:33:48 +02:00
manuelceroni
21de8e934f Fixed boolean filters in historical flows 2026-10-16 11:03:14 +02:00
Ivan Nardi
0a58773606 Update tests/e2e 2026-10-16 10:45:16 +02:00
Ivan Nardi
6f344e1ffd Fix typo in the name of the Windows Domain Controller host service 2026-10-16 10:37:18 +02:00
Ivan Nardi
e8cd24d5ca
Fix host OS not learnt from TCP fingerprint on view interfaces (#11089)
On a view interface the Operating System of a host was most of the times
not learnt from the TCP fingerprint (nor from the OS hint of nDPI/nProbe)
of its flows.

The flows of a viewed interface have no hosts. The host of the view is
bound to a flow the first time the view walks it, later on, whereas the
OS is passed to the host just once, when the protocol of the flow is
detected: if the view has not walked the flow yet (the common case, as
detection takes a few packets), there is no host and the OS is dropped.
It was working only for the flows whose detection ends after the first
pass of the view.

Fix:
* A viewed flow keeps the OS of its client (from TCP fingerprint and
  from the OS hint), and the view sets it on its host when it walks the
  flow, once per flow.
* A view does not walk its flows in time order: the host keeps the time
  of the flow its OS hint comes from, and a hint from an older flow is
  ignored. This rule is applied on all interfaces.

Test: a pcap where the same host opens a TCP connection with the fingerprint
of Windows and, later, one with the fingerprint of Linux and a Windows
User-Agent
* Without a view: Linux, learnt via TCP fingerprint (before
and after).
* With a view: Windows via User-Agent before, Linux via TCP
fingerprint now.

This commit needs the matching one in the pro repository
(the call in the walker of the view).
2026-10-16 10:28:41 +02:00
Ivan Nardi
6085f6cfba
Asset tags TTL: keep application/risk tags alive under long-lived flows (#11083)
Issue
-----
A user-defined tag bound to an application or to a flow risk is set on
the client of a flow once, when the protocol of the flow is detected:
that is the only time the flow refreshes the tag. When the tag has a
TTL, it expires on the asset if it is not refreshed.

So, with a flow living longer than the TTL of the tag (e.g. an agent
keeping one connection open for days), the tag was removed from the
asset while the traffic it comes from was still there, and it came back
only with the next flow of that kind. The host kept the tag in the
meantime.

This happened on regular interfaces only. On view interfaces the tags of
a flow are copied to the host of the view at every pass on the flows, so
they are refreshed for as long as the flow is alive.

Fix
---
On regular interfaces, once per tags refresh interval (6 hours; 1 minute
in test mode), a flow marks as refreshed on its client its own
user-defined tags that have a TTL. This is done in the periodic update
of the flow, when the current update and the previous one are not in the
same interval, so no per-flow timestamp is needed.

Impact
------
* Only the user-defined tags set by the flows (application/risk based)
  that have a TTL. Nothing is done when no tag has a TTL.
* The built-in tags are not refreshed this way: regular and view
  interfaces still differ for those set before the end of a flow (Non-PQC
  Compliant, DHCP Server). On all interfaces, a service set at the end of
  a flow (DNS, HTTP, SSH, ...) is not refreshed before the flow ends.
* Tags assigned by hand are not involved: no flow sets them.
* View interfaces are not changed.
2026-10-16 10:28:11 +02:00
manuelceroni
22ef35828b Improved the display of "Since Startup'" on the AS stats page (#11093) 2026-10-16 10:05:27 +02:00
Ivan Nardi
a7915fe6ab
Fix host OS change not propagated (OS learning info, asset) (#11085)
`Host::setnDPIOS()` was overwriting the OS of the host before calling
`setOS()`: `LocalHost::setOS()`, was then finding the new OS already
set and was doing nothing.
2026-10-16 10:02:08 +02:00
uwezkhan
7d9a5cb5e2
bound remote speedtest config copies into fixed buffers (#11090)
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-15 14:29:32 +02:00
manuelceroni
bdb05b1ce9 Changed asset details icon in host details page 2026-10-15 12:40:02 +02:00
manuelceroni
8e084bef41 Added link to navigate from Host to its Asset 2026-10-15 12:27:50 +02:00
manuelceroni
9f76bf1073 Added loading to the asset details page (#11091) 2026-10-15 10:18:28 +02:00
Luca Deri
68d21d8465 Added method to reseet configuration file
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-14 23:09:41 +02:00
manuelceroni
f3106ad269 Minor fixes to the assets page
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-14 12:17:45 +02:00
manuelceroni
565981064e Fixed tag name regex 2026-10-14 11:49:10 +02:00
manuelceroni
2827eb336f Updated dist 2026-10-14 11:05:35 +02:00
manuelceroni
c3f7b9ef38 Added search preferences panel to the global search 2026-10-14 11:04:53 +02:00
Matteo Biscosi
5a28b1bfa8 Changed from uuid to source_id when saving nprobe timeseries 2026-10-14 10:42:50 +02:00
alex199908
e9e56b7a12
i18n(zh-TW): translate new locale strings on dev (#11088) 2026-10-14 09:00:06 +02:00
Ivan Nardi
a14b292ac0 doc: document the fix of the escaping of the asset values 2026-10-14 08:57:31 +02:00
Alfredo Cardigliano
88cae2a453 Remove housekeeping_freq redis key (dead code)
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-13 16:29:02 +02:00
manuelceroni
703d675bac Added assets lookup and search scope preferences to the global search
Some checks are pending
Build / build (push) Waiting to run
CIFuzz / Fuzzing (address) (push) Waiting to run
CIFuzz / Fuzzing (undefined) (push) Waiting to run
CodeQL / Analyze (push) Waiting to run
CodeQL / Analyze-1 (push) Waiting to run
2026-10-13 12:25:46 +02:00
manuelceroni
986e1d1713 Updated Tag documentation 2026-10-13 11:56:06 +02:00
Ivan Nardi
99ff8a0955 Update tests/e2e 2026-10-13 11:34:56 +02:00