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

affected vendors/affectsCpe could cause ambiguity #41

Closed
tcullum-rh opened this issue Apr 24, 2021 · 4 comments
Closed

affected vendors/affectsCpe could cause ambiguity #41

tcullum-rh opened this issue Apr 24, 2021 · 4 comments

Comments

@tcullum-rh
Copy link
Collaborator

I am not sure all of the semantics behind choosing one of affected.affectsCpe, affected.vendors, or affected.affectsSwid, but currently, the schema allows for potentially all 3 to be submitted. However, affected.vendors can contain multiple products in and of itself, each of which could have separate CPEs. Can/should we move affectsCpe elsewhere?

@chandanbn
Copy link
Collaborator

affectsCpe can have a flattened list of vendor/product/version tree.

For eg.,

  • vendor1
    • product 1
      • version 1
      • version 2
    • product 2

can be

cpe:2.3:a:vendor1:product1:version1
cpe:2.3:a:vendor1:product1:version2
cpe:2.3:a:vendor1:product2

Ensuring consistency between them seems outside the scope of schema definition.
It may be possible to script the conversation to CPE based on vendor/product/version tree.

We discussed tabling affectsSwid for now from v5.

@mprpic
Copy link
Contributor

mprpic commented May 5, 2021

@chandanbn The problem is that most vendors don't consider the product object in this schema to be identifiable across disparate systems. That's what CPE is for. So if a particular product object specifies the affected versions and components, not being able to link it to data from e.g. CSAF advisories through a CPE identifier makes the entire product object pointless. Pretty much every other spec that deals with software identification defines a CPE on the individual component level:

@chandanbn
Copy link
Collaborator

With refactoring vendor->product tree to a flat list of products in #86, the list of affected CPEs can be attached to a product object. It would be a Cartesian product of product names x platforms x affected versions.

Eg


vendor: abc
product: xyz
platforms: [x86, MISP, android]
versions: [ {before: 1.3} ]
cpes: [
  cpe:2.3:a:abc:xyz:1.1:*:*:*:*:android:*

cpe:2.3:a:abc:xyz:1.2:*:*:*:*:android:*

cpe:2.3:a:abc:xyz:1.1:*:*:*:*:*:x86

cpe:2.3:a:abc:xyz:1.2:*:*:*:*:*:x86

...
]

Does this address your concern here?

@mprpic
Copy link
Contributor

mprpic commented Aug 18, 2021

Does this address your concern here?

It does! And #99 solves this nicely.

rsc added a commit to rsc/cve-schema that referenced this issue Aug 18, 2021
- Changed affected from object with array of vendor objects
  with array of products to just plain array of products.
- Added vendor string to product object.
- Renamed productName to product in product object.
- Added cpes array of string to product object,
  replacing affectsCpes inside old affected object.
- Reordered property list in product object
  to put all identifying fields first.
- Changed programRoutines to be array of objects, not array of strings.
- Defined that product object:
  - Requires a product identification, at least one of:
    - vendor and product
    - collectionURL and packageName
    - cpes
  - Also requires versions.
  - Expands CPE definition (previously unspecified).

Based on discussion on issue CVEProject#86.
Fixes CVEProject#41.
Fixes CVEProject#86.
rsc added a commit to rsc/cve-schema that referenced this issue Aug 19, 2021
- Changed affected from object with array of vendor objects
  with array of products to just plain array of products.
- Added vendor string to product object.
- Renamed productName to product in product object.
- Added cpes array of string to product object,
  replacing affectsCpes inside old affected object.
- Reordered property list in product object
  to put all identifying fields first.
- Changed programRoutines to be array of objects, not array of strings.
- Defined that product object:
  - Requires a product identification, at least one of:
    - vendor and product
    - collectionURL and packageName
    - cpes
  - Also requires versions.
  - Expands CPE definition (previously unspecified).

Based on discussion on issue CVEProject#86.
Fixes CVEProject#41.
Fixes CVEProject#86.
rsc added a commit to rsc/cve-schema that referenced this issue Aug 19, 2021
- Changed affected from object with array of vendor objects
  with array of products to just plain array of products.
- Added vendor string to product object.
- Renamed productName to product in product object.
- Added cpes array of string to product object,
  replacing affectsCpes inside old affected object.
- Reordered property list in product object
  to put all identifying fields first.
- Changed programRoutines to be array of objects, not array of strings.
- Defined that product object:
  - Requires a product identification, at least one of:
    - vendor and product
    - collectionURL and packageName
    - cpes
  - Also requires versions.
  - Expands CPE definition (previously unspecified).

Based on discussion on issue CVEProject#86.
Fixes CVEProject#41.
Fixes CVEProject#86.
rsc added a commit to rsc/cve-schema that referenced this issue Aug 19, 2021
- Changed affected from object with array of vendor objects
  with array of products to just plain array of products.
- Added vendor string to product object.
- Renamed productName to product in product object.
- Added cpes array of string to product object,
  replacing affectsCpes inside old affected object.
- Reordered property list in product object
  to put all identifying fields first.
- Changed programRoutines to be array of objects, not array of strings.
- Defined that product object:
  - Requires a product identification, at least one of:
    - vendor and product
    - collectionURL and packageName
    - cpes
  - Also requires versions.
  - Expands CPE definition (previously unspecified).

Based on discussion on issue CVEProject#86.
Fixes CVEProject#41.
Fixes CVEProject#86.
rsc added a commit to rsc/cve-schema that referenced this issue Aug 19, 2021
- Changed affected from object with array of vendor objects
  with array of products to just plain array of products.
- Added vendor string to product object.
- Renamed productName to product in product object.
- Added cpes array of string to product object,
  replacing affectsCpes inside old affected object.
- Reordered property list in product object
  to put all identifying fields first.
- Changed programRoutines to be array of objects, not array of strings.
- Defined that product object:
  - Requires a product identification, at least one of:
    - vendor and product
    - collectionURL and packageName
  - Also requires versions.
  - Expands CPE definition (previously unspecified).

Based on discussion on issue CVEProject#86.
Fixes CVEProject#41.
Fixes CVEProject#86.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants