Skip to content

Commit 2327938

Browse files
authored
Merge commit from fork
Backport fix to support/2.15
2 parents 6bda53e + 19e9b00 commit 2327938

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

CHANGELOG.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,49 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
99

1010
## 2.15.1 (2025-10-16)
1111

12-
This version includes bug fixes regarding config deployments and improvements
13-
to allow for better debugging of problems related to JSON-RPC cluster
14-
communication.
12+
This release fixes multiple security issues. Two of them allow authenticated
13+
API users to learn restricted information or crash Icinga 2. A third issue
14+
affects the scripts provided with Icinga 2 and allows a limited privilege
15+
escalation where the Icinga 2 daemon user can trick root into sending signals to
16+
arbitrary processes.
17+
18+
In addition, this version also includes bug fixes regarding config deployments
19+
and improvements to allow for better debugging of problems related to JSON-RPC
20+
cluster communication.
1521

1622
Note that one fix affects the logrotate configuration. If it was modified
1723
locally, it might not be updated automatically by the package manager and
1824
applying the changes manually is necessary. For details, please check the
1925
[upgrading docs](https://icinga.com/docs/icinga-2/latest/doc/16-upgrading-icinga-2/#upgrading-to-2-15-1).
2026

21-
* Don't send signals as root in safe-reload script and logrotate config. #10590
27+
### Security
28+
29+
* CVE-2025-61907: Prevent API users from accessing variables and objects they
30+
don't have access to within filter expressions. This allowed authenticated
31+
API users to learn information they aren't allowed to access directly.
32+
* CVE-2025-61908: Add a missing null pointer check while evaluating
33+
expressions. This allowed authenticated API users to crash the Icinga 2
34+
daemon by supplying a crafted filter expression.
35+
* CVE-2025-61909: Don't send signals as root in safe-reload script and
36+
logrotate config. This allowed a limited privilege escalation from the Icinga
37+
2 service user to root. The scope is limited to sending SIGHUP or SIGUSR1 to
38+
an arbitrary process. #10590
39+
* Windows: Update to OpenSSL 3.0.18. #10591
40+
41+
### Bugfixes
42+
2243
* When a reload triggered from Icinga Director (or the /v1/config API) fails,
2344
the corresponding state is cleared, allowing to deploy a new config without
2445
having to restart Icinga 2 manually first. #10584
46+
47+
### Enhancements
48+
2549
* Add JSON-RPC utilization metrics and troubleshooting docs. #10586
2650
* When sending cluster messages to other zones, prefer endpoints in the order
2751
as specified in the zone configuration. #10587
2852
* Track the number of JSON-RPC messages received for each message type per
2953
endpoint. #10585
3054
* Add support for building with Boost v1.89 and use it on Windows. #10578
31-
* Windows: Update to OpenSSL 3.0.18. #10591
3255

3356
## 2.15.0 (2025-06-18)
3457

lib/config/expression.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ bool DerefExpression::GetReference(ScriptFrame& frame, bool init_dict, Value *pa
187187

188188
Reference::Ptr ref = operand.GetValue();
189189

190+
if (!ref) {
191+
BOOST_THROW_EXCEPTION(ScriptError("Invalid reference specified.", GetDebugInfo()));
192+
}
193+
190194
*parent = ref->GetParent();
191195
*index = ref->GetIndex();
192196
return true;

test/config-ops.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ BOOST_AUTO_TEST_CASE(advanced)
242242
expr = ConfigCompiler::CompileText("<test>", "{{ 3 }}");
243243
func = expr->Evaluate(frame).GetValue();
244244
BOOST_CHECK(func->Invoke() == 3);
245+
246+
// Regression test for CVE-2025-61908
247+
expr = ConfigCompiler::CompileText("<test>", "&*null");
248+
BOOST_CHECK_THROW(expr->Evaluate(frame).GetValue(), ScriptError);
245249
}
246250

247251
BOOST_AUTO_TEST_CASE(sandboxed_ticket_salt)

0 commit comments

Comments
 (0)