= Security
:jbake-date: 2016-03-16
:jbake-type: page
:jbake-status: published
:jbake-tomeepdf:
:page-aliases: security/index.adoc

== Security updates

Please note that, except in rare circumstances, binary patches are not produced for individual vulnerabilities. To obtain the binary fix for a particular vulnerability you should upgrade to an Apache TomEE version where that vulnerability has been fixed.

Source patches, usually in the form of references to SVN commits, may be provided in either in a vulnerability announcement and/or the vulnerability details listed on these pages. These source patches may be used by users wishing to build their own local version of TomEE with just that security patch rather than upgrade.

The Apache Software Foundation takes a very active stance in eliminating security problems and denial of service attacks against Apache projects.

We strongly encourage folks to report such problems to the private security mailing list first, before disclosing them in a public forum.

Please note that the security mailing list should only be used for reporting undisclosed security vulnerabilities in Apache projects and managing the process of fixing such vulnerabilities. We cannot accept regular bug reports or other queries at this address. All mail sent to this address that does not relate to an undisclosed security problem will be ignored.

If you need to report a bug that isn't an undisclosed security vulnerability, please use the bug reporting system.

Questions about:

- how to configure TomEE securely
- if a vulnerability applies to your particular application
- obtaining further information on a published vulnerability
- availability of patches and/or new releases

should be addressed to the xref:support.adoc[users mailing list].

The private security mailing address is: security (at) apache (dot) org

Note that all networked servers are subject to denial of service attacks, and we cannot promise magic workarounds to generic problems (such as a client streaming lots of data to your server, or re-requesting the same URL repeatedly). In general our philosophy is to avoid any attacks which can cause the server to consume resources in a non-linear relationship to the size of inputs.

== Third-party projects

Apache is built with the following components. Please see the security advisories information for each component for more information on the security vulnerabilities and issues that may affect that component.

- Apache Tomcat 7.x: Tomcat 7 security advisories
- Apache OpenJPA
- Apache CXF: CXF Security Advisories
- Apache OpenWebBeans
- Apache MyFaces
- Apache Bean Validation

By default any regular TomEE releases uses latest sub project releases, so that we can follow all security fixes as much as possible.

== Apache TomEE versioning details

As security is a key concern in many companies, TomEE team also considers to deliver specific security fixes for those external projects being fixed. For instance, if Tomcat fixes a security issue in Tomcat x.y.z, used in TomEE a.b.c, we will consider packaging a new security update release using the new Tomcat release.

In order to achieve a smoothly migration patch between a TomEE version and a security update, the TomEE team has decided to adopt the following versioning major.minor.patch[.security update]

- major ([0-9]+): it refers mainly to the Java EE version we implement. 1.x for Java EE 6 for example.
- minor ([0-9]+): contains features, bugfixes and security fixes (internal or third-party)
- patch ([0-9]+): only bugfixes applied

Optionally we can concatenate a security update to the version if TomEE source base if not impacted but only a dependency. Note this didn't happen yet.

== Additional information

=== Secunia

Secunia is an international IT security company specialising in vulnerability management based in Copenhagen, Denmark.

There is an Apache Software Foundation vendor declared so you can follow all vulnerabilities related to Apache products. Of course, a Apache TomEE product is also available so you can search for know advisories.

== Links

- http://apache.org/security/
- http://apache.org/security/projects.html
- http://apache.org/security/committers.html
- http://cve.mitre.org/[Common Vulnerabilities and Exposures database]
