Skip to content

Siemphony is in beta and still being built. What ships today, and what does not.

Siemphony’s repertoire

Linux firmware flashing tool executed

Siemphony@siemphonylowT1542.002unverified
AN0917 names three signals on Linux: raw ioctl/write syscalls that write firmware or controller memory, "unexpected flashing tools execution", and anomalous SMART/kernel-audit firmware checksums. This rule takes only the middle one. The raw syscall leg cannot be scoped honestly with the fields this corpus has established for {product: linux, service: auditd}: a SYSCALL record for ioctl or write carries no file path (that lives on a separate PATH record auditd does not always emit for ioctl, and Sigma cannot join the two), so a bare `syscall: ioctl` or `syscall: write` selector would match nearly every process on the host — the same over-matching failure this corpus treats as equivalent to a selector that never fires. The flashing-tools leg has no such problem: it is a process-identity match with `type: SYSCALL`, `syscall: execve`, and `exe`, the same auditd EXECVE vocabulary already used for T1547.006. `flashrom`, `fwupdmgr` and `fwupdtool` are this rule's own addition, not MITRE's, chosen because unlike diagnostic tools such as `nvme` or `ethtool` — which spend most invocations on read-only inventory subcommands this ruleset has no field to distinguish from a firmware-write subcommand, since raw auditd EXECVE carries no argv this corpus has an established field for — a `flashrom` or `fwupd*` invocation has no comparably common benign read-only mode; running the binary at all is itself the observable MITRE's analytic asks for. AN0916, the Windows leg, is not attempted: its only logsource, {category: driver_load, product: windows}, carries just `ImageLoaded`, `Signed` and `Hashes`, and both ways of using them are already claimed by published siblings — `Signed: false` is T1014's rule verbatim, and a named-driver list is T1068's — so nothing distinct from either sibling remains on that logsource. AN0918, the macOS leg, is not attempted either: its only logsource, {product: macos, service: unifiedlog}, has no established Sigma field vocabulary anywhere in this corpus, the same blocker already recorded against that exact source for T1037.002, T1036.004, T1036.006, T1053.003 and others. The Linux driver-load/syslog source in AN0917 ({product: linux, service: syslog}) is also unattempted for the same reason. MITRE's `AlertThresholds` knob (SMART error tolerance) has no field to bind to here at all; `FirmwareImageBaseline` would require a checksum comparison lib/sigma cannot express. Prerequisite: raw auditd does not record execve by default; this returns nothing until a rule such as `-a always,exit -F arch=b64 -S execve -k exec` is loaded, and zero rows reads as quiet when it actually means blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0323, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

The detection

The 3 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.

detection.yml

Splunk · SPL

Run this as a search.

index=* (type="SYSCALL" AND syscall="execve" AND (exe="*/flashrom" OR exe="*/fwupdmgr" OR exe="*/fwupdtool"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(type) == "syscall" AND TO_LOWER(syscall) == "execve" AND (TO_LOWER(exe) LIKE "*/flashrom" OR TO_LOWER(exe) LIKE "*/fwupdmgr" OR TO_LOWER(exe) LIKE "*/fwupdtool"))

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,linux,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <rule id="100000" level="5">    <!-- Set <if_sid> to the decoder/base rule for linux so this only evaluates relevant events. -->    <field name="type" type="pcre2">(?i)^SYSCALL$</field>    <field name="syscall" type="pcre2">(?i)^execve$</field>    <field name="exe" type="pcre2">(?i)(/flashrom$|/fwupdmgr$|/fwupdtool$)</field>    <description>Linux firmware flashing tool executed</description>    <mitre>      <id>T1542.002</id>    </mitre>  </rule></group>

Sentinel · KQL

Run this as a search.

Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"product":"linux","service":"auditd"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL by hand. The Sigma source is on the first tab, unchanged.

Verdicts · reactions · comments

Community

Verdicts from engineers who actually deployed it, and the conversation around it.

Log in to react
Not yet reported on

Nobody has run this in a real environment and said what happened.

Verdicts from engineers who deployed it

0 cast

No verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.

Log in to report a verdict.

Log in to join the discussion.

No comments yet. Someone who deploys this will have something to say about it.