Central path protection for UiServlet and REST resources

The resource loaders
(org.eclipse.scout.rt.ui.html.res.loader.IResourceLoader) are used to
load resources on the UI server and send them to the browser.
The current implementation of the
org.eclipse.scout.rt.ui.html.res.loader.IconLoader does not validate the
requested resource path which allows to request any resource on the UI
server classpath.
This requires a special GET request crafted to bypass the servlet
containers URI validation which only validates forward-slashes (/). But
if backslash-path delimters are passed to the server these are accepted
by the container and forwarded to the servlet.
Because ClassLoaders and Java File API supports both slash types this
allows to access resources outside of folders that are designed to be
accessible by clients.

The following example request bypasses the URI validation of the
container and uses
1. the IconLoader which does not validate the requested path
2. and the capability of the java ClassLoader to understand backslashes
as path delimiters:
http://localhost:8082/icon/..%5C..%5C..%5C..%5C..%5Cconfig.properties

In that example the config.properties file of the UI Server is returned
to the client. This properties file contains sensitive information like
passwords or private keys.
In general any resource on the classpath can be accessed. This includes
class files which allows to dump the whole application byte code.

The /icon/ path of a Scout application is typically only available for
logged in users. Therefore (if this default configuration is not
changed) a valid login is required to perform the attack.

229542

Change-Id: I9a391c125284b9681fc66a1ce7c7e103277d0fe3
7 files changed
tree: 6f11687015f844188fe78998c3126d560b1158dd
  1. license_files/
  2. org.eclipse.scout.dev.jetty/
  3. org.eclipse.scout.dev.jetty.test/
  4. org.eclipse.scout.dev.jetty.test.affix/
  5. org.eclipse.scout.jaxws.apt/
  6. org.eclipse.scout.json/
  7. org.eclipse.scout.rt/
  8. org.eclipse.scout.rt-settings/
  9. org.eclipse.scout.rt.client/
  10. org.eclipse.scout.rt.client.test/
  11. org.eclipse.scout.rt.jackson/
  12. org.eclipse.scout.rt.jackson.test/
  13. org.eclipse.scout.rt.mom.api/
  14. org.eclipse.scout.rt.mom.api.test/
  15. org.eclipse.scout.rt.mom.jms/
  16. org.eclipse.scout.rt.mom.jms.test/
  17. org.eclipse.scout.rt.platform/
  18. org.eclipse.scout.rt.platform.test/
  19. org.eclipse.scout.rt.rest/
  20. org.eclipse.scout.rt.rest.jackson/
  21. org.eclipse.scout.rt.rest.jersey.client/
  22. org.eclipse.scout.rt.rest.test/
  23. org.eclipse.scout.rt.server/
  24. org.eclipse.scout.rt.server.commons/
  25. org.eclipse.scout.rt.server.commons.test/
  26. org.eclipse.scout.rt.server.jaxws/
  27. org.eclipse.scout.rt.server.jaxws.test/
  28. org.eclipse.scout.rt.server.jdbc/
  29. org.eclipse.scout.rt.server.jdbc.test/
  30. org.eclipse.scout.rt.server.test/
  31. org.eclipse.scout.rt.serverbridge/
  32. org.eclipse.scout.rt.shared/
  33. org.eclipse.scout.rt.shared.test/
  34. org.eclipse.scout.rt.svg.client/
  35. org.eclipse.scout.rt.svg.client.test/
  36. org.eclipse.scout.rt.svg.ui.html/
  37. org.eclipse.scout.rt.team-project-set/
  38. org.eclipse.scout.rt.ui.html/
  39. org.eclipse.scout.rt.ui.html.scriptprocessor/
  40. org.eclipse.scout.rt.ui.html.scriptprocessor.test/
  41. org.eclipse.scout.rt.ui.html.selenium/
  42. org.eclipse.scout.rt.ui.html.test/
  43. shell_scripts/
  44. .gitattributes
  45. .gitignore
  46. .gitreview
  47. CONTRIBUTING.md
  48. pom.xml
  49. README.md
README.md

Eclipse Scout - RT

[Eclipse Scout] 1 is a mature and open framework for modern, service oriented business applications. It substantially boosts developer productivity and is simple to learn.

This Repository Eclipse Scout RT contains the source for the runtime components embedded in the applications build on top of the Eclipse Scout Framework.

Downloads

The content of this repository is build on the Eclipse infrastructure and the different versions are available on several [P2 Update Sites] 2.

The easiest way to start with Eclipse Scout is to download Eclipse for Scout Developers Eclipse for Scout Developers on the [Eclipse downloads page] 3.

Documentation & Links

  • [Eclipse Scout Wiki] 4
  • [Eclipse Scout Forum] 5
  • [Eclipse Bugzilla] 6 (Product=Scout; Component=Scout)

Contribution Guidelines

We welcome any kind of contributions (Bug report, documentation, code contribution...). Please read the [Eclipse Scout Contribution page] 7 to know more about it.

The contribution process of Eclipse Scout is hosted on tools deployed by the Eclipse Foundation (involing [Bugzilla] 6, Gerrit, Hudson, MediaWiki...).

External tools like the GitHub tracker and pull requests are not supported.

Get in Touch

To get in touch with the Eclipse Scout community, please open a thread in the [Eclipse Scout Forum] 5 or send a mail to [our mailing list] 8: scout-dev@eclipse.org

License

[Eclipse Public License (EPL) v1.0] 9