My responses follow.
- Joe
Q: I have some similar concerns about adding new types to dictionary in a
minor version especially where there is overlap with an existing type. I
have not formed a complete opinion on this yet and I am interested in
understanding more about your concerns regarding the new parts. Can you
give some examples as to how this is causing problems for you?
Response: Specifically, some of the existing CPEs that are in the NVD now
would have to be re-classified if the new parts are introduced. As an
example off the top of my head, JRE is already in the NVD classified as an
application. We have mapped our apps against it's CPE ID and would have to
go back and re-map if the CPE changes as a result of the new type
definitions. I'm also not comfortable that we need the additional part
types to do what we want to do AND we're adding significant complexity by
doing it.
> 1. Insert all colons for all CPE parts. This eases the construction of
CPE names using a concatenate function when it is automated.
Q: Is the CPE more expressive if all colons are included? Are
implementations easier with having them versus not having them? The
behavior should be the same regardless of trailing colon use.
Response: Not more expressive, just easier to build business logic if you're
using a database to dynamically create CPE names. E.G. I created CPE names
for our application database by concatenating "cpe://",[part
type],":",[vendor
name],":",[product],":",[version],":",[update],":",[edition],":",[language].
When a field was blank, the concatenate statement still put in the colons
and there isn't a graceful way to delete them back off. I'm not sure about
how the rest of the community is constructing CPE names, but I'm thinking
they may come across similar problems.
> 2. Change naming scheme for products that use the nn.nn.nn.nn numbering
scheme so that the version field holds the highest order version and the
edition or update field holds the complete nn.nn.nn.nn version information.
This would allow us to map vulnerabilities at the product-version level and
lower level becomes an OVAL problem.
Q: What if the product also has an update or edition? Can you provide some
examples?
Response: It seems that many of the vendors that use the nn.nn.nn.nn naming
convention release patches as software updates that change the later parts
of the nn.nn.nn.nn name, so maybe it would be more appropriate to put the
minor version stuff in the Update column versus the edition column.. My
specific examples include Cisco IOS, Oracle Database, the Linux Kernel
Versions, and Sun OSs.
Oracle and Cisco, in particular have extensive minor version identifiers
(like "12.4(6)T1" for Cisco IOS and "8.1.5.0.0 Enterprise" for Oracle
Database). In many cases, our databases don't specify all the full minor
version information, so we may have to search for potential vulnerabilities
based solely on the product and major version. It would be helpful if that
were broken out already so we don't have to build specialized queries to try
to break it out of the nn.nn.nn.nn version names.
> 4. Require spelling out of all names versus mandatory abbreviations from
an arbitrary list. I'm attaching a list of update names for Microsoft
products. I think it's clear from just this list that the abbreviation
problem will become unmanageable in the near future if we attempt to keep up
with vendor abbreviations. I also can't explain what some of the
abbreviations mean, which means humans would have to continually have a copy
of the abbreviation guide handy. There's also the problem with abbreviation
overlap -- e.g. FR=French and FR=Feature Release.
Q: If the maintainers of the official CPE dictionary apply the abbreviations
consistently I don't think it matters as long as the name is static once
entered into the dictionary. If implementations use static mappings from
this name to another equivalent non-CPE name or the CPE prescribed check
mechanisms to determine applicability of a CPE this is also a non issue. So
what we are left with is a personal choice as to what direction to go. I
don't have a strong opinion either way
considering all of this.
Response: My push to spell out names rather than attempt to manage
abbreviations is just the two issues: 1. XML is meant to be human
readable, so you shouldn't have to consult the CPE spec abbreviation lookup
table to interpret what a CPE says; and 2. There's workload involved in
constantly evaluating, assigning, and maintaining an abbreviation list. I
don't really want to pay for that, and I'm not sure anyone else wants to
either. Other than those two issues, I don't have any real strong feelings
about abbreviations.
Lt Col Joseph L. Wolfkiel
Director, Computer Network Defense Research & Technology (CND R&T) Program
Management Office
NSA/I71
9800 Savage Rd Ste 6767
Ft Meade, MD 20755-6767
Commercial 410-854-5401 DSN 244-5401
Fax 410-854-6700
-----Original Message-----
From: Waltermire, Dave [USA] [mailto:
[hidden email]]
Sent: Thursday, November 15, 2007 12:36 PM
To:
[hidden email]
Subject: Re: [CPE-DISCUSSION-LIST] draft version 2.1 specification
Joe,
I have some similar concerns about adding new types to dictionary in a
minor version especially where there is overlap with an existing type.
I have not formed a complete opinion on this yet and I am interested in
understanding more about your concerns regarding the new parts. Can you
give some examples as to how this is causing problems for you?
More regarding your suggestions below.
> I disagree this fits as a 2.x release. The addition of the
> new part identifiers makes the CPE's I'm using obsolete.
> Seems like that would justify classifying this as a major,
> versus minor release. I would advocate removing the new part
> identifiers from this release. I also disagree that adding
> new part identifiers is necessarily the way to go without
> having a discussion first. My personal opinion is that it's
> probably better to talk about the target HW and SW
> environments for a given application or OS, (or potentially,
> virtualized hardware) which should accommodate virtualization,
> macros, drivers, and runtime environments. It does make
> sense to add a new part for data files which, if used, would
> result in vulnerabilities. But I think that should be a
> function of a 3.0 release to come out much later.
>
> My suggestions for this minor release:
>
> 1. Insert all colons for all CPE parts. This eases the
> construction of CPE names using a concatenate function when
> it is automated.
Is the CPE more expressive if all colons are included? Are
implementations easier with having them versus not having them? The
behavior should be the same regardless of trailing colon use.
> 2. Change naming scheme for products that use the
> nn.nn.nn.nn numbering scheme so that the version field holds
> the highest order version and the edition or update field
> holds the complete nn.nn.nn.nn version information.
> This would allow us to map vulnerabilities at the
> product-version level and lower level becomes an OVAL problem.
What if the product also has an update or edition? Can you provide some
examples?
> 3. Provide implementation guidance for what to do with
> target SW and HW specifications (e.g. MS Word for MacOSX, or
> Windows XP 64 bit)
This would be good.
> 4. Require spelling out of all names
> versus mandatory abbreviations from an arbitrary list. I'm
> attaching a list of update names for Microsoft products. I
> think it's clear from just this list that the abbreviation
> problem will become unmanageable in the near future if we
> attempt to keep up with vendor abbreviations. I also can't
> explain what some of the abbreviations mean, which means
> humans would have to continually have a copy of the
> abbreviation guide handy. There's also the problem with
> abbreviation overlap -- e.g. FR=French and FR=Feature Release.
If the maintainers of the official CPE dictionary apply the
abbreviations consistently I don't think it matters as long as the name
is static once entered into the dictionary. If implementations use
static mappings from this name to another equivalent non-CPE name or the
CPE prescribed check mechanisms to determine applicability of a CPE this
is also a non issue. So what we are left with is a personal choice as
to what direction to go. I don't have a strong opinion either way
considering all of this.