From 0c29e84ad66c0f32353cd6472d4fec2ecaa33aae Mon Sep 17 00:00:00 2001 From: Nathan Alix-Vignola Date: Sun, 26 Jan 2025 14:35:29 -0500 Subject: [PATCH] Add uptime to SNMP traps to prevent replay attack (#219) * Allowing to set a custom base OID for trap sub-objects * Removed "Enabled" parameter * Update unit tests with new parameter * Updated readme * Fix the http server unit test * Do not append .1 to the trap OID * Rename custom-base-oid-sub-object to sub-object-default-oid * tes * With boots time --------- Co-authored-by: nalixvignola --- trapsender/trap_sender.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/trapsender/trap_sender.go b/trapsender/trap_sender.go index 70cd2fe..fb162f6 100644 --- a/trapsender/trap_sender.go +++ b/trapsender/trap_sender.go @@ -15,6 +15,7 @@ package trapsender import ( "errors" + "math" "strings" "time" @@ -114,10 +115,14 @@ func (trapSender TrapSender) sendTraps(connectionArguments snmpgo.SNMPArguments, snmp.Close() }() - hasError := false + uptime, _ := host.Uptime() + if uptime > math.MaxInt32 { + uptime = 0 + } + hasError := false for _, trap := range traps { - err = snmp.V2Trap(trap) + err = snmp.V2TrapWithBootsTime(trap, 0, int(uptime)) if err != nil { telemetry.SNMPTrapTotal.WithLabelValues(distinationForMetrics, "failure").Inc() level.Error(*trapSender.logger).Log("msg", "error while generating trap", "destination", distinationForMetrics, "err", err)