Skip to content

Commit 84f9324

Browse files
authored
fix(Security): Apply patch update 0.9.2 to main (#6907)
* Restrict Kafka client params that execute commands or load libraries Kafka source configs can be submitted through the REST API, so they should not be able to make librdkafka run shell commands or load native libraries. Kerberos ticket refresh is now opt-in through the operator-set `QW_KAFKA_KINIT_CMD` environment variable. * Bump tantivy to e1acb3e * Bump version to 0.9.2 * Add security note to REST API docs * Treat an empty QW_KAFKA_KINIT_CMD as unset An empty or whitespace-only value now behaves like an unset variable and keeps Kerberos ticket refresh disabled.
1 parent 4f20e4f commit 84f9324

8 files changed

Lines changed: 151 additions & 49 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2323
2424
--->
2525

26+
# [0.9.2]
27+
28+
### Security
29+
30+
- Restrict Kafka client params that execute commands or load libraries (GHSA-g85h-2988-4cv8).
31+
- Reject oversized columnar dictionaries during merges (Tantivy GHSA-7pph-m7rw-cqhv).
32+
2633
# [0.9.1]
2734

2835
### Security

‎docs/configuration/source-config.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ A tutorial is available [here](/docs/ingest-data/kafka.md).
103103

104104
The Kafka source consumes a `topic` using the client library [librdkafka](https://github.com/edenhill/librdkafka) and forwards the key-value pairs carried by the parameter `client_params` to the underlying librdkafka consumer. Common `client_params` options are bootstrap servers (`bootstrap.servers`), or security protocol (`security.protocol`). Please, refer to [Kafka](https://kafka.apache.org/documentation/#consumerconfigs) and [librdkafka](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md) documentation pages for more advanced options.
105105

106+
For security reasons, `client_params` cannot set `sasl.kerberos.kinit.cmd`, `sasl.kerberos.min.time.before.relogin`, `plugin.library.paths`, `ssl.engine.location`, or `ssl.providers`. By default, librdkafka does not run `kinit` to acquire or refresh Kerberos tickets. To enable it, set the `QW_KAFKA_KINIT_CMD` environment variable to the `kinit` command on every node that creates or runs Kafka sources. The command cannot contain `%{...}` placeholders, so `sasl.kerberos.keytab` and `sasl.kerberos.principal` must be written into the command directly.
107+
106108
| Property | Description | Default value |
107109
| --- | --- | --- |
108110
| `topic` | Name of the topic to consume. | required |

‎docs/ingest-data/kafka.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ params:
224224
sasl.password: your_sasl_password
225225
```
226226
227+
For Kerberos (`sasl.mechanisms: GSSAPI`), `client_params` cannot set the `kinit` command. Either refresh tickets outside Quickwit, or set the `QW_KAFKA_KINIT_CMD` environment variable on every node that creates or runs Kafka sources, for example `QW_KAFKA_KINIT_CMD="kinit -k -t /path/to/quickwit.keytab quickwit@EXAMPLE.COM"`. See the [source configuration](../configuration/source-config.md) page for details.
228+
227229
:::note
228230

229231
If you get the following error:

‎docs/reference/rest-api.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ title: REST API
33
sidebar_position: 10
44
---
55

6+
## Security
7+
8+
:::warning
9+
Quickwit does not authenticate clients unless [mutual TLS](../configuration/node-config.md#tls-configuration) is enabled. Anyone who can reach the REST or gRPC API has full access to the cluster. Keep Quickwit on a trusted network or behind an authenticated proxy, and do not expose it directly to the public internet.
10+
:::
11+
612
## API version
713

814
All the API endpoints start with the `api/v1/` prefix. `v1` indicates that we are currently using version 1 of the API.

0 commit comments

Comments
 (0)