RFCs are a way for Atlassian to share what we’re working on with our valued developer community. Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Summary of Project:
In this project we’re exploring options for app/plugin signing to ensure only the signed apps are being installed and seeking input from this audience to brainstorm potential approaches
- Publish: 12 Mar 2024
- Discuss: 26 Mar 2024
- Resolve:
10 Apr 202419 Apr 2024
Problem
Security and trust is foundational to everything we do. We’ve identified opportunities to continue to strengthen our security posture with regards to ecosystem. One clear opportunity identified has been preventing persistence through access to a SYSADMIN account. The risk associated with persistence lies in the ability for the attacker to maintain access to the system even after initial vulnerabilities have been addressed, making threat removal more challenging.
To, we’re exploring options for app/plugin signing and welcome input from this audience to brainstorm potential approaches.
Proposed Solutions
During this process we’ve explored several short-term and long-term solutions, including but not limited to:
- Disabling custom non-marketplace plugin uploads by default at a file system level.
- Limiting plugin upload capability to SYSADMIN operations across all DC products.
- Implementing IP address allowlisting for SYSADMINs to prevent plugin installations over the public internet.
- Requiring 2FA for SYSADMINs.
- Restricting DC user account privileges to prevent execution of web shell commands.
- Implementing integrity and authenticity verification measures (e.g., code signing, certificate chain verification) for installed plugins in DC applications.
After reviewing the mentioned solutions, we’ve chosen to delve deeper into exploring the preferred option of app signing.
App signing
App signing offers several advantages, including enhanced security, trust, increased user confidence, protection against tampering attempts, and compliance with security standards. These benefits make app signing an essential practice for app developers and for Atlassian.
This document initially presents the requirements and then provides a detailed explanation of the various approaches.
Requirements
Air-gapped instances support | The solution must allow air gapped instances to install and verify plugins offline. |
---|---|
Backward compatible | The solution should be compatible with existing instances that have unsigned plugins already installed. |
Custom plugins support | Clients must be able to install their custom plugins. |
Certificates management | Certificate management should be made simple for both our App vendors and Atlassian. |
Extensible | The solution must be extensible to support additional features, such as preventing the execution of unsigned code. |
Encryption Algorithm | To comply with Atlassian Security policies and local country legal constraints (e.g., FedRAMP), we recommend using EdDSA as the signing algorithm for the first implementation phases. |
Native Approach OPTION 1
This solution relies on native JDK tools to sign and verify plugins. It has several benefits, such as embedding digital signatures in the same archive as the source code, which reduces the need to manage additional files. Moreover, it eliminates the need for external services to sign or verify plugins. However, it has a drawback when it comes to managing keys and certificates, which should be fully provided by Atlassian.
Advantages | Disadvantages |
---|---|
Phased approach | Keys and certificates management |
No external dependencies | Rely on JDK binaries (ie. jarsigner ) |
Signatures embedded in the same JAR | Parsing jarsigner output may be challenging |
Sigstore Approach OPTION 2
This approach leverages Sigstore to sign and verify plugins. Using an OpenID Connect (OIDC) provider to generate ephemeral keys for signing plugins eliminates the need for key or certificate management. However, external services such as a Transparency Log (Rekor) are critical to verify signatures.
Advantages | Disadvantages |
---|---|
No keys or certificates management | New critical service creation/maintenance |
Innovative approach (presented as the new standard for OSS) | External dependencies |
Simple signing for apps vendors | “bundle” files management |
Complex architecture |
Bouncy Castle approach OPTION 3
This solution is similar to the Native approach. It simply relies on a 3rd party library to sign and verify JAR files. This is the simplest solution we can think of when it comes to signing artifacts.
The main advantage of using a third-party library lies in the ability to fully control the signing process. This might help restrict signing algorithms, for example. On the other hand, Atlassian will need to provide all the necessary services to manage key pairs as in the Native approach.
The Bouncy Castle library has been used here but it may be replaced by another library.
Advantages | Disadvantages |
---|---|
Phased approach | Keys and certificates management |
Full control of signing/verification steps | signature files management |
Strong community and OSS support |
Actions
- Do you believe that implementing an ‘app signing’ feature for apps would reduce our attack surface and enhance our security posture?
- Please provide feedback on the preferred option and explain why you believe it’s the preferred choice.
- What specific features or enhancements to this solution would facilitate its implementation and effective management?
- If this feature were to be introduced, is your organization equipped to meet the additional requirements for implementing these changes? What assistance and support would you require to better adopt this feature?
- Could you outline the current process for ensuring the security of your apps?
- Feel free to share any additional comments or thoughts on this feature.
- If you are interested in a follow-up 1:1 with our team to share or know more, please leave a comment on this post and we will get back