Skip to content

Allow customization of polymorphic deserialization black-list #2208

Closed
@meeque

Description

@meeque

In the past Jackson Databind has had numerous vulnerabilities that were related to polymorphic deserialization. In particular, many classes turn out to be insecure when deserialized from untrusted data. These classes are often called deserialization gadgets.

Jackson Databind has addressed such vulnerabilities by maintaining a black-list of classes that must not be deserialized. However, new classes are often identified to be deserialization gadgets, and the black-list needs to be extended frequently.

Right now (checked on 2.9.7 sources and on master) there is no convenient way for users of Jackson Databind to extend the black-list. In particular, users would have to either modify the Jackson Databind sources or re-implement several classes of Jackson Databind.

Instead, it would be great if users could extend the blacklist by means of configuration. This would have the following benefits:

  • Users can black-list their own classes that might be deserialization widgets.
    (If such classes are not published as open source, it is unlikely that they will ever make it on the built-in black-list that is maintained by Jackson Databind.)
  • When new classes are added to the built-in black-list that is maintained by Jackson Databind, users can adjust their own black-list accordingly.
    (This may be important for users who cannot readily upgrade to the latest Jackson Databind release. It can also help closing the time-gap between classes being proposed for the built-in black-list and an actual release that contains the updated black-list.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions