Skip to content

Commit a37a7a2

Browse files
authored
Release v1.27.0 (#438)
1 parent 4e27ccd commit a37a7a2

File tree

2 files changed

+117
-1
lines changed

2 files changed

+117
-1
lines changed

CHANGELOG.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,119 @@
11
# libddwaf release
22

3+
## v1.27.0 ([unstable](https://github.com/DataDog/libddwaf/blob/master/README.md#versioning-semantics))
4+
5+
### New Features
6+
7+
This release of `libddwaf` includes several new features designed to enhance usability and configurability for both users and rule writers. The following sections provide detailed descriptions of each significant addition.
8+
9+
**Note:** This release contains **no breaking changes**.
10+
11+
### Improved WAF Builder
12+
13+
Although not a direct feature, the WAF builder has been improved to support empty configurations or configurations without side-effects, such as configurations lacking compatible items.
14+
15+
### SSRF Operator Configuration
16+
17+
New configuration settings have been introduced to provide enhanced control over the SSRF heuristic's sensitivity.
18+
19+
**Heuristic Options:**
20+
21+
* **`authority-inspection` (default: true):**
22+
23+
* When set to `true`, scans the authority component (RFC-3986::Authority) for injections.
24+
* If `false`, the authority is ignored unless `enforce-policy-without-injection` is enabled, in which case the authority is checked against denylists regardless of injection.
25+
26+
* **`path-inspection` (default: false):**
27+
28+
* When set to `true`, inspects the path (RFC-3986::Path) for injections.
29+
* If `false`, path injections are ignored.
30+
31+
* **`query-inspection` (default: false):**
32+
33+
* When set to `true`, inspects the query (RFC-3986::Query) for injections.
34+
* If `false`, query injections are ignored.
35+
36+
* **`forbid-full-url-injection` (default: false):**
37+
38+
* When set to `true`, injections involving a full URL are flagged as vulnerabilities.
39+
* If `false`, these injections are ignored.
40+
41+
* **`enforce-policy-without-injection` (default: false):**
42+
43+
* When enabled, policies are enforced irrespective of detected injections, ensuring schemes and hosts are validated against allowlists and denylists.
44+
* If `false`, the policy applies only upon detecting relevant injections.
45+
46+
**Policy Options:**
47+
48+
* **`allowed-schemes`:** Array of allowed schemes (RFC-3986::Scheme), validated upon injection detection or when policy enforcement is active.
49+
* **`forbidden-domains`:** Array of forbidden domains (RFC-3986::Host), validated upon injection detection or when policy enforcement is active.
50+
* **`forbidden-ips`:** Array of forbidden IPv4/IPv6 addresses, evaluated similarly to `forbidden-domains`.
51+
52+
**Example Configuration:**
53+
54+
```yaml
55+
id: rasp-934-100
56+
name: Server-side request forgery exploit
57+
tags:
58+
type: ssrf
59+
module: rasp
60+
conditions:
61+
- parameters:
62+
resource:
63+
- address: server.io.net.url
64+
params:
65+
- address: server.request.query
66+
# Additional parameters...
67+
options:
68+
authority-inspection: true
69+
path-inspection: false
70+
query-inspection: false
71+
forbid-full-url-injection: true
72+
enforce-policy-without-injection: false
73+
policy:
74+
allowed-schemes: []
75+
forbidden-domains: []
76+
forbidden-ips: []
77+
operator: ssrf_detector
78+
```
79+
80+
### Negated Operator Improvements
81+
82+
Negated operators (e.g. `!match_regex`) have been enhanced for greater clarity and functionality:
83+
84+
* Negated operators now explicitly require the presence of the defined key path.
85+
* Evaluations must involve at least one compatible object type; for example, `!match_regex` matches only if evaluated data contains strings.
86+
* Non-matching values are now clearly reported when evaluating scalar or single-value arrays.
87+
88+
These improvements ensure more precise and predictable rule behavior.
89+
90+
### JSON to Object Helper
91+
92+
A new helper function simplifies object creation from JSON strings:
93+
94+
```cpp
95+
bool ddwaf_object_from_json(ddwaf_object *output, const char *json_str, uint32_t length);
96+
```
97+
98+
* **`output`**: Pointer to the object populated with JSON content.
99+
* **`json_str`**: JSON data as a string.
100+
* **`length`**: Length of the JSON string.
101+
102+
The function returns a boolean indicating success (`true`) or failure (`false`). Both the input string and resulting object remain owned by the caller.
103+
104+
### Release changelog
105+
#### Changes
106+
- Add helper for object creation from JSON string ([#430](https://github.com/DataDog/libddwaf/pull/430))
107+
- SSRF Operator Configuration ([#434](https://github.com/DataDog/libddwaf/pull/434))
108+
- Negated operator fixes & improvements ([#435](https://github.com/DataDog/libddwaf/pull/435))
109+
- Accept empty and inconsequential configurations ([#437](https://github.com/DataDog/libddwaf/pull/437))
110+
111+
#### Miscellaneous
112+
- Fix typo in doc-string ([#424](https://github.com/DataDog/libddwaf/pull/424))
113+
- Fix markdown typo in UPGRADING.md ([#429](https://github.com/DataDog/libddwaf/pull/429))
114+
- Update linux builds and tests to use LLVM-19 ([#431](https://github.com/DataDog/libddwaf/pull/431))
115+
- Use github-provided ubuntu arm64 runner ([#433](https://github.com/DataDog/libddwaf/pull/433))
116+
3117
## v1.26.0 ([unstable](https://github.com/DataDog/libddwaf/blob/master/README.md#versioning-semantics))
4118

5119
### New features
@@ -8,6 +122,8 @@ This release introduces a new operator, `hidden_ascii_match`, designed to detect
8122

9123
Hidden ASCII characters have been increasingly leveraged to inject concealed instructions into prompts provided to LLMs, manipulating their behavior without explicit visibility to users or systems. The introduction of the `hidden_ascii_match` operator represents the first step toward a deterministic AI security strategy, proactively identifying and flagging these character sequences to support the effective monitoring and mitigation of potential Unicode-based prompt injection exploits.
10124

125+
### Release changelog
126+
11127
#### Changes
12128
- Hidden ASCII Matcher ([#411](https://github.com/DataDog/libddwaf/pull/411))
13129

version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.26.0
1+
1.27.0

0 commit comments

Comments
 (0)