Re: [Suit] How are firmware and firmware versions expressed in manifest?

Dick Brooks <> Sat, 06 June 2020 19:14 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5210A3A0A94 for <>; Sat, 6 Jun 2020 12:14:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id TtNZqc5m1god for <>; Sat, 6 Jun 2020 12:14:20 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B692B3A0A93 for <>; Sat, 6 Jun 2020 12:14:20 -0700 (PDT)
Received: from compute1.internal (compute1.nyi.internal []) by mailout.nyi.internal (Postfix) with ESMTP id F09EC5C00B5; Sat, 6 Jun 2020 15:14:19 -0400 (EDT)
Received: from mailfrontend1 ([]) by compute1.internal (MEProxy); Sat, 06 Jun 2020 15:14:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm3; bh=4cRppwLwO/lRUP6mh6rCqOzav5qwltR6ImoEfxb49 Y4=; b=a5TaB3AKnahd8KdvgIArPt6rBZ606U5RaW7lhS0wSK3O8LvJ9McrRRRRx bjYvJAnJcUhPo/1Sw47s1H2q5j4VvXg6omiVUq3GUNH5f6toNQIRDNZ7ASOsg7ms 2n+ujNo4IeDA6F7rsYTbrJyfps+r0fwCNGQtPdvfXv1DXQOS0gbS5/zlLxBq20zl AQc0W8buSye3Sz8xI6zDfjdpOSPWUTXSRj+N821Gr5lJzgenC9wt6YTz3qs/y28i O0BehhCDilglTlNlXKGrAQK7j+uXIOGzMChxvM4poBXYQnQHavD4up1Pv/FUSjE3 ausHFkfPIP1hdbZIU74MRQzvmDr2Q==
X-ME-Sender: <xms:C-vbXkiHwrzYC5m1YceCBEKb0mrAb708tf0sHCwviV08rmuz6hWjmw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrudeghedgudegvdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfhfjgfuffhokfggtgfgofhtsehtqhertddvtdejnecuhfhrohhmpedf ffhitghkuceurhhoohhkshdfuceoughitghksehrvghlihgrsghlvggvnhgvrhhghigrnh grlhihthhitghsrdgtohhmqeenucggtffrrghtthgvrhhnpeejteffteefudeilefhleei feevgfefveegteeltdethfeugffgfffhheevleeugfenucffohhmrghinheprhgvlhhirg gslhgvvghnvghrghihrghnrghlhihtihgtshdrtghomhenucfkphepvdduiedrudelfedr udegvddrvddvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrh homhepughitghksehrvghlihgrsghlvggvnhgvrhhghigrnhgrlhihthhitghsrdgtohhm
X-ME-Proxy: <xmx:C-vbXtBltJLLgtBfqvtxRy2tbYpNf1wqgj14Cxx5JPEV-rcZNbhF0Q> <xmx:C-vbXsGRaL10xX7zp8emX49nlKkEj6geFZA3QIuP5t37PfKsvs_9tA> <xmx:C-vbXlThSJnbVOvnWGjgt4sGyDLR2O9V_4TgZC7hxRDOd218EA9FhQ> <xmx:C-vbXvbFM3WLqjosVYjZeOhY8MUrTHAjOxvrXctC3CKONc03Az2nng>
Received: from farpoint (unknown []) by (Postfix) with ESMTPA id 1D8E03280059; Sat, 6 Jun 2020 15:14:19 -0400 (EDT)
From: "Dick Brooks" <>
To: "'Henk Birkholz'" <>, "'Hannes Tschofenig'" <>, "'Eliot Lear'" <>
Cc: "'Michael Richardson'" <>, <>
References: <> <8b6d01d639d0$62614150$2723c3f0$> <> <20437.1591317129@localhost> <1076601d63b3a$d53f5d90$7fbe18b0$> <> <> <5820.1591393073@localhost> <> <> <> <>
In-Reply-To: <>
Date: Sat, 6 Jun 2020 15:14:14 -0400
Organization: Reliable Energy Analytics
Message-ID: <16b4c01d63c36$ad504db0$07f0e910$>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQEpJGg3Q76y3b59AZfDOO6eGr7fRAJUo0s2Am+d4lkB06Pk1ADWaYOUAhdO83ACM65vWAF5pebOAo/piAQB3DbXewHtbRIsATZX7KGpf/ki4A==
Content-Language: en-us
Archived-At: <>
Subject: Re: [Suit] How are firmware and firmware versions expressed in manifest?
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Software Updates for Internet of Things <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 06 Jun 2020 19:14:23 -0000


Thanks for raising the question of context, it goes directly to the point of what purpose an SBOM serves.

My case is very specific to performing US Bulk Electric System NERC CIP0-010-3 R1, Part 1.6 software integrity and authenticity verification using a risk assessment control function. I'm guessing that my requirements may not represent the broader audience. 

The main philosophical underpinnings of this risk assessment are: 
- Collect corroborating evidence from data gathered throughout the risk assessment to assign a trust score, called a SAGScore(TM) that enables a party to make a risk based decision to install/not install a software object;
- A software object is presumed guilty until proven innocent; 
- Never trust software, always verify and report!(TM)

The risk assessment software introspection function uses the SBOM as the baseline for establishing the product developer, product name/identifier, version, release date and component parts that are contained within the software object. This information is used to start the investigation/risk assessment. Corroborating evidence confirming the integrated file SBOM contents align with other information gathered during procurement negotiations and other "ground truth", are used to determine a trust score. The integral SBOM also aids in the identification of malware and vulnerabilities that may be embedded in the software object, which the original developer may not even be aware of. I want the ability to initiate a vulnerability search using the SBOM contents and this requires alignment of the SBOM metadata across  CVE databases and domains.

CVE search engines have a very poor signal/noise ratio, based on my experience. One vendor is starting a new vulnerability search operation, Rapid 7 AttackerKB, that I've asked to include parameter based search capabilities using an expressive language, i.e. sql, to search for vulns using parameters such as component filename, product name, version identifier, legal vendor name and source location URL, using data obtained from an integrated SBOM. I'm hoping this will improve the signal/noise ratio of CVE search results - don't know if this will be delivered, but I have put in my wish list. Ideally values found in the SBOM will align with those kept in the CVE databases.

To summarize, I'm hoping to use a "integrated firmware level SBOM" as the primary information source that must be validated and proven trustworthy through the use of a corroborating evidence algorithm, triangulated among several data sources, including CVE and "known malware" databases. 

I know some people are looking to use an SBOM in license management, but that is not my case. I'm looking to keep bad software from being installed in the US Bulk Electric System and the integrated SBOM of a downloaded software object is my starting point for the risk assessment.

Thanks to everyone that has contributed their time, talent, knowledge and experience to this discussion; it is truly appreciated.


Dick Brooks

Never trust software, always verify and report! ™
Tel: +1 978-696-1788

-----Original Message-----
From: Henk Birkholz <> 
Sent: Saturday, June 06, 2020 1:00 PM
To: Hannes Tschofenig <>om>; Eliot Lear <>
Cc: Michael Richardson <>ca>; Dick Brooks <>om>;
Subject: Re: [Suit] How are firmware and firmware versions expressed in manifest?

Hi all,

my comment preliminary about this is (as my previous comment seems to have been gobbled up by something) is basically this:

Yes. In summary (my previous, gobbled up comment was more elaborate):

* SBOM seems to be a sub-set of CoSWID, and
* a co-author of CosSWID is a member of the NTIA SBOM group.

Effectively, as I tried to post previously, I am looking at this:

> Performing program introspection for risks...
> *************** PROPERTIES *******************
> ----> Manufacturer : Microsoft
> ----> ProductCode : {B6B7DDDB-1FF6-47F6-AB32-457052610E19}
> ----> ProductName : PowerToys (Preview) ProductVersion : 0.15.2
> *************** FILES AND COMPONENTS *******************
> ----> Executable; FileName:  ruguzy_l.exe|PowerToys.exe  in module:
> powertoys_exe
> ----> Executable; FileName:  h-ey7k2x.exe|PowerToysSettings.exe  in module:
> settings_exe
> ----> Executable; FileName:  syxida6a.dll|Notifications.dll  in module:
> notifications_dll

I am rather sure that CoSWID can represent exactly this sub-set of of application context. In general, CoSWID are more on the semantic inter-operational side of things (in contrast of SBOM). In essnece, CoSWID can express this SBOM context. The question here is (,I think), if SBOM efforts intend to go down into this lane of representation context.

We can talk more about this. But while CoSWID in fact incorporates the SBOM context, I wonder if the strict prescriptions of CoSWID are in fact appropriate for the rather loose context of expressiveness of SBOM.

If your target of SBOM is - effectually - resilient and reliable post-processing, then CoSWID is seems to be a viable candidate.

If your goal is to convey a rather unspecified set of software components via a loose set of attributes (which I think SBOM is all about today), CoSWID seems to be way too specific due to the corresponding goal of semantic interoperability. please correct me, if I am wrong here.

Viele Grüße,


On 06.06.20 12:03, Hannes Tschofenig wrote:
> Thanks, Eliot. This is very useful background on the terminology. I 
> have hear about this NTIA effort but didn’t follow it.
> I am not surprised that you already wrote a draft about it. Thanks for 
> the pointer.
> Ciao
> Hannes
> PS: I am still wondering how COSWID fits into all of this now.
> *From:* Eliot Lear <>
> *Sent:* Saturday, June 6, 2020 11:04 AM
> *To:* Hannes Tschofenig <>
> *Cc:* Michael Richardson <>ca>; Dick Brooks 
> <>om>;; Henk Birkholz 
> <>
> *Subject:* Re: [Suit] How are firmware and firmware versions expressed 
> in manifest?
> The NTIA is conducting an effort relatied to this known as SBOM 
> (Software Bill of Materials).  They are in trials with healthcare 
> delivery organizations (HDOs) medical device manufacturers (MDMs) and 
> software providers, including people from the Linux Foundation.  There 
> are several different formats discussed, including Software ID Tags
> (SWID) (ISO-19770) and Software Package Data Exchange (SPDX) which 
> looks very much like what you showed, Dick.  NTIA takes no position on 
> what formats are used.  NIST is planning to move toward SWID as they 
> transition away from the structure used in the National Vulnerability 
> Database (NVD).  I take no position on which of these formats is 
> better, so long as a downstream consumer can easily determine which 
> format is being presented ;-)
> The goal of SBOM is to provide transparency throughout the supply 
> chain as to what is running on an IoT device.  SBOMs at a minimum are 
> intended to provide a manifest, and then optionally some additional 
> stuff like a dependency graph, licensing information, and maybe some 
> additional security attributes such as access requirements, and links 
> assertions about whether a particular component has a vulnerability or 
> has been patched.
> The US FDA is planning to require SBOMs as a part of pre-sales 
> qualification.
> There are great many open issues with regard to SBOMs, some of which 
> this group and the TEEP folk may wish to pursue.  The biggest issue is 
> around naming.  When referring to Java, is that or 
> or does it matter?  When referring to a supplier, is 
> that IBM or Red Hat (or if it’s REALLY old software, Cygnus)?
> A similar issue arises with versioning.  Is that openssl 1.0.1 version 
> patched or unpatched and how does one know?
> Another issue is how an SBOM is retrieved.  What is its well known 
> location?  Does the BOM reside on the device, and is there an 
> interface to retrieve it?  If not, where else is it?  Is it even retrievable?
>   Does it require permissions to do so if it resides at a vendor 
> locale, and if so, how is versioning managed?
> This is the basis for draft-lear-opsawg-mud-sbom-00.txt that Scott 
> Rose from NIST and I put together, and would like to present at 
> opsawg.  The goal of that draft is simply a means o discovery to 
> determine how to retrieve an SBOM.  An example of how one would use 
> this extension for an on-the-box approach in its simplest form would 
> be that the manufacturer advertises a RESTful interface at 
> /.well-known/sbom and returns its favorite format (let’s say SPDX).  
> The back end interface could be as simple as ‘cat 
> /var/lib/dkpg/installed’ or perhaps a bit more complex using a more secure interface to retrieve a signed manifest.
> Anyway, I provide this information mostly without fully understanding 
> the context here, but it seems relevant, given the line of discussion.
>   NTIA project information can be found at 
> Eliot
>     On 6 Jun 2020, at 10:19, Hannes Tschofenig
>     < <>> wrote:
>     I think the BOM terminology is misleading because hardware is not
>     software. The bill of material to produce an IoT product typically
>     does not change (unless you desolder parts) while the software and
>     configuration will regularly change.
>     Leaving that aside, I believe someone active in COSWID needs to
>     clarify what COSWID does. My understanding was that it documents the
>     software libraries on devices. Whether it would be " libcurl 1.0.2"
>     alone or all the libraries that are used to build "libcurl 1.0.2" is
>     a granularity question that the COSWID specs should / could also
>     answer. That's why I thought it would be useful to have it included
>     in the manifest (as supplementary information; as a severable field).
>     If COSWID does not do this then someone needs to explain to me what
>     purpose it serves.
>     Ciao
>     Hannes
>     -----Original Message-----
>     From: Michael Richardson < <>>
>     Sent: Friday, June 5, 2020 11:38 PM
>     To: Hannes Tschofenig <
>     <>>
>     Cc: Eliot Lear < <>>; Dick Brooks
>     <
>     <>>;
>     <>; Saad EL JAOUHARI <
>     <>>; Henk Birkholz
>     <
>     <>>
>     Subject: Re: [Suit] How are firmware and firmware versions expressed
>     in manifest?
>     Hannes Tschofenig <
>     <>> wrote:
>         FWIW I thought that COSWID would provide information about the
>         software
>         libraries on a device.
>     No, AFAIK, it just identifies the materials. (i.e. "libcurl 
> 1.0.2")
>     Assembling them into a BOM requires another process:
>       "curl 1.0.2" contains "libcurl 1.0.2", "curl-main",
>                             "libssl 1.1.1f", "glibc 2.19", "pcre 1.0.2"
>     I could mis-understand though.
>     --
>     ]               Never tell me the odds!                 | ipv6 mesh
>     networks [
>     ]   Michael Richardson, Sandelman Software Works        |    IoT
>     architect   [
>     ] <>
>        |   ruby on rails    [
>     IMPORTANT NOTICE: The contents of this email and any attachments are
>     confidential and may also be privileged. If you are not the intended
>     recipient, please notify the sender immediately and do not disclose
>     the contents to any other person, use it for any purpose, or store
>     or copy the information in any medium. Thank you.
> IMPORTANT NOTICE: The contents of this email and any attachments are 
> confidential and may also be privileged. If you are not the intended 
> recipient, please notify the sender immediately and do not disclose 
> the contents to any other person, use it for any purpose, or store or 
> copy the information in any medium. Thank you.