Skip to content
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

Add capability to communicate chronology for CWE and Actions #65

Open
4 tasks
Chris-Turner-NIST opened this issue Dec 13, 2021 · 2 comments
Open
4 tasks
Labels
Discussion Needed Topic requires further discussion or research to provide more specific actions enhancement New feature or request Object/Relationship Adjustment The issue is related to adding or modifying Objects and/or their Relationships in the data model

Comments

@Chris-Turner-NIST
Copy link
Collaborator

Chris-Turner-NIST commented Dec 13, 2021

User Story:

When using the Vulntology to describe a vulnerability I may desire the ability to communicate the order that certain things occur within a scenario. Specifically this is applicable to communicating CWEs and Actions. If there were properties that allowed me to establish a chain of events within these properties I could better represent a given scenario.

Goals:

Add properties to

Exploited Weakness (https://github.com/usnistgov/vulntology/blob/master/specification/values/exploited-weakness.md)
Actions (https://github.com/usnistgov/vulntology/blob/master/specification/objects/action.md)
Barriers (https://github.com/usnistgov/vulntology/blob/master/specification/objects/barrier.md)
Known Chains (https://github.com/usnistgov/vulntology/blob/master/specification/objects/vulnerability.md)
That communicates a sequence of events (precedes/follows) between sister objects.

Dependencies:

both of these reference the same concept so a unified approach would be mandatory

Acceptance Criteria

  • All readme documentation affected by the changes in this issue have been updated.
  • A Pull Request (PR) is submitted that addresses the goals of this User Story. This issue is referenced in the PR. If the PR only partially addresses a given User Story, the specific goals addressed are identified in the PR.
  • Properties are optional once more than one of the parent object exist (multiple CWEs and/or multiple Actions) within a single scenario
  • Add example use of this to the JSON and Human Readable examples
@Chris-Turner-NIST Chris-Turner-NIST added the enhancement New feature or request label Dec 13, 2021
@david-waltermire
Copy link
Collaborator

We need to consider how to support sequencing for weaknesses, actions, barriers, etc. It would be ideal to come up with a common pattern that could be used in all cases. This will take some more significant design work than this issue indicates, but would greatly enhance the expressiveness of the vulntology.

@Chris-Turner-NIST We should set aside some time to design a way forward.

@david-waltermire david-waltermire added the Discussion Needed Topic requires further discussion or research to provide more specific actions label Mar 22, 2022
@david-waltermire
Copy link
Collaborator

david-waltermire commented Mar 29, 2022

Vulntology Sequencing Requirements

Scope

Support sequencing capability for:

  • Barriers
  • Weaknesses
  • Actions
  • Known Chains (possibly different case since we only want direct hops)

Requirements

  1. Need to express options (e.g., A or B)
  2. Need to express sequencing (ordering/preconditions) (e.g., A then B)
  3. Need to express transitions (cause-effect/outcomes) (e.g., A leads to B)

Note: An array can provide for sequencing, but does not convey conditions or outcomes.

Example

> expresses allowed transition (i.e., A > B is A allows B)
= expresses a requirement (i.e., A = B is B requires A)
() indicates a combination of pre-conditions (i.e., (A B) is A then B)

  • CWE-A > CWE-B => CWE-C
  • CWE-B => CWE-C
  • (CWE-A > CWE-B) => CWE-D > CWE-E

can be expressed as:

YAMLish logical structure:

  A:
     allows: B
     [other data]
  B:
    [other data]
    allows: C (optional)
    allows: D (optional)
  C:
    requires: B (implies B allows C)
    [other data]
  
  D:
    precondition-1:
      requires: A  (implies A must come before B?)
      requires: B (implies B allows D)
    [other data]

JSONish logical structure

{
  "A": {
    "allows": [ "B" ]
  },
  "B": {
    "allows": [ "C", "D" ]
  }
  "C": {
    "requires": [ "B" ]
  }
  "D": {
    "pre-condition": {
      "requires": [ "A", "B" ]
    },
    "allows": [ "E" ]
  }
   
}

A rough example of how this might look in practice.

{
  "actions": [ {
    "id": "action1",
    "allows": "action2"
  },
  {
    "id": "action2",
    "requires": "action1"
  }
  ]
}

@david-waltermire david-waltermire removed this from the Vulntology 0.6.0 Release milestone May 25, 2023
@Chris-Turner-NIST Chris-Turner-NIST added the Object/Relationship Adjustment The issue is related to adding or modifying Objects and/or their Relationships in the data model label Oct 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion Needed Topic requires further discussion or research to provide more specific actions enhancement New feature or request Object/Relationship Adjustment The issue is related to adding or modifying Objects and/or their Relationships in the data model
Projects
None yet
Development

No branches or pull requests

2 participants