TL;DR: I've backported the fixes for CVE-2017-7525 and related issues to
select old / archaic versions. This might be useful to someone else, hence
this email.

Cloudera (my employer) provides supported versions of lots of open source
projects.  Most of them use jackson in some form.  Most of them also use an
outdated version of jackson.  We can't easily upgrade the jackson versions
due to concerns of backwards compatibility (real or imagined). (Major
releases, where we have freedom to upgrade stuff, are few and far between.)
This puts us in a tight spot sometimes, particularly with security
vulnerabilities.

Enter CVE-2017-7525 (and related CVEs:  CVE-2017-15095, CVE-2017-17485,
CVE-2018-5968, and CVE-2018-7489).  I understand that the maintainers don't
want to patch every version of jackson, which is understandable. I also
understand (thanks to Cowtowncoder's blog post
<https://medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062>)
that actually hitting this vulnerability is rare and relatively easily
detectable. One might think that I could review all our code and determine
if we're ultimately vulnerable. There are some problems with this, however.

   1. New, future code could be written that is vulnerable
   2. Some third party code could use jackson and be vulnerable, and we
   wouldn't know it.  (Who knows what Spring does with jackson?  I sure don't.)
   3. Customers might demand that we get this vulnerability off their
   security dashboard.  (Yes, this happens.)

So, what to do?  I can't upgrade to 2.9.5 and be done with it.  Shoot, lots
of stuff is still using 1.8 or 1.9.  I can't argue that we're actually not
vulnerable. So that leaves the one horrible option of forking jackson,
backporting the fixes for these CVEs, and maintaining that fork.  Here you
go:

https://github.com/cloudera/jackson
https://github.com/cloudera/jackson-databind

Look for branches ending in "cloudera" in both of those repositories.
You'll find branches for 1.8.10, 1.9.13 (in the former), 2.1.0, 2.2.2,
2.2.3, 2.3.1, 2.6.2, 2.6.3, and 2.6.5 (in the latter).  In addition, these
are published to our maven repo, for example at

https://repository.cloudera.com/artifactory/libs-staging-local/org/codehaus/jackson/jackson-mapper-asl/
https://repository.cloudera.com/artifactory/libs-staging-local/com/fasterxml/jackson/core/jackson-databind/

Note the "-cloudera.1" version strings.

Licensing-wise, this is of course all under the ASF (even though there is
no new IP, just backports, the lawyers got involved to make it official) so
feel free to use as you see fit.

In closing, two humble requests:

   1. If there are more security-related fixes for this class of
   vulnerability, I'd love to know about them ahead of time, if possible.
   2. I've noticed that reporting and discussion of security
   vulnerabilities happens out in the open in github issues. While useful if
   you're a white hat, this approach does have the problem that attackers can
   see the vulnerability before a release with the fix has been issued. I'd
   like to recommend the Apache approach
   <https://www.apache.org/security/committers.html> to security
   vulnerabilities instead.

Regards,
-Mike Yoder
Cloudera, Inc

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to