# Risk consideration

When merging a new feature of considerable size or modifying an existing one,
consider adding a *Risk Matrix* section to your PR in collaboration with other
developers on your team and the QA team.

Below are some general themes to consider for the *Risk Matrix*. (Feel free to
add to this list.)


## General risks

- What happens when your feature is used in a non-default space or a custom
  space?
- What happens when there are multiple Kibana nodes using the same Elasticsearch
  cluster?
- What happens when a plugin you depend on is disabled?
- What happens when a feature you depend on is disabled?
- Is your change working correctly regardless of `kibana.yml` configuration or
  UI Setting configuration? (For example, does it support both
  `state:storeInSessionStorage` UI setting states?)
- What happens when a third party integration you depend on is not responding?
- How is authentication handled with third party services?
- Does the feature work in Elastic Cloud?
- Does the feature create a setting that needs to be exposed, or configured
  differently than the default, on the Elastic Cloud?
- Is there a significant performance impact that may affect Cloud Kibana
  instances?
- Does your feature need to be aware of running in a container?
- Does the feature Work with security disabled, or fails gracefully?
- Are there performance risks associated with your feature? Does it potentially
  access or create: (1) many fields; (2) many indices; (3) lots of data;
  (4) lots of saved objects; (5) large saved objects.
- Could this cause memory to leak in either the browser or server?
- Will your feature still work if Kibana is run behind a reverse proxy?
- Does your feature affect other plugins?
- If you write to the file system, what happens if Kibana node goes down? What
  happens if there are multiple Kibana nodes?
- Are migrations handled gracefully? Does the feature affect old indices or
  saved objects?
- Are you using any technologies, protocols, techniques, conventions, libraries,
  NPM modules, etc. that may be new or unprecedented in Kibana?


## Security risks

Check to ensure that best practices are used to mitigate common vulnerabilities:

- Cross-site scripting (XSS)
- Cross-site request forgery (CSRF)
- Remote-code execution (RCE)
- Server-side request forgery (SSRF)
- Prototype pollution
- Information disclosure
- Tabnabbing

In addition to these risks, in general, server-side input validation should be
implemented as strictly as possible. Extra care should be taken when user input
is used to construct URLs or data structures; this is a common source of
injection attacks and other vulnerabilities. For more information on all of
these topics, see [Security best practices][security-best-practices].

[security-best-practices]: https://www.elastic.co/guide/en/kibana/master/security-best-practices.html
