diff --git a/README.md b/README.md
index 5af14aace6a1..0f9a689fbba0 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@ will keep our community secure. If you happen to come across a security issue we
you to disclose it to us privately to allow our users and community enough time to
upgrade. Security issues will always take precedence over anything else in the pipeline.
-For more information on how to disclose a security vulnerability, [please see this page](docs/development/security/README.md).
+For more information on how to disclose a security vulnerability, [please see this page](docs/security-and-privacy/statement-on-security/README.md).
## License
diff --git a/SECURITY.md b/SECURITY.md
index a7850e2afd0c..abb0dc227922 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1 +1 @@
-Please find our statement on security in this document: https://www.openproject.org/docs/development/security/
+Please find our statement on security in this document: https://www.openproject.org/docs/security-and-privacy/statement-on-security/
diff --git a/docs/development/application-architecture/README.md b/docs/development/application-architecture/README.md
index 1ad9752502f9..da6a0692ecac 100644
--- a/docs/development/application-architecture/README.md
+++ b/docs/development/application-architecture/README.md
@@ -15,9 +15,9 @@ keywords: architecture overview, hybrid application, Ruby on Rails, Angular
%%{init: {'theme':'neutral'}}%%
flowchart TD
- browser[Web browser] -->|"HTTP(s) requests"| loadbalancer(Load balancer / proxy)
- A1[Native client] -->|"HTTP(s) requests"| loadbalancer
- A2[SVN or Git client] -->|"HTTP(s) requests"| loadbalancer
+ browser[Web browser] -->|"HTTPS requests"| loadbalancer(Load balancer / proxy)
+ A1[Native client] -->|"HTTPS requests"| loadbalancer
+ A2[SVN or Git client] -->|"HTTPS requests"| loadbalancer
loadbalancer -->|Proxy| openproject
subgraph openproject[OpenProject Core Application]
@@ -34,7 +34,7 @@ flowchart TD
gih["GitHub (gih)"]
cal["Calendar (cal)"]
O["API integrations (api)"]
-
+ W["Outgoing webhooks"]
end
subgraph services[Internal Services]
@@ -46,9 +46,9 @@ end
end
- openproject <--> services
- openproject --> integrations
- loadbalancer <--> integrations
+ openproject <-->|"TCP requests"| services
+ openproject -->|"HTTPS requests"| integrations
+ loadbalancer <-->|"HTTPS requsts"| integrations
subgraph localclients[Local Client / User device]
direction TB
@@ -62,6 +62,28 @@ end
```
+## Involved services
+
+| Service | Relationship to OpenProject | Communication interfaces and mechanisms | Access modes
(R - read)
(W - write) | References |
+| ----------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------- | ------------------------------------------------------------ |
+| Web browser | Performs requests to the application | HTTPS | RW | n/a |
+| Native client | Performs requests to the application | HTTPS | RW | n/a |
+| SVN client | Performs SVN requests to the application web server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) |
+| Git client | Performs Git Smart HTTP requests to the application server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) |
+| Load balancer / Proxy | Depending on installation mechanism, terminates TLS/SSL, accepts and proxies or load balances web requests to the different OpenProject web application servers | HTTPS / PROXY | - | [Configuration for packaged installations](https://www.openproject.org/docs/installation-and-operations/installation/packaged/#step-3-apache2-web-server-and-ssl-termination)
[Configuration for Docker/Kubernetes](https://www.openproject.org/docs/installation-and-operations/installation/docker/#disabling-https-mode) |
+| Puma application server | Accepts web requests, runs the OpenProject web facing application | Web requests (HTTP/HTTPS)
Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) |
+| Memached / Redis / File cache | Application-level cache (if enabled) | TCP connections | RW | [Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options) |
+| PostgreSQL | Database management system | (Encrypted) TCP connections between web and background workers | | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
|
+| Background worker | Handles asynchronous jobs, such as backup requests, email delivery, | Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) |
+| Attached storages or Object storage | Access for attachments for the OpenProject application.
Either directly (or networked) attached storages, or configuration of an S3-compatible Object store | Local filesystem access (local drives, NFS)
HTTPS (S3-compatible storage) | RW | [Configuration of the attachment storage](https://www.openproject.org/docs/installation-and-operations/configuration/#attachments-storage) |
+| Email gateways | Send emails (e.g., notifications) from OpenProject application | SMTP | W (deliver mails to relay) | [SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/) |
+| Identity providers | External authentication providers (e.g., Keycloak, ADFS, etc.) | HTTPS through standard protocols (OpenID connect, SAML, OAuth 2.0) | R (Redirect and read user info) | [OpenID connect provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/)
[SAML provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/saml/)
[OAuth 2.0 application configuration](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/) |
+| Nextcloud | External biliteral integration | HTTPS | RW | [Nextcloud integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/) |
+| GitHub | Pull Request / Issue referencing Integration into Openproject | HTTPS (Webhooks) | R (Incoming webhook from GitHub) | [GitHub integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/github-integration/) |
+| Calendars | External calendars requesting dynamic ICS calendar files from OpenProject | HTTPS (iCalendar/webdav) | R (Outgoing calendar data) | [Calendar subscriptions configuration](https://www.openproject.org/docs/system-admin-guide/calendars-and-dates/#calendar-subscriptions) |
+| API integrations | Structural access to OpenProject through API endpoints. Optional access to users and third party organizations depending on authorized scopes | HTTPS | (Optional) R
(Optional) W
| [API configuration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/) |
+| Outgoing Webhooks | Outgoing requests for changes within the application | HTTPS | R (Outgoing webhook data) | [Webhook configuration an adminstration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) |
+
# Software
diff --git a/docs/development/product-development-handbook/README.md b/docs/development/product-development-handbook/README.md
index ac9e0d67529f..101402dd2499 100644
--- a/docs/development/product-development-handbook/README.md
+++ b/docs/development/product-development-handbook/README.md
@@ -160,16 +160,29 @@ For internal or customer requirements requirements may directly be created, eval
Based on the Product Managers judgement (taking among other things the RICE score and customer backing into account) validated and prioritized features (status: “In specification”) are specified in more detail:
1. PM specifies the solution and creates mockups (e.g. PowerPoint, Google Docs, …).
+
2. PM updates the Opportunity Canvas (especially “Solution” section).
+
3. PM and Developer validate solution (technical feasibility / solution).
+
+ *If this solution touches security relevant components of the application, a Security Engineer is involved to identity and model the associated risks and impacts (thread modelling) according to the documented risks in the [Secure Coding Guidelines](https://www.openproject.org/docs/development/concepts/secure-coding/#secure-coding-guidelines).*
+
4. PM / UX Researcher validates the solution through user interviews. (optional)
+
5. PM / UX Researcher iterates through possible solutions based on user interviews and updates the Opportunity canvas. (optional)
+
6. PM / Developer adds more detailed effort and cost estimates.
+
7. Designer is assigned to the "Designer" field of the feature.
+
8. Designer creates visuals based on mockups (if necessary).
+
9. PM validates design with users (user interviews) (optional)
+
10. PM in coordination with Developer assigns feature to upcoming product version.
+
11. PM hands over features to the Developer.
+
12. PM highlights features that require change in documentation if necessary (custom field “Requires doc change”).
The features in a product version need to be specified at least one iteration prior to development start. If a feature is added to the current version it needs to be specified with high priority. If it is added to the next version it can be specified with a lower priority but still higher then other features in the product backlog.
diff --git a/docs/enterprise-guide/enterprise-cloud-guide/gdpr-compliance/README.md b/docs/enterprise-guide/enterprise-cloud-guide/gdpr-compliance/README.md
index ba400711fe16..9cbd17f7aad7 100644
--- a/docs/enterprise-guide/enterprise-cloud-guide/gdpr-compliance/README.md
+++ b/docs/enterprise-guide/enterprise-cloud-guide/gdpr-compliance/README.md
@@ -73,4 +73,4 @@ Please navigate to -> Administration -> GDPR and you can now online review and s
-Find out more about [OpenProject's security features](../../../development/security/#openproject-security-features).
+Find out more about [OpenProject's security features](../../../security-and-privacy/statement-on-security/#openproject-security-features).
diff --git a/docs/release-notes/12/12-0-4/README.md b/docs/release-notes/12/12-0-4/README.md
index bcf126b86086..37fa1dde930d 100644
--- a/docs/release-notes/12/12-0-4/README.md
+++ b/docs/release-notes/12/12-0-4/README.md
@@ -26,7 +26,7 @@ The vulnerability has been fixed in version 12.0.4. Versions prior to 12.0.0 are
If you are unable to upgrade in a timely fashion, the following patch can be applied: [https://github.com/opf/openproject/pull/9983.patch](https://github.com/opf/openproject/pull/9983.patch)
#### Credits
-This security issue was responsibly disclosed by [Daniel Santos](https://github.com/bananabr) (Twitter [@bananabr](https://twitter.com/bananabr)). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/development/security/).
+This security issue was responsibly disclosed by [Daniel Santos](https://github.com/bananabr) (Twitter [@bananabr](https://twitter.com/bananabr)). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/security-and-privacy/statement-on-security/).
### Bug fixes and changes
- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40314](https://community.openproject.com/wp/40314)\]
diff --git a/docs/release-notes/12/12-5-4/README.md b/docs/release-notes/12/12-5-4/README.md
index f1a9178b1e69..d8c97050e46f 100644
--- a/docs/release-notes/12/12-5-4/README.md
+++ b/docs/release-notes/12/12-5-4/README.md
@@ -19,7 +19,7 @@ The release contains two security related bug fixes and we recommend updating to
When a user registers and confirms their first two-factor authentication (2FA) device for an account, existing logged in sessions for that user account are not terminated. Likewise, if an administrators creates a mobile phone 2FA device on behalf of a user, their existing sessions are not terminated. The issue has been resolved in OpenProject version 12.5.4 by actively terminating sessions of user accounts having registered and confirmed a 2FA device.
-This security related issue was responsibly disclosed by [Vaishnavi Pardeshi](mailto:researchervaishnavi0@gmail.com). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/development/security/).
+This security related issue was responsibly disclosed by [Vaishnavi Pardeshi](mailto:researchervaishnavi0@gmail.com). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/security-and-privacy/statement-on-security/).
For more information, [please see our security advisory](https://github.com/opf/openproject/security/advisories/GHSA-xfp9-qqfj-x28q).
@@ -33,7 +33,7 @@ When a user requests a password reset, an email is sent with a link to confirm a
The issue has been resolved in OpenProject version 12.5.4 by actively revoking any active password reset tokens for user accounts having changed their passwords successfully within the application.
-This security related issue was responsibly disclosed by [Vaishnavi Pardeshi](mailto:researchervaishnavi0@gmail.com). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/development/security/).
+This security related issue was responsibly disclosed by [Vaishnavi Pardeshi](mailto:researchervaishnavi0@gmail.com). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](https://www.openproject.org/docs/security-and-privacy/statement-on-security/).
diff --git a/docs/release-notes/8/8-3-2/README.md b/docs/release-notes/8/8-3-2/README.md
index 7c03a9a4521b..1794ee301e35 100644
--- a/docs/release-notes/8/8-3-2/README.md
+++ b/docs/release-notes/8/8-3-2/README.md
@@ -32,7 +32,7 @@ For the full advisory and patches for older unsupported versions,
post](https://groups.google.com/d/msg/openproject-security/XlucAJMxmzM/hESpOaFVAwAJ).
For our statement on security and further information on how to
responsible disclose security related issues to us, please see our
-[statement on security](../../../development/security/).
+[statement on security](https://www.openproject.org/docs/security-and-privacy/statement-on-security/).
Thanks to Thanaphon Soo from the [SEC Consult Vulnerability
Lab](https://www.sec-consult.com) for identifying and responsibly
diff --git a/docs/security-and-privacy/README.md b/docs/security-and-privacy/README.md
index cadc8f424481..a157a16fbc30 100644
--- a/docs/security-and-privacy/README.md
+++ b/docs/security-and-privacy/README.md
@@ -12,8 +12,11 @@ The purpose of this document is to equip users of OpenProject with the necessar
## Data privacy
+* Privacy policy: [OpenProject privacy policy](https://www.openproject.org/legal/privacy/)
* Data privacy documentation: [Processing of personal data](./processing-of-personal-data/)
## Data security
* Security documentation: BSI Grundschutzchecks (coming Q1 2024)
+* Statement on data security: [Statement on data security](./statement-on-security)
+
diff --git a/docs/development/security/README.md b/docs/security-and-privacy/statement-on-security/README.md
similarity index 89%
rename from docs/development/security/README.md
rename to docs/security-and-privacy/statement-on-security/README.md
index 8116090bf9da..4169b4cdeffb 100644
--- a/docs/development/security/README.md
+++ b/docs/security-and-privacy/statement-on-security/README.md
@@ -1,3 +1,11 @@
+---
+sidebar_navigation:
+ title: Statement on security
+ priority: 600
+description: Statement of data security in OpenProject
+keywords: GDPR, data security, security, OpenProject security, security alerts, single sign-on, password security, mailing list
+---
+
# Statement on security
At its core, OpenProject is an open-source software that is [developed and published on GitHub](https://github.com/opf/openproject). Every change to the OpenProject code base ends up in an open repository accessible to everyone. This results in a transparent software where every commit can be traced back to the contributor.
@@ -49,10 +57,13 @@ If you can, please send us a PGP-encrypted email using the following key:
- Key ID: [0x7D669C6D47533958](https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D47533958),
- Fingerprint BDCF E01E DE84 EA19 9AE1 72CE 7D66 9C6D 4753 3958
-- You may also find the key [attached in our OpenProject repository.](https://github.com/opf/openproject/blob/dev/docs/development/security/security-at-openproject.com.asc)
+- You may also find the key [attached in our OpenProject repository.](https://www.openproject.org/docs/security-and-privacy/statement-on-security/security-at-openproject.com.asc)
Please include a description on how to reproduce the issue if possible. Our security team will get your email and will attempt to reproduce and fix the issue as soon as possible.
+> **Please note:** OpenProject currently does not offer a bug bounty program. We will do our best to give you the appropriate credits for responsibly disclosing a security vulnerability to us. We will gladly reference your work, name, website on every publication we do related to the security update.
+
+
## OpenProject security features
### Authentication and password security
diff --git a/docs/development/security/security-at-openproject.com.asc b/docs/security-and-privacy/statement-on-security/security-at-openproject.com.asc
similarity index 100%
rename from docs/development/security/security-at-openproject.com.asc
rename to docs/security-and-privacy/statement-on-security/security-at-openproject.com.asc
diff --git a/modules/storages/spec/models/nextcloud_storage_spec.rb b/modules/storages/spec/models/nextcloud_storage_spec.rb
new file mode 100644
index 000000000000..e69de29bb2d1