Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict classes allowed for cluster config and event types #18165

Merged
merged 4 commits into from Feb 6, 2024

Conversation

thll
Copy link
Contributor

@thll thll commented Feb 5, 2024

Add a new safe_classes configuration option to restrict the classes allowed to be used as cluster config and event types.

The configuration option allows to specify a comma-separated set of prefixes matched against the fully qualified class name.

For now, the default value for the configuration is org.graylog.,org.graylog2., which will allow all classes that are maintained by Graylog.

This should work out of the box for almost all setups. Changing the default value might only be necessary if external plugins require cluster config or event types outside the org.graylog. or org.graylog2. namespace. If that is the case, the configuration setting can be adjusted to cover this use case, e.b. by setting it to

safe_classes = org.graylog.,org.graylog2.,custom.plugin.namespace.

if said classes are located within the custom.plugin.namespace package.

@thll thll requested review from bernd and kroepke February 5, 2024 17:12
@bernd bernd self-assigned this Feb 6, 2024
thll and others added 2 commits February 6, 2024 14:08
Co-authored-by: Bernd Ahlers <bernd@users.noreply.github.com>
Co-authored-by: Bernd Ahlers <bernd@users.noreply.github.com>
@thll thll requested a review from bernd February 6, 2024 13:14
Copy link
Member

@bernd bernd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! 🙏

@bernd bernd merged commit 8132032 into master Feb 6, 2024
5 checks passed
@bernd bernd deleted the add/restricted-classloader branch February 6, 2024 14:34
bernd pushed a commit that referenced this pull request Feb 6, 2024
Add a new safe_classes configuration option to restrict the classes allowed to be used
as cluster config and event types.
The configuration option allows to specify a comma-separated set of prefixes matched
against the fully qualified class name.

For now, the default value for the configuration is org.graylog.,org.graylog2., which will
allow all classes that Graylog maintains.

This should work out of the box for almost all setups. Changing the default value might
only be necessary if external plugins require cluster config or event types outside the
"org.graylog." or "org.graylog2." namespaces. If that is the case, the configuration setting
can be adjusted to cover this use case, e.b. by setting it to

    safe_classes = org.graylog.,org.graylog2.,custom.plugin.namespace.

if said classes are located within the custom.plugin.namespace package.

Refs: GHSA-p6gg-5hf4-4rgj

(cherry picked from commit 8132032)
bernd pushed a commit that referenced this pull request Feb 6, 2024
Add a new safe_classes configuration option to restrict the classes allowed to be used
as cluster config and event types.
The configuration option allows to specify a comma-separated set of prefixes matched
against the fully qualified class name.

For now, the default value for the configuration is org.graylog.,org.graylog2., which will
allow all classes that Graylog maintains.

This should work out of the box for almost all setups. Changing the default value might
only be necessary if external plugins require cluster config or event types outside the
"org.graylog." or "org.graylog2." namespaces. If that is the case, the configuration setting
can be adjusted to cover this use case, e.b. by setting it to

    safe_classes = org.graylog.,org.graylog2.,custom.plugin.namespace.

if said classes are located within the custom.plugin.namespace package.

Refs: GHSA-p6gg-5hf4-4rgj

(cherry picked from commit 8132032)
bernd added a commit that referenced this pull request Feb 6, 2024
…18179)

* Restrict classes allowed for cluster config and event types (#18165)

Add a new safe_classes configuration option to restrict the classes allowed to be used
as cluster config and event types.
The configuration option allows to specify a comma-separated set of prefixes matched
against the fully qualified class name.

For now, the default value for the configuration is org.graylog.,org.graylog2., which will
allow all classes that Graylog maintains.

This should work out of the box for almost all setups. Changing the default value might
only be necessary if external plugins require cluster config or event types outside the
"org.graylog." or "org.graylog2." namespaces. If that is the case, the configuration setting
can be adjusted to cover this use case, e.b. by setting it to

    safe_classes = org.graylog.,org.graylog2.,custom.plugin.namespace.

if said classes are located within the custom.plugin.namespace package.

Refs: GHSA-p6gg-5hf4-4rgj

(cherry picked from commit 8132032)

* Use javax.inject.Inject instead of jakarta.inject.Inject

* Use javax.ws.rs instead of jakarta.ws.rs

---------

Co-authored-by: Othello Maurer <othello@graylog.com>
bernd added a commit that referenced this pull request Feb 6, 2024
…18180)

* Restrict classes allowed for cluster config and event types (#18165)

Add a new safe_classes configuration option to restrict the classes allowed to be used
as cluster config and event types.
The configuration option allows to specify a comma-separated set of prefixes matched
against the fully qualified class name.

For now, the default value for the configuration is org.graylog.,org.graylog2., which will
allow all classes that Graylog maintains.

This should work out of the box for almost all setups. Changing the default value might
only be necessary if external plugins require cluster config or event types outside the
"org.graylog." or "org.graylog2." namespaces. If that is the case, the configuration setting
can be adjusted to cover this use case, e.b. by setting it to

    safe_classes = org.graylog.,org.graylog2.,custom.plugin.namespace.

if said classes are located within the custom.plugin.namespace package.

Refs: GHSA-p6gg-5hf4-4rgj

(cherry picked from commit 8132032)

* Use javax.inject.Inject instead of jakarta.inject.Inject

* Add "jakarta.inject.**" to forbidden APIs

This will help us with issue for backported code that's already using
jakarta.inject.

* Use javax.ws.rs instead of jakarta.ws.rs

---------

Co-authored-by: Othello Maurer <othello@graylog.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants