-
Notifications
You must be signed in to change notification settings - Fork 53
Resolve tension between Threat Model and Privacy & Security Considerations #711
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
base: main
Are you sure you want to change the base?
Changes from 5 commits
cf51b1c
453af4f
b7cab16
297bb5e
2bddd1b
0974570
f329f53
7fa6ebd
9642adb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -114,6 +114,17 @@ | |
| <script src="threats/t27-workflow-variables-allow-workflow-template-to-be-misused.js"></script> | ||
| <script src="threats/t28-callback-urls-during-workflows-slow-to-respond.js"></script> | ||
| <script src="threats/t29-ecosystem-gatekeeping-in-the-name-of-security-or-privacy.js"></script> | ||
| <script src="threats/t30-issuance-request-and-or-delivery-made-by-third-party.js"></script> | ||
| <script src="threats/t31-unintended-data-leak-due-to-third-party-processing.js"></script> | ||
| <script src="threats/t32-malicious-entity-acts-on-behalf-of-incapable-party.js"></script> | ||
| <script src="threats/t33-verifier-phones-home-about-specific-verifiable-credential.js"></script> | ||
| <script src="threats/t34-unknown-proof-types.js"></script> | ||
| <script src="threats/t35-interaction-url-does-not-use-https.js"></script> | ||
| <script src="threats/t36-deletion-request-only-results-in-partial-deletion-of-credential.js"></script> | ||
| <script src="threats/t37-credential-deletion-violates-legal-regulation.js"></script> | ||
| <script src="threats/t38-mishandled-status-information-upon-credential-deletion-reveals-information.js"></script> | ||
| <script src="threats/t39-large-payload-triggers-denial-of-service-dos.js"></script> | ||
| <script src="threats/t40-improper-credential-validation-leads-to-security-vulnerabilities.js"></script> | ||
| </head> | ||
|
|
||
| <body> | ||
|
|
@@ -726,6 +737,53 @@ <h2>Threats</h2> | |
| </section> | ||
|
|
||
|
|
||
| <section class="appendix"> | ||
| <h2>Security Considerations</h2> | ||
| <p> | ||
| This section details additional security considerations that were not | ||
| found to have direct threats related to this specification but the group | ||
| still wanted to highlight. | ||
| </p> | ||
|
|
||
| <section> | ||
| <h3>Secure Coding Practices</h3> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe this goes in the conformance section? Or where we talk about conforming implementations? |
||
|
|
||
| <p> | ||
| Implementers are urged to use industry standard secure coding practices when | ||
| implementing this specification. Even deeply experienced software developers can | ||
| make mistakes and the use of secure coding checklists and vulnerability scanning | ||
| software can catch errors that would result in security compromises. Following | ||
| checklists and guides such as the | ||
| <a href="https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/stable-en/"> | ||
| OWASP Secure Coding Practices Checklist</a> and the | ||
| <a href="https://owasp.org/www-project-web-security-testing-guide/"> | ||
| OWASP Web Security Testing Guide</a> can help reduce the chance of insecure | ||
| implementations. | ||
| </p> | ||
| </section> | ||
|
|
||
| <section> | ||
| <h3>Other Security Considerations</h3> | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we can put this in the Threat Model section introduction? |
||
|
|
||
| <p> | ||
| Since the interfaces to manage the lifecycle of [=verifiable credentials=] | ||
| described by this specification are generalized in nature, the security | ||
| implications of their use might not be immediately apparent to readers. | ||
| To understand the sort of security | ||
| concerns one might need to consider in a complete software system, implementers | ||
| are urged to read about how this technology can be used by the | ||
| [[[?VC-DATA-MODEL-2.0]]] specification (specifically the section | ||
| on <a data-cite="?VC-DATA-MODEL-2.0#security-considerations"> | ||
| Verifiable Credential Security Considerations</a>), as well as the | ||
| [[[?VC-DATA-INTEGRITY]]] specification (specifically the section | ||
| on <a data-cite="?VC-DATA-INTEGRITY#security-considerations"> | ||
| Data Integrity Security Considerations</a>). | ||
| </p> | ||
| </section> | ||
|
|
||
| </section> | ||
|
|
||
|
|
||
| </body> | ||
|
|
||
| </html> | ||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,15 @@ | ||||||||||
| (function () { | ||||||||||
| var threat = { | ||||||||||
| id: "T30", | ||||||||||
| name: "Issuance Request and/or Delivery Made by Third Party", | ||||||||||
| desc: "Verifiable credentials issuance has a request phase and a delivery phase. The request might be made by the subject or another role, and delivery can be to a client that might or might not be controlled by the subject.", | ||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This threat is a bit confusing. For one, the terms “request phase” and “delivery phase” are a bit confusing. Secondly the notion of the subject requesting issuance is not common, unless you’re referring to the credential refresh flow. Could you reword this threat or explain the intention behind it in a comment?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I gave it a try. This language came from the existing Security Considerations section this used to belong to so I am interpreting what was there. I do think that "requesting" the issuance of a credential is a fairly common pattern but agree that the "phase" terminology is likely from old language.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am more than a bit concerned that this is being re-written as if the default condition is that a (worse, the) subject of a verifiable credential is the default holder, and vice versa. There is no reason that "unknown harms" should be suggested as likely for a "subject" that is not a/the "holder". Subjects need not every know that a VC has been issued, nor what holders have ever or are how holding a VC of which they are a subject!
Suggested change
|
||||||||||
| response: [ | ||||||||||
| { id: "R45", name: "Cryptographic Delegation", type: "Reduce", desc: "Use of cryptographically bound delegation techniques, such as zCaps, allow for third parties to act on behalf of the subject." } | ||||||||||
| ], | ||||||||||
| elements: ["F1", "F19", "P1", "P4", "P5"], | ||||||||||
|
eric-schuh marked this conversation as resolved.
|
||||||||||
| tags: ["security", "privacy"], | ||||||||||
| taxonomyName: "STRIDE", | ||||||||||
| taxonomyClass: "Spoofing" | ||||||||||
| }; | ||||||||||
| window.ThreatModel.register(threat); | ||||||||||
| })(); | ||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| (function () { | ||
| var threat = { | ||
| id: "T31", | ||
| name: "Unintended Data Leak Due to Third Party Processing", | ||
| desc: "An issuer or verifier may make use of a third party service to process some data during an issuance or verification workflow. This third party service becomes a potential data leak risk as it may be able to aggregate across different issuers or verifiers using its services.", | ||
| response: [ | ||
| { id: "R46", name: "Minimize Data Sent to Third Party Services", type: "Reduce", desc: "Sending only data necessary for a third party service to perform its intended function limits the ability of the service, maliciously or via attacks on said service, to reveal unintended data." }, | ||
| { id: "R47", name: "Appropriate Legal Contracts", type: "Transfer", desc: "When making use of a third party service, having appropriate legal contracts in place around the usage of the data sent to the service allows issuers and verifiers to have recourse should data leaks occur." } | ||
| ], | ||
| elements: ["P4"], | ||
|
eric-schuh marked this conversation as resolved.
|
||
| tags: ["privacy"], | ||
| taxonomyName: "STRIDE", | ||
| taxonomyClass: "Information Disclosure" | ||
| }; | ||
| window.ThreatModel.register(threat); | ||
| })(); | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| (function () { | ||
| var threat = { | ||
| id: "T32", | ||
| name: "Malicious Entity Acts on Behalf of Incapable Party", | ||
| desc: "Some subjects such as a new born baby, a pet, or a person with dementia, are incapable of acting on their own behalf. In these cases requests may be made on behalf of a subject with no cryptographic delegation possible. This can be problematic when guardians have malicious intent.", | ||
| response: [ | ||
| { id: "R48", name: "Additional Validation Steps in Workflow", type: "Reduce", desc: "In cases where the requesting party is not the intended subject of the action being requested, the workflow in question can include additional validation steps that ask the requesting party for additional information." } | ||
| ], | ||
| elements: ["F1", "F19", "P1", "P4"], | ||
|
eric-schuh marked this conversation as resolved.
|
||
| tags: ["security", "privacy"], | ||
| taxonomyName: "STRIDE", | ||
| taxonomyClass: "Spoofing" | ||
| }; | ||
| window.ThreatModel.register(threat); | ||
| })(); | ||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don’t know if it makes sense to have traditional security and privacy consideration sections in the threat model, but I agree with Manu about finding strategic places to place this information in the core spec (e.g., conformance, threat model, or some other appendix) or the new threat model document.