CVEProject / quality-workgroup

9 stars 16 forks source link

communication plan for "<=" version information #1

Open ElectricNroff opened 3 years ago

ElectricNroff commented 3 years ago

This issue is about whether QWG considers itself responsible for drafting a communication plan about whether:

"version_affected": "<=",

in JSON 4 can or can't directly be represented in JSON 5. For example, https://github.com/CVEProject/cve-schema/pull/100 may have widespread support, for good reasons. Immediately after CVE Services 2.0 launches, there can be a CNA that submits JSON 4 content to the CVE Program, and another organization that wants to consume the JSON 5 document that best represents that content. Suppose that the JSON 4 content has the following, which may follow the pattern that the CNA has used for all submissions before the CVE Services 2.0 launch:

"version_affected": "<=",
"version_value": "1.2.9",

The automatically derived JSON 5 document could include:

versions: [
     {
        version: 0.0.0, limit: *, range: semver,
        status: affected,
        changes: [{at: 1.2.10, status: unknown}]
     }
]

or maybe even:

versions: [
     {
        version: 0.0.0, limit: *, range: semver,
        status: affected,
        changes: [{at: 1.2.10, status: unaffected}]
     }
]

(Note the ambiguity about what <= means. A reasonable person might want to intentionally deprecate <= usage.)

However, there is no way for the automatically generated JSON 5 content to include the number 1.2.9 anywhere, for two reasons:

The assigning CNA might be unhappy to see the number 1.2.10 in the automatically generated JSON 5 document, e.g., because they never plan to release a version with that number. (This does not necessarily mean that it is reasonable for them to be unhappy.) If they are unhappy:

If the CNA does nothing between now and November, then:

Thus, a communication plan (written either by QWG or by others) may want to address these points:

chandanbn commented 3 years ago

!< may have the same problem - others with (?) below:

We will need to see the extent of this problem - how many records have this encoding?

Determining a+1 automatically can be tricky too. Data loss in up or down converting is expected - we need to figure out what is acceptable.

versionAffected version start status
> a a+1 affected
>= a a affected
= a a, (not a range) affected
<= a a+1 unaffected(?)
< a a unaffected(?)
!> a a+1 unaffected
!>= a a unaffected
!= a a, (not a range) unaffected
!< a a+1 affected(?)
!<= a a affected(?)