-
-
Notifications
You must be signed in to change notification settings - Fork 172
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
SBOM Software Bill Of Materials #4050
Comments
Here are some starting points and initial thoughts. This should tie into the Usage : Security documentation since some issues can be mitigated or bypassed using a tight configuration. The closest thing we have to an overview of the dependencies is here: https://github.com/Xpra-org/xpra/blob/master/docs/Build/Dependencies.md (and includes some pretty diagrams) MacOSThe MacOS builds are by far the easiest to track since we define and build every single library ourselves. MS WindowsThe full $ pacman -Qe | wc -l
179 There are also python dependencies which do not have corresponding MINGW packages and are installed via pip: xpra/packaging/MSWindows/SETUP.sh Lines 38 to 42 in 15bce9d
Then there are also some manual steps: xpra/packaging/MSWindows/SETUP.sh Line 46 in 15bce9d
Packages we do not update as often as othersThere can be many reasons why some packages are not updated as regularly as others:
Opaque packages:
3.1Some issues are magnified in 3.1:
On the whole, I don't think that it is reasonable to expect the 3.1.x to have the same level of maintenance as current versions. |
We should probably split the dependencies into categories - this is probably too many:
|
The MS Windows dependencies can be recorded in |
This seems relevant: Understanding the NSA’s latest guidance on managing OSS and SBOMs |
Both MacOS and MS Windows builds will now record the libraries and python modules present on the build system when the installer is generated. The feature for the html5 client is now tracked here: Xpra-org/xpra-html5#277 Next up:
|
Another tricky one to handle is pdfium-binaries releases - this release page does show a line that says something like "This version was built with branch chromium/6337 of PDFium".
The easiest way might be to create a "fake" pacman |
The new script that I am working on would flag: Fixed in: On the plus side, the exploit seems to target a specific function in openssh - with glibc, and we don't use openssh by default, and no glibc, and not as a server... So no need to panic. Good links on the subject: |
Forgot another packages missing from MSYS2 that we should contribute upstream: xpra/packaging/MSWindows/SETUP.sh Line 70 in 79d8e18
Trivial to install: meson build && ninja install .
|
cyclonedx-python-lib: This Python package provides data models, validators and more, to help you create/render/read CycloneDX documents. |
too much is better than too little, use structured data so we can more easily access it in Python without making assumptions
As of 5d21b1b, a default build will add a lot of metadata in
(only the first 4 packages are show here since there are literally hundreds of them, as we record all the packages installed on the build system - whether they are used or not, which is impossible to ascertain) Then also:
Again, far too many to show here. This data can be converted to a JSON SBOM using cyclonedx - and maybe this should be a separate build arctifact? |
@solofoA45 good news is that the scripting part is mostly done and working well, the bits that still need doing stick out from the script output:
And I think that this should be relatively straightforward to backport this code to older branches:
|
Here's the beginning of the raw SBOM data for a full build (this is parseable as python source): # 307 SBOM path entries:
{
'lib/gdk-pixbuf-2.0/2.10.0/loaders/io-wmf.dll': \
(19975, '39f9911e319826a956a6a858dca4ad5d406e580db8eff3d760245b4b26435540', 'libwmf', '0.2.13-1'),
'lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-ani.dll': \
(26756, '9ed6fb05b84163c24ee2ecf3036b3a23a0f88e2bd29f45bbf1e97cfc079e7216', 'gdk-pixbuf2', '2.42.12-3'),
'lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-avif.dll': \
(25362, '6f99f0d702fc085fadf9d2a9033f0c8349c0b2d73019e5e32a4ffcaa50b3a0bf', 'libavif', '1.1.1-1'),
'lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-bmp.dll': \
(27093, 'bfbba366556397a66c82844a2fea656baa303ab501c112b1139143623a392d13', 'gdk-pixbuf2', '2.42.12-3'),
...
|
Some of the missing MSYS2 packages have been submitted upstream: This one I will probably keep in my own repo as I don't think that will be acceptable for upstream: Which only leaves
|
use our own code for getting the disk usage
this has to be done before zipping up the python modules
so we don't depend on too many extra packages that are never actually used (ie: 'libheif') also fix the pixbuf filtering, which never deleted any actual loaders (oops)
so we can avoid all the dependencies this requires: keyring and lots of jaraco modules, just for parsing http headers - really?
Remaining warnings for light builds during the cyclonedx export step that still need to be investigated:
|
* do bundle gss / kerberos so even light clients can use it to authenticate, * don't bundle 'duktape'
* record DLL found in pkcs11 subdir and don't try to use this subdir as a python module, * record 'decorator' by hand, * document the details on the 'mpdecimal' unnecessary dependency warning, * skip more optional deps * always remove extra python modules when making 'light' builds, even if not zipping the modules
With the latest dependency updates and tweaks, only a few corner cases remain for the "light" builds:
|
To make things even more "interesting", MSYS2 just switched from Python 3.11 to Python 3.12. Good news is that the upgrade just worked.
|
The packaging/MSWindows/BUILD.py export-sbom It requires:
|
There is now a link from the download page to the corresponding sbom files. (only for the beta releases for now, others will be added later) |
also fix type hints and return the correct data type
* match v5.x setup.py flags * no manifests in this branch * add numeric version no (easier than reverse computing it)
Caveats:
Closing. |
With the latest fixes, the only missing piece is a |
For pycuda, see #2400 (comment) |
This also works for arm64 builds: #3941 |
For security and compliance concerns, it would be good to have a list
of dependencies for example to assess which security vulnerabilities affect Xpra:
https://en.wikipedia.org/wiki/Software_supply_chain
While this is rather clear for linux (RPM) packages, this is less
clear for windows packages and HTML5 client packages.
Is there already a way to get these informations?
The text was updated successfully, but these errors were encountered: