There is a path traversal vulnerability in Ring that affects applications that serve resources from the filesystem. It does not affect Ring sites deployed as uberjars.
Versions affected: Every version prior to 1.5.1; 1.6.0-beta1 to 1.6.0-beta6 Fixed versions: 1.5.1, 1.6.0-beta7 Link: https://github.com/ring-clojure/ring *Overview* This vulnerability is caused by a bug in the ring.util.response/resource-response function. An attacker can use this vulnerability to access files that are in a directory on the classpath, but they cannot access resources contained in a jar. This also affects the ring.middleware.resource/wrap-resource middleware, and the compojure.route/resources function. *Example* Consider a minimal Compojure application: (ns example.core (:require [compojure.core :refer :all] [compojure.route :as route])) (defroutes app (GET "/" [] "Hello World") (route/resources "/") (route/not-found "Not Found")) Assume that this isn't packaged as an jar when deployed, but is deployed as a directory of source files. An attacker can craft a URL to read any file on the classpath that is not in a jar: curl -vvv --path-as-is 'http://localhost:3000//../example/core.clj' *Cause* Unlike the file-response function, the resource-response function did not properly santize the path from the client. *Fix* The resource-response function now checks for path segments containing "..", and also ensures that for file-based resources, the canonical filepath of the resource must be contained within the canonical filepath of the :root option. This fix means that Ring will not follow symlinks on the classpath if they lead to files or directories outside the path specified in the :root option. If you happen to need this for any reason, then you need to set the :allow-symlinks? option to true. *Recommendation* Upgrade to 1.5.1 as soon as possible. *Credit* Thanks go Tim McCormack for discovering this vulnerability, and his responsible disclosure of it. Thanks also go to Dmitri Sotnikov for reviewing the fix. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.