summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorasklymenko <a.klymenko@vyos.io>2026-05-08 14:12:27 +0300
committerasklymenko <a.klymenko@vyos.io>2026-05-08 14:12:27 +0300
commita0f74b5a2565956ce405b7185842cbdd0b4f1768 (patch)
treece13feb45e4e873fdf8db7a678aa7576e6b45c72 /scripts
parent3c3df90237c39caa1e5f7e2cf3180fa4f5f4b0bb (diff)
downloadvyos-build-a0f74b5a2565956ce405b7185842cbdd0b4f1768.tar.gz
vyos-build-a0f74b5a2565956ce405b7185842cbdd0b4f1768.zip
T8542: Add functionality to generate SBOM file from ISO image. Get Syft from the CDN to prevent a possible supply chain attack
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check-qemu-install20
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install
index e2a27d69..a04e8c22 100755
--- a/scripts/check-qemu-install
+++ b/scripts/check-qemu-install
@@ -404,10 +404,22 @@ if args.sbom:
subprocess.check_output(['mount', '-o', 'loop', transfer_disk_path, setup_mount])
try:
log.info('Downloading syft to transfer disk')
- subprocess.check_call(
- f'curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b {setup_mount}',
- shell=True
- )
+ if platform.machine() in ['amd64', 'x86_64']:
+ syft_tar_url = 'https://cdn.vyos.io/tools/syft_1.44.0_linux_amd64.tar.gz'
+ elif platform.machine() in ['arm64', 'aarch64']:
+ syft_tar_url = 'https://cdn.vyos.io/tools/syft_1.44.0_linux_arm64.tar.gz'
+ else:
+ raise ValueError(f'Unsupported architecture for syft download: {platform.machine()}')
+ import tarfile, tempfile
+ with tempfile.TemporaryDirectory() as tar_tmp:
+ tar_path = os.path.join(tar_tmp, 'syft.tar.gz')
+ subprocess.check_call(['curl', '-sSfL', '-o', tar_path, syft_tar_url])
+ with tarfile.open(tar_path) as tf:
+ with tf.extractfile(tf.getmember('syft')) as src:
+ dest_path = os.path.join(setup_mount, 'syft')
+ with open(dest_path, 'wb') as dst:
+ dst.write(src.read())
+ os.chmod(os.path.join(setup_mount, 'syft'), 0o755)
log.info('Syft downloaded to transfer disk')
finally:
subprocess.check_output(['umount', setup_mount])