CVE Vulnerabilities

CVE-2015-5318

Cross-Site Request Forgery (CSRF)

Published: Nov 25, 2015 | Modified: Dec 17, 2019
CVSS 3.x
N/A
Source:
NVD
CVSS 2.x
6.8 MEDIUM
AV:N/AC:M/Au:N/C:P/I:P/A:P
RedHat/V2
4.3 MODERATE
AV:N/AC:M/Au:N/C:N/I:P/A:N
RedHat/V3
Ubuntu
MEDIUM

Jenkins before 1.638 and LTS before 1.625.2 uses a publicly accessible salt to generate CSRF protection tokens, which makes it easier for remote attackers to bypass the CSRF protection mechanism via a brute force attack.

Weakness

The web application does not, or can not, sufficiently verify whether a well-formed, valid, consistent request was intentionally provided by the user who submitted the request.

Affected Software

Name Vendor Start Version End Version
Jenkins Jenkins * 1.637 (including)
Jenkins Ubuntu precise *
Jenkins Ubuntu upstream *
Red Hat OpenShift Enterprise 2.2 RedHat activemq-0:5.9.0-6.redhat.611454.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat jenkins-0:1.625.3-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-enterprise-upgrade-0:2.2.9-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-broker-util-0:1.37.5.3-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-cartridge-cron-0:1.25.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-cartridge-haproxy-0:1.31.5.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-cartridge-mysql-0:1.31.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-cartridge-php-0:1.35.3.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-cartridge-python-0:1.34.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-msg-node-mcollective-0:1.30.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-node-proxy-0:1.26.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat openshift-origin-node-util-0:1.38.6.2-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat php-0:5.3.3-46.el6_7.1 *
Red Hat OpenShift Enterprise 2.2 RedHat rhc-0:1.38.6.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat rubygem-openshift-origin-common-0:1.29.5.2-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat rubygem-openshift-origin-console-0:1.35.5.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat rubygem-openshift-origin-controller-0:1.38.5.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat rubygem-openshift-origin-frontend-apache-vhost-0:0.13.2.1-1.el6op *
Red Hat OpenShift Enterprise 2.2 RedHat rubygem-openshift-origin-node-0:1.38.5.3-1.el6op *
Red Hat OpenShift Enterprise 3.1 RedHat atomic-openshift-0:3.1.1.6-1.git.0.b57e8bd.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat heapster-0:0.18.2-3.gitaf4752e.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat jenkins-0:1.625.3-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-align-text-0:0.1.3-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-ansi-green-0:0.1.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-ansi-wrap-0:0.1.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-anymatch-0:1.3.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-array-unique-0:0.2.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-arr-diff-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-arr-flatten-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-arrify-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-async-each-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-binary-extensions-0:1.3.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-braces-0:1.8.2-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-capture-stack-trace-0:1.0.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-chokidar-0:1.4.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-configstore-0:1.4.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-create-error-class-0:2.0.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-deep-extend-0:0.3.2-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-duplexer-0:0.1.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-duplexify-0:3.4.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-end-of-stream-0:1.1.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-error-ex-0:1.2.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-es6-promise-0:3.0.2-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-event-stream-0:3.3.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-expand-brackets-0:0.1.4-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-expand-range-0:1.8.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-extglob-0:0.3.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-filename-regex-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-fill-range-0:2.2.3-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-for-in-0:0.1.4-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-for-own-0:0.1.3-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-from-0:0.1.3-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-glob-base-0:0.3.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-glob-parent-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-got-0:5.2.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-graceful-fs-0:4.1.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-ini-0:1.1.0-6.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-binary-path-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-dotfile-0:1.0.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-equal-shallow-0:0.1.3-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-extendable-0:0.1.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-extglob-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-glob-0:2.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-npm-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-number-0:2.1.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-isobject-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-plain-obj-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-primitive-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-redirect-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-is-stream-0:1.0.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-kind-of-0:3.0.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-latest-version-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lazy-cache-0:1.0.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.assign-0:3.2.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.baseassign-0:3.2.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.basecopy-0:3.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.bindcallback-0:3.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.createassigner-0:3.1.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.defaults-0:3.1.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.getnative-0:3.9.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.isarguments-0:3.0.4-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.isarray-0:3.0.4-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.isiterateecall-0:3.0.9-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.keys-0:3.1.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lodash.restparam-0:3.6.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-lowercase-keys-0:1.0.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-map-stream-0:0.1.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-micromatch-0:2.3.5-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-mkdirp-0:0.5.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-nodemon-0:1.8.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-node-status-codes-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-normalize-path-0:2.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-object-assign-0:4.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-object.omit-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-optimist-0:0.4.0-5.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-osenv-0:0.1.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-os-homedir-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-os-tmpdir-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-package-json-0:2.3.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-parse-glob-0:3.0.4-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-parse-json-0:2.2.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-pause-stream-0:0.0.11-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-pinkie-0:2.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-pinkie-promise-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-prepend-http-0:1.0.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-preserve-0:0.2.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-ps-tree-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-randomatic-0:1.1.5-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-rc-0:1.1.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-read-all-stream-0:3.0.1-3.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-readdirp-0:2.0.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-regex-cache-0:0.4.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-registry-url-0:3.0.3-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-repeat-element-0:1.1.2-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-semver-0:5.1.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-semver-diff-0:2.1.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-slide-0:1.1.5-3.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-split-0:0.3.3-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-stream-combiner-0:0.2.1-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-string-length-0:1.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-strip-json-comments-0:1.0.2-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-success-symbol-0:0.1.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-through-0:2.3.4-4.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-timed-out-0:2.0.0-3.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-touch-0:1.0.0-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-undefsafe-0:0.0.3-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-unzip-response-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-update-notifier-0:0.6.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-url-parse-lax-0:1.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-uuid-0:2.0.1-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-write-file-atomic-0:1.1.2-2.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nodejs-xdg-basedir-0:2.0.0-1.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat nss_wrapper-0:1.0.3-1.el7 *
Red Hat OpenShift Enterprise 3.1 RedHat openshift-ansible-0:3.0.35-1.git.0.6a386dd.el7aos *
Red Hat OpenShift Enterprise 3.1 RedHat openvswitch-0:2.4.0-1.el7 *
Red Hat OpenShift Enterprise 3.1 RedHat origin-kibana-0:0.5.0-1.el7aos *

Potential Mitigations

  • Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • For example, use anti-CSRF packages such as the OWASP CSRFGuard. [REF-330]
  • Another example is the ESAPI Session Management control, which includes a component for CSRF. [REF-45]
  • Use the “double-submitted cookie” method as described by Felten and Zeller:
  • When a user visits a site, the site should generate a pseudorandom value and set it as a cookie on the user’s machine. The site should require every form submission to include this value as a form value and also as a cookie value. When a POST request is sent to the site, the request should only be considered valid if the form value and the cookie value are the same.
  • Because of the same-origin policy, an attacker cannot read or modify the value stored in the cookie. To successfully submit a form on behalf of the user, the attacker would have to correctly guess the pseudorandom value. If the pseudorandom value is cryptographically strong, this will be prohibitively difficult.
  • This technique requires Javascript, so it may not work for browsers that have Javascript disabled. [REF-331]

References