public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: "Marko, Peter" <Peter.Marko@siemens.com>
To: Mark Hatle <mark.hatle@kernel.crashing.org>,
	"richard.purdie@linuxfoundation.org"
	<richard.purdie@linuxfoundation.org>,
	Marta Rybczynska <rybczynska@gmail.com>,
	Steve Sakoman <steve@sakoman.com>,
	Ross Burton <ross.burton@arm.com>
Cc: "openembedded-core@lists.openembedded.org"
	<openembedded-core@lists.openembedded.org>
Subject: RE: [OE-core][PATCH] cve-update-nvd2-native: add workaround for json5 style list
Date: Thu, 10 Apr 2025 10:43:06 +0000	[thread overview]
Message-ID: <AS1PR10MB56975DE1234794F5DCDC4FC5FDB72@AS1PR10MB5697.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <e0b73eab-4ae3-4873-92b6-8ecb55836c62@kernel.crashing.org>

The patch was just merged to master.
I'll send patches for LTS (kirkstone/scarthgap) in the evening, but maybe Steve can just pick them from master quicker as they should apply cleanly.

As I mention in the patch itself, it's hard to design a stable solution if we don't know the reasons for broken jsons.
For now I'm plugging the holes as they arise (monitored by nightly pipeline).
I'd give it a month or two to see stability of FKIE/NVD1 feeds and then we should revisit backports of these to LTS.

Peter

> -----Original Message-----
> From: Mark Hatle <mark.hatle@kernel.crashing.org>
> Sent: Wednesday, April 9, 2025 18:32
> To: Marko, Peter (FT D EU SK BFS1) <Peter.Marko@siemens.com>;
> richard.purdie@linuxfoundation.org; Marta Rybczynska <rybczynska@gmail.com>;
> Steve Sakoman <steve@sakoman.com>; Ross Burton <ross.burton@arm.com>
> Cc: openembedded-core@lists.openembedded.org
> Subject: Re: [OE-core][PATCH] cve-update-nvd2-native: add workaround for json5
> style list
> 
> We're definitely seeing the same failures now.  So we would like some sort of a
> solution back to scarthgap at least.
> 
> This hack can work, or a backport of the newer code.  For now I'm going to have
> to go with the hack for my own products (thanks for that), but I'd that we get a
> longer term solution for the LTS releases.
> 
> --Mark
> 
> On 4/7/25 4:45 AM, Peter Marko via lists.openembedded.org wrote:
> > Dear community,
> >
> > It looks like NVD introduces new bug in their API 2.0 responses every week.
> > (e.g. last week https://git.openembedded.org/openembedded-
> core/commit/?id=8ce06538c9cde0f09909a5a2e61ec10b0d35df49)
> >
> > I know that this is an ugly patch, but I propose it anyway.
> > We probably don't want to invest large effort in redesigning to json5 without
> official statement from NVD.
> >
> > For master this is a minor issue as it has already switched to FKIE as the default
> source.
> > But scarthgap/kirkstone this is currently the only source for cve-check feature.
> > Shall we consider backporting the FKIE to LTS branches?
> > And meanwhile backport this patch so that cve-check works again?
> >
> > Peter
> >
> >> -----Original Message-----
> >> From: Marko, Peter (FT D EU SK BFS1) <Peter.Marko@siemens.com>
> >> Sent: Monday, April 7, 2025 11:36
> >> To: openembedded-core@lists.openembedded.org
> >> Cc: Marko, Peter (FT D EU SK BFS1) <Peter.Marko@siemens.com>
> >> Subject: [OE-core][PATCH] cve-update-nvd2-native: add workaround for json5
> >> style list
> >>
> >> From: Peter Marko <peter.marko@siemens.com>
> >>
> >> NVD responses changed to an invalid json between:
> >> * April 5, 2025 at 3:03:44 AM GMT+2
> >> * April 5, 2025 at 4:19:48 AM GMT+2
> >>
> >> The last response is since then in format
> >> {
> >>    "resultsPerPage": 625,
> >>    "startIndex": 288000,
> >>    "totalResults": 288625,
> >>    "format": "NVD_CVE",
> >>    "version": "2.0",
> >>    "timestamp": "2025-04-07T07:17:17.534",
> >>    "vulnerabilities": [
> >>      {...},
> >>      ...
> >>      {...},
> >>    ]
> >> }
> >>
> >> Json does not allow trailing , in responses, that is json5 format.
> >> So cve-update-nvd2-native do_Fetch task fails with log backtrace ending:
> >>
> >> ...
> >> File: '/builds/ccp/meta-siemens/projects/ccp/../../poky/meta/recipes-
> core/meta/cve-
> >> update-nvd2-native.bb', lineno: 234, function: update_db_file
> >>       0230:            if raw_data is None:
> >>       0231:                # We haven't managed to download data
> >>       0232:                return False
> >>       0233:
> >>   *** 0234:            data = json.loads(raw_data)
> >>       0235:
> >>       0236:            index = data["startIndex"]
> >>       0237:            total = data["totalResults"]
> >>       0238:            per_page = data["resultsPerPage"]
> >> ...
> >> File: '/usr/lib/python3.11/json/decoder.py', lineno: 355, function: raw_decode
> >>       0351:        """
> >>       0352:        try:
> >>       0353:            obj, end = self.scan_once(s, idx)
> >>       0354:        except StopIteration as err:
> >>   *** 0355:            raise JSONDecodeError("Expecting value", s, err.value) from
> >> None
> >>       0356:        return obj, end
> >> Exception: json.decoder.JSONDecodeError: Expecting value: line 1 column
> >> 1442633 (char 1442632)
> >> ...
> >>
> >> There was no announcement about json format of API v2.0 by nvd.
> >> Also this happens only if whole database is queried (database update is
> >> fine, even when multiple pages as queried).
> >> And lastly it's only the cve list, all other lists inside are fine.
> >> So this looks like a bug in NVD 2.0 introduced with some update.
> >>
> >> Patch this with simple character deletion for now and let's monitor the
> >> situation and possibly switch to json5 in the future.
> >> Note that there is no native json5 support in python, we'd have to use
> >> one of external libraries for it.
> >>
> >> Signed-off-by: Peter Marko <peter.marko@siemens.com>
> >> ---
> >>   meta/recipes-core/meta/cve-update-nvd2-native.bb | 5 +++++
> >>   1 file changed, 5 insertions(+)
> >>
> >> diff --git a/meta/recipes-core/meta/cve-update-nvd2-native.bb b/meta/recipes-
> >> core/meta/cve-update-nvd2-native.bb
> >> index b9c18bf6b6..32a14a932b 100644
> >> --- a/meta/recipes-core/meta/cve-update-nvd2-native.bb
> >> +++ b/meta/recipes-core/meta/cve-update-nvd2-native.bb
> >> @@ -229,6 +229,11 @@ def update_db_file(db_tmp_file, d, database_time):
> >>                   # We haven't managed to download data
> >>                   return False
> >>
> >> +            # hack for json5 style responses
> >> +            if raw_data[-3:] == ',]}':
> >> +                bb.note("Removing trailing ',' from nvd response")
> >> +                raw_data = raw_data[:-3] + ']}'
> >> +
> >>               data = json.loads(raw_data)
> >>
> >>               index = data["startIndex"]
> >>
> >>
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >> Links: You receive all messages sent to this group.
> >> View/Reply Online (#214428):
> https://lists.openembedded.org/g/openembedded-core/message/214428
> >> Mute This Topic: https://lists.openembedded.org/mt/112129465/3616948
> >> Group Owner: openembedded-core+owner@lists.openembedded.org
> >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
> [mark.hatle@kernel.crashing.org]
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >>

  reply	other threads:[~2025-04-10 10:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-07  9:35 [OE-core][PATCH] cve-update-nvd2-native: add workaround for json5 style list Peter Marko
2025-04-07  9:45 ` Marko, Peter
2025-04-09 16:32   ` Mark Hatle
2025-04-10 10:43     ` Marko, Peter [this message]
2025-04-10 10:51       ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AS1PR10MB56975DE1234794F5DCDC4FC5FDB72@AS1PR10MB5697.EURPRD10.PROD.OUTLOOK.COM \
    --to=peter.marko@siemens.com \
    --cc=mark.hatle@kernel.crashing.org \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@linuxfoundation.org \
    --cc=ross.burton@arm.com \
    --cc=rybczynska@gmail.com \
    --cc=steve@sakoman.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox