-
Notifications
You must be signed in to change notification settings - Fork 207
Add SECURITY.md with AWS-LC threat model #3421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
WesleyRosenblum
wants to merge
8
commits into
aws:main
Choose a base branch
from
WesleyRosenblum:WesleyRosenblum/security-md
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+91
−2
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
703a76f
docs: Add SECURITY.md with AWS-LC threat model
WesleyRosenblum 4d16ab6
docs: Drop consumer list from threat model
WesleyRosenblum ce5e4b0
docs: Drop redundant error-reporting responsibility
WesleyRosenblum 69c91f5
docs: Keep responsibility statement high level
WesleyRosenblum e73c452
docs: Align scope with published advisory history
WesleyRosenblum 8ebb588
docs: Drop editorial aside on misuse resistance
WesleyRosenblum 7cdc11e
Merge branch 'main' into WesleyRosenblum/security-md
WesleyRosenblum 5e624f0
PR feedback
WesleyRosenblum File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,87 @@ | ||
| # Security Reporting Policy | ||
|
|
||
| ## Reporting Security Issues | ||
|
|
||
| We kindly ask that you **do not** open a public GitHub issue to report security concerns. | ||
|
|
||
| Instead, please submit the issue to the AWS Vulnerability Disclosure Program via [HackerOne](https://hackerone.com/aws_vdp) or send your report via [email](mailto:aws-security@amazon.com). | ||
|
justsmth marked this conversation as resolved.
|
||
|
|
||
| Amazon Web Services (AWS) practices industry-standard Coordinated Vulnerability Disclosure (CVD) with the goal of reducing adversary advantage while a security vulnerability is being addressed. The [CERT® Guide to Coordinated Vulnerability Disclosure](https://certcc.github.io/CERT-Guide-to-CVD/tutorials/cvd_in_a_nutshell/) provides information about the CVD process, and outlines tools and practices that can help achieve this goal. | ||
|
|
||
| For more details, visit the [AWS Vulnerability Reporting Page](https://aws.amazon.com/security/vulnerability-reporting/). | ||
|
|
||
| Thank you in advance for collaborating with us to help protect our customers. | ||
|
|
||
| ## Threat Model | ||
|
|
||
| ### Shared Responsibility Model | ||
|
|
||
| Security is a shared responsibility between AWS-LC and the applications that use it. | ||
|
|
||
| AWS-LC is responsible for correctly and securely implementing the cryptographic algorithms and protocols it supports, and for protecting the key material entrusted to it. | ||
|
|
||
| Applications are responsible for the security of the host on which the process loading AWS-LC runs, and for using AWS-LC in a way that achieves their security goals. This includes selecting algorithms, key sizes, and parameters adequate for their own threat model, and calling the API correctly. | ||
|
|
||
| Given this shared responsibility, the following attacks are considered out of scope for AWS-LC: | ||
|
|
||
| * Attacks requiring on-host root access to processes, memory, sockets or files | ||
| * Side-channel attacks exploiting CPU or hardware flaws, such as Meltdown and Spectre | ||
| * Physical attacks, including fault injection, power analysis, and electromagnetic observation | ||
| * Defects in the operating system entropy source, or in the toolchain used to build AWS-LC | ||
|
|
||
| If you are unsure whether an issue falls in or out of scope, we encourage you to report it; we'd rather investigate a potential concern than miss a real one. Even for out-of-scope attacks, we may still choose to apply mitigations after weighing the potential cost to performance, maintainability, and complexity. All reported findings will be investigated and mitigations will be decided on a case-by-case basis. | ||
|
|
||
| ### Adversarial Models | ||
|
|
||
| The following adversarial models describe the threats that AWS-LC is designed to defend against. The protection actually achieved depends on the algorithms and parameters the application selects. For example, forward secrecy requires ephemeral key exchange, and resistance to harvest-now-decrypt-later attacks requires post-quantum key establishment. | ||
|
|
||
| #### Untrusted Input Adversary | ||
|
|
||
| An adversary who controls data an application passes to AWS-LC, such as certificates, signatures, ciphertexts, and encoded keys. This adversary can: | ||
|
|
||
| * Send crafted encodings (e.g. DER, PEM) to exploit flaws in parsers | ||
| * Present revoked or misissued certificates, or chains that violate path constraints | ||
| * Tamper with authenticated ciphertexts, or attempt to forge signatures and authentication tags | ||
| * Cause denial of service through resource exhaustion | ||
|
|
||
| #### Network Adversary | ||
|
|
||
| An active attacker with complete control over the network between a TLS client and server using AWS-LC's libssl. In addition to the untrusted input capabilities above, this adversary may: | ||
|
|
||
| * Intercept, modify, replay, and inject messages sent on public network channels | ||
| * Attempt to downgrade the protocol version or cryptographic parameters negotiated between the peers | ||
| * Exploit timing differences practically measurable over a network | ||
| * Obtain long-term secrets (e.g. private keys) after a session is complete, or exploit weak long-term keys | ||
|
|
||
| #### Co-located Adversary | ||
|
|
||
| An unprivileged process on the same host, or a workload sharing the same physical CPU. In addition to the untrusted input and network capabilities above, this adversary may: | ||
|
|
||
| * Measure fine-grained timing of cryptographic operations performed on secret data | ||
| * Observe microarchitectural state shared with AWS-LC, such as CPU cache access patterns | ||
|
|
||
| ### Vulnerability Scope | ||
|
|
||
| Given the adversarial models above, the following are examples of security-relevant issues that should be reported in accordance with [Reporting Security Issues](#reporting-security-issues): | ||
|
|
||
| * Implementation defects that compromise confidentiality, integrity, or availability, including memory safety defects, undefined behavior, integer overflow, or reads of uninitialized memory | ||
| * Secret-dependent timing, branching, or memory access in cryptographic operations | ||
| * Incorrect algorithm implementations that weaken confidentiality, integrity, or authentication | ||
|
justsmth marked this conversation as resolved.
|
||
| * Verification routines that accept an invalid signature or authentication tag, or a certificate that should be rejected | ||
| * Failure to zeroize long-term or intermediate secret key material | ||
| * Weaknesses in random number generation, such as insufficient seeding or repetition across `fork` | ||
| * A security-relevant failure reported to the caller as success | ||
|
|
||
| The following are generally not considered vulnerabilities in this project's context: | ||
|
|
||
| * Caller-supplied invalid arguments, such as NULL pointers or undersized output buffers | ||
| * Use of deprecated OpenSSL compatibility APIs that behave as documented | ||
| * Weak algorithms or parameters that the caller explicitly selects | ||
| * Differences from OpenSSL behavior documented in the [porting guide](./PORTING.md) | ||
| * Findings requiring the test-only modes described in [FUZZING.md](./FUZZING.md#fuzzer-mode): `BORINGSSL_UNSAFE_FUZZER_MODE` or `BORINGSSL_UNSAFE_DETERMINISTIC_MODE` | ||
|
|
||
| Please tell us if a report concerns a FIPS build. The FIPS module is validated separately, and its boundary and platform limitations are described in [FIPS.md](./crypto/fipsmodule/FIPS.md). See [VERSIONING.md](./VERSIONING.md) for information about which FIPS branches receive security patches. | ||
|
|
||
| ## Prenotification Policy | ||
|
|
||
| If you package or distribute AWS-LC, or use AWS-LC as part of a large multi-user service, you may be eligible for pre-notification of future AWS-LC releases. Please contact aws-lc-pre-notifications@amazon.com. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.