Package: monit
Version: 1:5.33.0-2

Starting with 1:5.33.0-2, the monit systemd unit file got some hardening. 
Beside other things,
the CapabilityBoundingSet got restricted to: CAP_DAC_READ_SEARCH CAP_NET_RAW 
CAP_SYS_PTRACE

I'm executing a "check program" script which checks the state of some wireguard 
tunnels. After
upgrading monit, these checks ceased to work and returned a 'permission denied' 
error.

The issue was traced back to the strict CapabilityBoundingSet. Assigning the 
`CAP_NET_ADMIN`
capability to monit resolved the issue. This change was applied via a systemd 
override:

| # in etc/systemd/system/monit.service.d/override.conf
| [Service]
| CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_NET_RAW CAP_SYS_PTRACE 
CAP_NET_ADMIN

Debugging this issue was challenging. It seems the new hardening measures could 
be
too restrictive for certain use cases. I suggest reconsidering the default
CapabilityBoundingSet settings, or perhaps implementing a more granular system
where permissions can be adjusted based on different aspects of the service
(e.g., less permissions for the monit API and outgoing HTTP calls, and more
permissions for "program check").

This problem can be reproduced by this check:

| check program link_wg0_home path "/usr/bin/wg show wg0"
|       if status != 0
|           for 2 cycles
|           then alert

Thank you!

Reply via email to