On Sat, Aug 10, 2019 at 7:32 PM Daniel Beck <
m...@beckweb.net> wrote:
>
> Hi,
>
> To the best of my knowledge, the feature affected by the many recent CVEs in jackson-databind is opt-in: It requires an #enableDefaultTyping() call, or an @JsonTypeInfo on a field with a wide open type.
Hi Daniel! I have been meaning to actually send an email to the list
regarding this issue, and my thoughts & plans. I'll add a short
version of that below.
So, yes. In hindsight, it would probably have made sense not to
requested CVE ids when security researchers reported the first
deserialization gadgets, given that doing so set a precedent that has
lead to current problem of never-ending update process.
At the same time, I think that bringing more visibility into this
problem was a good thing, at least initially.
But what was done was done and the critical question is how to proceed.
The most practical way forward, in my mind is to:
1. Add appropriate warnings into existing methods that enable
vulnerable handling. I have made some changes, but could use
contributions, suggestions, for good wording, places to indicate this
in useful context.
2. Deprecate these methods for 2.10 along with above-mentioned
warnings, to be removed from 3.0 (Semantic Versioning does not allow
removal until major version)
3. Add safe replacements that allow "default typing" but with
user-provided limitation mechanism, only providing opt-in approach
out-of-the-box. See
https://github.com/FasterXML/jackson-databind/issues/2195
- Question: should replacement methods use different naming from
old methods, to allow easier searching for "dangerous" methods,
without having to check argument lists?
4. If new CVEs are accepted, only include versions pre-2.10 (that is,
up to and including 2.9)
Of these (1), (2) and (3) have been done, and included in 2.10.0.pr1.
Policy change of (4) is something I have thought about.
The reason I think it is better to allow CVE ids, but only include
earlier versions as susceptible, is to have some consistency, and to
keep track of gadgets.
Although to be honest, by the time 3.0.0 is out maybe practicality of
block-listing of gadgets has diminished and it makes more sense not to
actually maintain it, or keep track, and instead consider there to be
unknown set of potential gadgets.
Thoughts?
-+ Tatu +-