Impact
Custom variables are user-defined keys and values on configuration objects in Icinga 2. These are commonly used to reference secrets in other configurations such as check commands to be able to authenticate with a service being checked.
Icinga Web 2 displays these custom variables to logged in users with access to said hosts or services. In order to protect the secrets from being visible to anyone, it's possible to setup protection rules and blacklists in a user's role. Protection rules result in ***
being shown instead of the original value, the key will remain. Backlists will hide a custom variable entirely from the user.
Besides using the UI, custom variables can also be accessed differently by using an undocumented URL parameter on the following routes:
/icingaweb2/monitoring/list/hosts
/icingaweb2/monitoring/list/services
By adding the ?addColumns=_host_secret,_service_secret
parameter to them, Icinga Web 2 will show these columns additionally in the respective list. This parameter is also respected when exporting to JSON or CSV.
Protection rules and blacklists however have no effect in this case. Custom variables are shown as-is in the result.
Patches
The issue has been fixed in the v2.7.5, v2.8.3 and v2.9.0 releases.
Workarounds
Setup a restriction to hide hosts and services with the custom variable in question. (e.g. host_name!=host-with-secrets&service_description!=service-with-secrets
)
References
None.
Impact
Custom variables are user-defined keys and values on configuration objects in Icinga 2. These are commonly used to reference secrets in other configurations such as check commands to be able to authenticate with a service being checked.
Icinga Web 2 displays these custom variables to logged in users with access to said hosts or services. In order to protect the secrets from being visible to anyone, it's possible to setup protection rules and blacklists in a user's role. Protection rules result in
***
being shown instead of the original value, the key will remain. Backlists will hide a custom variable entirely from the user.Besides using the UI, custom variables can also be accessed differently by using an undocumented URL parameter on the following routes:
/icingaweb2/monitoring/list/hosts
/icingaweb2/monitoring/list/services
By adding the
?addColumns=_host_secret,_service_secret
parameter to them, Icinga Web 2 will show these columns additionally in the respective list. This parameter is also respected when exporting to JSON or CSV.Protection rules and blacklists however have no effect in this case. Custom variables are shown as-is in the result.
Patches
The issue has been fixed in the v2.7.5, v2.8.3 and v2.9.0 releases.
Workarounds
Setup a restriction to hide hosts and services with the custom variable in question. (e.g.
host_name!=host-with-secrets&service_description!=service-with-secrets
)References
None.