フォトシンス エンジニアブログ

株式会社Photosynth のテックブログです

debsecan パッケージ、Amazon Inspector、ChatGPTとの対話を経て Raspberry Pi OS の脆弱性を分析する

はじめに

この記事は Akerun Advent Calendar 2024 - Qiita の13日目の記事です。

こんにちは、SW開発部の @naritaku です。普段はゲートウェイ製品の開発をしています。

新卒で入社してから4年目を迎え、ライフサイクルや運用を意識する仕事が増えてきました。

時間がいくらあっても足りないなと思う毎日ですが、そんな時こそおろそかにしてはならないものが脆弱性の早期発見とその対策です。

最新の脆弱性情報を把握し迅速に対応することが求められますが、その他にもやりたいことがたくさんある中で致命的になるものをパパッと取り除きたい!と思い、いろいろ調べていました。

便利そうなものをいくつか試し学べたので、その知識を活かすべく今回はみんな大好き Raspberry Pi OS で脆弱性を分析してみようと思います。

やりたいこと

既存のツールをうまく使いながら、最新の Raspberry Pi脆弱性を素早く手短に調べてみます。

  • 最新の Raspberry Pi脆弱性をスキャンする
  • 出てきたCVEを使って、ログを残す
  • 「特にヤバいもの」を、リストアップさせる
  • 予防策を考える

今回利用するツール

debsecan

wiki.debian.org

Debianパッケージの脆弱性を検出できるツールです。 Raspberry Pi OS もベースはdebainなので、この仕組みに則って検出ができます。

Amazon Inspector

aws.amazon.com

公式サイトより引用すると

Amazon Inspector は、Amazon EC2 インスタンス、コンテナ、Lambda 関数などのワークロードを自動的に検出し、ソフトウェアの脆弱性や意図しないネットワークの露出がないかをスキャンします。

といった内容で、AWSのサービスと組み合わせて使うとより便利なサービスですが、今回はこのInspectorの一機能であるAmazon Inspector vulnerability databaseを参照し、脆弱性情報のデータベースとしてだけ使います。

https://nvd.nist.gov/developers/vulnerabilities などでも似たような脆弱性情報は取得できますが複数のデータベースから整ったフォーマットで情報を返してくれる点、レート制限等が他に比べてゆるい点などから採用します。

ChatGPT

GPTs の機能を使います。

openai.com

普段のChatGPTとインターフェースはほとんど変わりませんが、特定の用途に特化させたり、カスタムアクションとして外部サービスやAPIと連携できます。

今回は用途に合わせた設定を簡単に共有できる部分にメリットを感じたため採用します。

やってみる

Raspberry Pi 5 と最新の Raspberry Pi OS を使って検知をしてみます。

Raspberry Pi Imagerを使って、OSをインストールします。2024-11-19リリースのrecommendされているバージョンを対象に検査してみます。

osの選択

オプションでwifisshの設定をしておくと便利です。インストールが終わったら、sdカードを差して起動します。

まずはラズパイにdebsecanをインストールします。 いくつか依存する追加のパッケージがインストールされますがこのまま続けてしまいます。

sudo apt install debsecan

該当するCVEの数を調べてみます。

debsecan --suite bookworm --format simple

実行結果 (クリックで展開できます)

pi@rasoberrypi:~ $ debsecan --suite bookworm --format simple
CVE-2023-38469 avahi-daemon
CVE-2023-38470 avahi-daemon
CVE-2023-38471 avahi-daemon
CVE-2023-38472 avahi-daemon
CVE-2023-38473 avahi-daemon
CVE-2024-52615 avahi-daemon
CVE-2024-52616 avahi-daemon
CVE-2023-38469 avahi-utils
CVE-2023-38470 avahi-utils
CVE-2023-38471 avahi-utils
CVE-2023-38472 avahi-utils
CVE-2023-38473 avahi-utils
CVE-2024-52615 avahi-utils
CVE-2024-52616 avahi-utils
CVE-2023-27349 bluez
CVE-2023-44431 bluez
CVE-2023-45866 bluez
CVE-2023-50229 bluez
CVE-2023-50230 bluez
CVE-2023-51580 bluez
CVE-2023-51589 bluez
CVE-2023-51592 bluez
CVE-2023-51594 bluez
CVE-2023-51596 bluez
CVE-2022-48174 busybox
CVE-2023-39810 busybox
CVE-2023-42363 busybox
CVE-2023-42364 busybox
CVE-2023-42365 busybox
CVE-2023-42366 busybox
CVE-2020-15999 chromium
CVE-2020-16044 chromium
CVE-2020-15999 chromium-common
CVE-2020-16044 chromium-common
CVE-2020-15999 chromium-sandbox
CVE-2020-16044 chromium-sandbox
CVE-2016-2781 coreutils
CVE-2024-47177 cups-browsed
CVE-2024-47850 cups-browsed
CVE-2024-47177 cups-filters
CVE-2024-47850 cups-filters
CVE-2024-47177 cups-filters-core-drivers
CVE-2024-47850 cups-filters-core-drivers
CVE-2024-9681 curl
CVE-2023-28450 dnsmasq-base
CVE-2023-50387 dnsmasq-base
CVE-2023-50868 dnsmasq-base
CVE-2024-11692 firefox
CVE-2024-11694 firefox
CVE-2024-11695 firefox
CVE-2024-11696 firefox
CVE-2024-11697 firefox
CVE-2024-11699 firefox
CVE-2024-11700 firefox
CVE-2024-11701 firefox
CVE-2024-11702 firefox
CVE-2024-11703 firefox
CVE-2024-11704 firefox
CVE-2024-11705 firefox
CVE-2024-11706 firefox
CVE-2024-11708 firefox
CVE-2023-25193 gir1.2-harfbuzz-0.0
CVE-2016-2568 gir1.2-polkit-1.0
CVE-2023-37328 gstreamer1.0-alsa
CVE-2024-4453 gstreamer1.0-alsa
CVE-2023-37328 gstreamer1.0-plugins-base
CVE-2024-4453 gstreamer1.0-plugins-base
CVE-2023-37327 gstreamer1.0-plugins-good
CVE-2023-37328 gstreamer1.0-x
CVE-2024-4453 gstreamer1.0-x
CVE-2024-6655 gtk2-engines-pixbuf
CVE-2023-6879 libaom3
CVE-2023-38469 libavahi-client3
CVE-2023-38470 libavahi-client3
CVE-2023-38471 libavahi-client3
CVE-2023-38472 libavahi-client3
CVE-2023-38473 libavahi-client3
CVE-2024-52615 libavahi-client3
CVE-2024-52616 libavahi-client3
CVE-2023-38469 libavahi-common-data
CVE-2023-38470 libavahi-common-data
CVE-2023-38471 libavahi-common-data
CVE-2023-38472 libavahi-common-data
CVE-2023-38473 libavahi-common-data
CVE-2024-52615 libavahi-common-data
CVE-2024-52616 libavahi-common-data
CVE-2023-38469 libavahi-common3
CVE-2023-38470 libavahi-common3
CVE-2023-38471 libavahi-common3
CVE-2023-38472 libavahi-common3
CVE-2023-38473 libavahi-common3
CVE-2024-52615 libavahi-common3
CVE-2024-52616 libavahi-common3
CVE-2023-38469 libavahi-core7
CVE-2023-38470 libavahi-core7
CVE-2023-38471 libavahi-core7
CVE-2023-38472 libavahi-core7
CVE-2023-38473 libavahi-core7
CVE-2024-52615 libavahi-core7
CVE-2024-52616 libavahi-core7
CVE-2023-38469 libavahi-glib1
CVE-2023-38470 libavahi-glib1
CVE-2023-38471 libavahi-glib1
CVE-2023-38472 libavahi-glib1
CVE-2023-38473 libavahi-glib1
CVE-2024-52615 libavahi-glib1
CVE-2024-52616 libavahi-glib1
CVE-2020-24027 libbasicusageenvironment1
CVE-2021-28899 libbasicusageenvironment1
CVE-2021-38380 libbasicusageenvironment1
CVE-2021-38381 libbasicusageenvironment1
CVE-2021-38382 libbasicusageenvironment1
CVE-2021-39282 libbasicusageenvironment1
CVE-2021-39283 libbasicusageenvironment1
CVE-2021-41396 libbasicusageenvironment1
CVE-2023-37117 libbasicusageenvironment1
CVE-2023-27349 libbluetooth3
CVE-2023-44431 libbluetooth3
CVE-2023-45866 libbluetooth3
CVE-2023-50229 libbluetooth3
CVE-2023-50230 libbluetooth3
CVE-2023-51580 libbluetooth3
CVE-2023-51589 libbluetooth3
CVE-2023-51592 libbluetooth3
CVE-2023-51594 libbluetooth3
CVE-2023-51596 libbluetooth3
CVE-2024-7883 libc++1-16
CVE-2024-7883 libc++abi1-16
CVE-2023-4806 libc-bin
CVE-2024-2961 libc-bin
CVE-2024-33599 libc-bin
CVE-2024-33600 libc-bin
CVE-2024-33601 libc-bin
CVE-2024-33602 libc-bin
CVE-2023-4806 libc-dev-bin
CVE-2024-2961 libc-dev-bin
CVE-2024-33599 libc-dev-bin
CVE-2024-33600 libc-dev-bin
CVE-2024-33601 libc-dev-bin
CVE-2024-33602 libc-dev-bin
CVE-2023-4806 libc-devtools
CVE-2024-2961 libc-devtools
CVE-2024-33599 libc-devtools
CVE-2024-33600 libc-devtools
CVE-2024-33601 libc-devtools
CVE-2024-33602 libc-devtools
CVE-2023-4806 libc-l10n
CVE-2024-2961 libc-l10n
CVE-2024-33599 libc-l10n
CVE-2024-33600 libc-l10n
CVE-2024-33601 libc-l10n
CVE-2024-33602 libc-l10n
CVE-2023-4806 libc6
CVE-2024-2961 libc6
CVE-2024-33599 libc6
CVE-2024-33600 libc6
CVE-2024-33601 libc6
CVE-2024-33602 libc6
CVE-2023-4806 libc6-dbg
CVE-2024-2961 libc6-dbg
CVE-2024-33599 libc6-dbg
CVE-2024-33600 libc6-dbg
CVE-2024-33601 libc6-dbg
CVE-2024-33602 libc6-dbg
CVE-2023-4806 libc6-dev
CVE-2024-2961 libc6-dev
CVE-2024-33599 libc6-dev
CVE-2024-33600 libc6-dev
CVE-2024-33601 libc6-dev
CVE-2024-33602 libc6-dev
CVE-2017-7475 libcairo-gobject2
CVE-2018-18064 libcairo-gobject2
CVE-2019-6461 libcairo-gobject2
CVE-2019-6462 libcairo-gobject2
CVE-2017-7475 libcairo2
CVE-2018-18064 libcairo2
CVE-2019-6461 libcairo2
CVE-2019-6462 libcairo2
CVE-2024-47177 libcupsfilters1
CVE-2024-47850 libcupsfilters1
CVE-2024-9681 libcurl3-gnutls
CVE-2024-9681 libcurl4
CVE-2023-32570 libdav1d6
CVE-2023-51792 libde265-0
CVE-2024-38949 libde265-0
CVE-2024-38950 libde265-0
CVE-2021-46310 libdjvulibre-text
CVE-2021-46312 libdjvulibre-text
CVE-2021-46310 libdjvulibre21
CVE-2021-46312 libdjvulibre21
CVE-2023-52339 libebml5
CVE-2023-52425 libexpat1
CVE-2024-50602 libexpat1
CVE-2023-52425 libexpat1-dev
CVE-2024-50602 libexpat1-dev
CVE-2023-38857 libfaad2
CVE-2023-38858 libfaad2
CVE-2024-47177 libfontembed1
CVE-2024-47850 libfontembed1
CVE-2024-2236 libgcrypt20
CVE-2022-48340 libgfapi0
CVE-2022-48340 libgfrpc0
CVE-2022-48340 libgfxdr0
CVE-2024-52533 libglib2.0-0
CVE-2024-52533 libglib2.0-bin
CVE-2024-52533 libglib2.0-data
CVE-2022-48340 libglusterfs0
CVE-2020-24027 libgroupsock8
CVE-2021-28899 libgroupsock8
CVE-2021-38380 libgroupsock8
CVE-2021-38381 libgroupsock8
CVE-2021-38382 libgroupsock8
CVE-2021-39282 libgroupsock8
CVE-2021-39283 libgroupsock8
CVE-2021-41396 libgroupsock8
CVE-2023-37117 libgroupsock8
CVE-2023-37328 libgstreamer-gl1.0-0
CVE-2024-4453 libgstreamer-gl1.0-0
CVE-2023-37328 libgstreamer-plugins-base1.0-0
CVE-2024-4453 libgstreamer-plugins-base1.0-0
CVE-2024-6655 libgtk2.0-0
CVE-2024-6655 libgtk2.0-bin
CVE-2024-6655 libgtk2.0-common
CVE-2023-25193 libharfbuzz-icu0
CVE-2023-25193 libharfbuzz-subset0
CVE-2023-25193 libharfbuzz0b
CVE-2022-47022 libhwloc-plugins
CVE-2022-47022 libhwloc15
CVE-2020-12695 libixml10
CVE-2020-13848 libixml10
CVE-2021-28302 libixml10
CVE-2021-29462 libixml10
CVE-2023-0645 libjxl0.7
CVE-2023-35790 libjxl0.7
CVE-2024-11403 libjxl0.7
CVE-2024-11498 libjxl0.7
CVE-2024-25262 libkpathsea6
CVE-2023-2953 libldap-2.5-0
CVE-2023-2953 libldap-common
CVE-2018-14628 libldb2
CVE-2020-24027 liblivemedia77
CVE-2021-28899 liblivemedia77
CVE-2021-38380 liblivemedia77
CVE-2021-38381 liblivemedia77
CVE-2021-38382 liblivemedia77
CVE-2021-39282 liblivemedia77
CVE-2021-39283 liblivemedia77
CVE-2021-41396 liblivemedia77
CVE-2023-37117 liblivemedia77
CVE-2024-7883 libllvm15
CVE-2024-23170 libmbedcrypto7
CVE-2024-23775 libmbedcrypto7
CVE-2024-28755 libmbedcrypto7
CVE-2024-28960 libmbedcrypto7
CVE-2023-5215 libnbd0
CVE-2024-7383 libnbd0
CVE-2023-50495 libncurses6
CVE-2023-50495 libncursesw6
CVE-2024-6501 libnm0
CVE-2023-5388 libnss3
CVE-2023-6135 libnss3
CVE-2024-31047 libopenexr-3-1-30
CVE-2019-6988 libopenjp2-7
CVE-2021-3575 libopenjp2-7
CVE-2023-39327 libopenjp2-7
CVE-2023-39328 libopenjp2-7
CVE-2023-39329 libopenjp2-7
CVE-2024-40897 liborc-0.4-0
CVE-2024-10041 libpam-chksshpwd
CVE-2024-10963 libpam-chksshpwd
CVE-2024-22365 libpam-chksshpwd
CVE-2024-10041 libpam-modules
CVE-2024-10963 libpam-modules
CVE-2024-22365 libpam-modules
CVE-2024-10041 libpam-modules-bin
CVE-2024-10963 libpam-modules-bin
CVE-2024-22365 libpam-modules-bin
CVE-2024-10041 libpam-runtime
CVE-2024-10963 libpam-runtime
CVE-2024-22365 libpam-runtime
CVE-2024-10041 libpam0g
CVE-2024-10963 libpam0g
CVE-2024-22365 libpam0g
CVE-2023-31484 libperl5.36
CVE-2016-2568 libpolkit-agent-1-0
CVE-2016-2568 libpolkit-gobject-1-0
CVE-2019-9543 libpoppler-cpp0v5
CVE-2019-9545 libpoppler-cpp0v5
CVE-2019-9543 libpoppler-glib8
CVE-2019-9545 libpoppler-glib8
CVE-2019-9543 libpoppler126
CVE-2019-9545 libpoppler126
CVE-2023-4016 libproc2-0
CVE-2024-7254 libprotobuf-lite32
CVE-2024-7254 libprotobuf32
CVE-2023-27043 libpython3.11
CVE-2024-11168 libpython3.11
CVE-2024-6923 libpython3.11
CVE-2024-7592 libpython3.11
CVE-2024-9287 libpython3.11
CVE-2023-27043 libpython3.11-dev
CVE-2024-11168 libpython3.11-dev
CVE-2024-6923 libpython3.11-dev
CVE-2024-7592 libpython3.11-dev
CVE-2024-9287 libpython3.11-dev
CVE-2023-27043 libpython3.11-minimal
CVE-2024-11168 libpython3.11-minimal
CVE-2024-6923 libpython3.11-minimal
CVE-2024-7592 libpython3.11-minimal
CVE-2024-9287 libpython3.11-minimal
CVE-2023-27043 libpython3.11-stdlib
CVE-2024-11168 libpython3.11-stdlib
CVE-2024-6923 libpython3.11-stdlib
CVE-2024-7592 libpython3.11-stdlib
CVE-2024-9287 libpython3.11-stdlib
CVE-2024-39936 libqt5core5a
CVE-2024-39936 libqt5dbus5
CVE-2024-39936 libqt5gui5
CVE-2024-39936 libqt5network5
CVE-2024-39936 libqt5printsupport5
CVE-2024-39936 libqt5sql5
CVE-2024-39936 libqt5sql5-sqlite
CVE-2024-39936 libqt5test5
CVE-2024-39936 libqt5widgets5
CVE-2024-39936 libqt5xml5
CVE-2023-35789 librabbitmq4
CVE-2023-43040 librados2
CVE-2023-43040 librbd1
CVE-2018-14628 libsmbclient
CVE-2022-33064 libsndfile1
CVE-2022-33065 libsndfile1
CVE-2024-50612 libsndfile1
CVE-2024-50613 libsndfile1
CVE-2024-52530 libsoup-3.0-0
CVE-2024-52531 libsoup-3.0-0
CVE-2024-52532 libsoup-3.0-0
CVE-2024-52530 libsoup-3.0-common
CVE-2024-52531 libsoup-3.0-common
CVE-2024-52532 libsoup-3.0-common
CVE-2024-52530 libsoup2.4-1
CVE-2024-52531 libsoup2.4-1
CVE-2024-52532 libsoup2.4-1
CVE-2024-52530 libsoup2.4-common
CVE-2024-52531 libsoup2.4-common
CVE-2024-52532 libsoup2.4-common
CVE-2024-0727 libssl3
CVE-2024-2511 libssl3
CVE-2024-4741 libssl3
CVE-2024-5535 libssl3
CVE-2024-9143 libssl3
CVE-2024-25262 libsynctex2
CVE-2023-25433 libtiff6
CVE-2023-26965 libtiff6
CVE-2023-26966 libtiff6
CVE-2023-2908 libtiff6
CVE-2023-3618 libtiff6
CVE-2023-52355 libtiff6
CVE-2023-52356 libtiff6
CVE-2023-6277 libtiff6
CVE-2024-7006 libtiff6
CVE-2023-50495 libtinfo6
CVE-2024-33655 libunbound8
CVE-2024-8508 libunbound8
CVE-2024-7883 libunwind-16
CVE-2020-12695 libupnp13
CVE-2020-13848 libupnp13
CVE-2021-28302 libupnp13
CVE-2021-29462 libupnp13
CVE-2020-24027 libusageenvironment3
CVE-2021-28899 libusageenvironment3
CVE-2021-38380 libusageenvironment3
CVE-2021-38381 libusageenvironment3
CVE-2021-38382 libusageenvironment3
CVE-2021-39282 libusageenvironment3
CVE-2021-39283 libusageenvironment3
CVE-2021-41396 libusageenvironment3
CVE-2023-37117 libusageenvironment3
CVE-2024-37535 libvte-2.91-0
CVE-2024-37535 libvte-2.91-common
CVE-2018-14628 libwbclient0
CVE-2023-39615 libxml2
CVE-2023-45322 libxml2
CVE-2024-25062 libxml2
CVE-2013-7445 linux-headers-6.6.51+rpt-common-rpi
CVE-2018-12928 linux-headers-6.6.51+rpt-common-rpi
CVE-2019-19449 linux-headers-6.6.51+rpt-common-rpi
CVE-2019-19814 linux-headers-6.6.51+rpt-common-rpi
CVE-2019-20794 linux-headers-6.6.51+rpt-common-rpi
CVE-2020-14304 linux-headers-6.6.51+rpt-common-rpi
CVE-2020-36694 linux-headers-6.6.51+rpt-common-rpi
CVE-2021-3847 linux-headers-6.6.51+rpt-common-rpi
CVE-2021-3864 linux-headers-6.6.51+rpt-common-rpi
CVE-2022-4543 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-0160 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-31082 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-3397 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-37454 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-4010 linux-headers-6.6.51+rpt-common-rpi
CVE-2023-6240 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-0564 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-21803 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-2193 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-22386 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-24864 linux-headers-6.6.51+rpt-common-rpi
CVE-2024-25740 linux-headers-6.6.51+rpt-common-rpi
CVE-2013-7445 linux-headers-6.6.51+rpt-rpi-2712
CVE-2018-12928 linux-headers-6.6.51+rpt-rpi-2712
CVE-2019-19449 linux-headers-6.6.51+rpt-rpi-2712
CVE-2019-19814 linux-headers-6.6.51+rpt-rpi-2712
CVE-2019-20794 linux-headers-6.6.51+rpt-rpi-2712
CVE-2020-14304 linux-headers-6.6.51+rpt-rpi-2712
CVE-2020-36694 linux-headers-6.6.51+rpt-rpi-2712
CVE-2021-3847 linux-headers-6.6.51+rpt-rpi-2712
CVE-2021-3864 linux-headers-6.6.51+rpt-rpi-2712
CVE-2022-4543 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-0160 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-31082 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-3397 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-37454 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-4010 linux-headers-6.6.51+rpt-rpi-2712
CVE-2023-6240 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-0564 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-21803 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-2193 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-22386 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-24864 linux-headers-6.6.51+rpt-rpi-2712
CVE-2024-25740 linux-headers-6.6.51+rpt-rpi-2712
CVE-2013-7445 linux-headers-6.6.51+rpt-rpi-v8
CVE-2018-12928 linux-headers-6.6.51+rpt-rpi-v8
CVE-2019-19449 linux-headers-6.6.51+rpt-rpi-v8
CVE-2019-19814 linux-headers-6.6.51+rpt-rpi-v8
CVE-2019-20794 linux-headers-6.6.51+rpt-rpi-v8
CVE-2020-14304 linux-headers-6.6.51+rpt-rpi-v8
CVE-2020-36694 linux-headers-6.6.51+rpt-rpi-v8
CVE-2021-3847 linux-headers-6.6.51+rpt-rpi-v8
CVE-2021-3864 linux-headers-6.6.51+rpt-rpi-v8
CVE-2022-4543 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-0160 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-31082 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-3397 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-37454 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-4010 linux-headers-6.6.51+rpt-rpi-v8
CVE-2023-6240 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-0564 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-21803 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-2193 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-22386 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-24864 linux-headers-6.6.51+rpt-rpi-v8
CVE-2024-25740 linux-headers-6.6.51+rpt-rpi-v8
CVE-2013-7445 linux-headers-rpi-2712
CVE-2018-12928 linux-headers-rpi-2712
CVE-2019-19449 linux-headers-rpi-2712
CVE-2019-19814 linux-headers-rpi-2712
CVE-2019-20794 linux-headers-rpi-2712
CVE-2020-14304 linux-headers-rpi-2712
CVE-2020-36694 linux-headers-rpi-2712
CVE-2021-3847 linux-headers-rpi-2712
CVE-2021-3864 linux-headers-rpi-2712
CVE-2022-4543 linux-headers-rpi-2712
CVE-2023-0160 linux-headers-rpi-2712
CVE-2023-31082 linux-headers-rpi-2712
CVE-2023-3397 linux-headers-rpi-2712
CVE-2023-37454 linux-headers-rpi-2712
CVE-2023-4010 linux-headers-rpi-2712
CVE-2023-6240 linux-headers-rpi-2712
CVE-2024-0564 linux-headers-rpi-2712
CVE-2024-21803 linux-headers-rpi-2712
CVE-2024-2193 linux-headers-rpi-2712
CVE-2024-22386 linux-headers-rpi-2712
CVE-2024-24864 linux-headers-rpi-2712
CVE-2024-25740 linux-headers-rpi-2712
CVE-2013-7445 linux-headers-rpi-v8
CVE-2018-12928 linux-headers-rpi-v8
CVE-2019-19449 linux-headers-rpi-v8
CVE-2019-19814 linux-headers-rpi-v8
CVE-2019-20794 linux-headers-rpi-v8
CVE-2020-14304 linux-headers-rpi-v8
CVE-2020-36694 linux-headers-rpi-v8
CVE-2021-3847 linux-headers-rpi-v8
CVE-2021-3864 linux-headers-rpi-v8
CVE-2022-4543 linux-headers-rpi-v8
CVE-2023-0160 linux-headers-rpi-v8
CVE-2023-31082 linux-headers-rpi-v8
CVE-2023-3397 linux-headers-rpi-v8
CVE-2023-37454 linux-headers-rpi-v8
CVE-2023-4010 linux-headers-rpi-v8
CVE-2023-6240 linux-headers-rpi-v8
CVE-2024-0564 linux-headers-rpi-v8
CVE-2024-21803 linux-headers-rpi-v8
CVE-2024-2193 linux-headers-rpi-v8
CVE-2024-22386 linux-headers-rpi-v8
CVE-2024-24864 linux-headers-rpi-v8
CVE-2024-25740 linux-headers-rpi-v8
CVE-2013-7445 linux-image-6.6.51+rpt-rpi-2712
CVE-2018-12928 linux-image-6.6.51+rpt-rpi-2712
CVE-2019-19449 linux-image-6.6.51+rpt-rpi-2712
CVE-2019-19814 linux-image-6.6.51+rpt-rpi-2712
CVE-2019-20794 linux-image-6.6.51+rpt-rpi-2712
CVE-2020-14304 linux-image-6.6.51+rpt-rpi-2712
CVE-2020-36694 linux-image-6.6.51+rpt-rpi-2712
CVE-2021-3847 linux-image-6.6.51+rpt-rpi-2712
CVE-2021-3864 linux-image-6.6.51+rpt-rpi-2712
CVE-2022-4543 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-0160 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-31082 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-3397 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-37454 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-4010 linux-image-6.6.51+rpt-rpi-2712
CVE-2023-6240 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-0564 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-21803 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-2193 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-22386 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-24864 linux-image-6.6.51+rpt-rpi-2712
CVE-2024-25740 linux-image-6.6.51+rpt-rpi-2712
CVE-2013-7445 linux-image-6.6.51+rpt-rpi-v8
CVE-2018-12928 linux-image-6.6.51+rpt-rpi-v8
CVE-2019-19449 linux-image-6.6.51+rpt-rpi-v8
CVE-2019-19814 linux-image-6.6.51+rpt-rpi-v8
CVE-2019-20794 linux-image-6.6.51+rpt-rpi-v8
CVE-2020-14304 linux-image-6.6.51+rpt-rpi-v8
CVE-2020-36694 linux-image-6.6.51+rpt-rpi-v8
CVE-2021-3847 linux-image-6.6.51+rpt-rpi-v8
CVE-2021-3864 linux-image-6.6.51+rpt-rpi-v8
CVE-2022-4543 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-0160 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-31082 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-3397 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-37454 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-4010 linux-image-6.6.51+rpt-rpi-v8
CVE-2023-6240 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-0564 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-21803 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-2193 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-22386 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-24864 linux-image-6.6.51+rpt-rpi-v8
CVE-2024-25740 linux-image-6.6.51+rpt-rpi-v8
CVE-2013-7445 linux-image-rpi-2712
CVE-2018-12928 linux-image-rpi-2712
CVE-2019-19449 linux-image-rpi-2712
CVE-2019-19814 linux-image-rpi-2712
CVE-2019-20794 linux-image-rpi-2712
CVE-2020-14304 linux-image-rpi-2712
CVE-2020-36694 linux-image-rpi-2712
CVE-2021-3847 linux-image-rpi-2712
CVE-2021-3864 linux-image-rpi-2712
CVE-2022-4543 linux-image-rpi-2712
CVE-2023-0160 linux-image-rpi-2712
CVE-2023-31082 linux-image-rpi-2712
CVE-2023-3397 linux-image-rpi-2712
CVE-2023-37454 linux-image-rpi-2712
CVE-2023-4010 linux-image-rpi-2712
CVE-2023-6240 linux-image-rpi-2712
CVE-2024-0564 linux-image-rpi-2712
CVE-2024-21803 linux-image-rpi-2712
CVE-2024-2193 linux-image-rpi-2712
CVE-2024-22386 linux-image-rpi-2712
CVE-2024-24864 linux-image-rpi-2712
CVE-2024-25740 linux-image-rpi-2712
CVE-2013-7445 linux-image-rpi-v8
CVE-2018-12928 linux-image-rpi-v8
CVE-2019-19449 linux-image-rpi-v8
CVE-2019-19814 linux-image-rpi-v8
CVE-2019-20794 linux-image-rpi-v8
CVE-2020-14304 linux-image-rpi-v8
CVE-2020-36694 linux-image-rpi-v8
CVE-2021-3847 linux-image-rpi-v8
CVE-2021-3864 linux-image-rpi-v8
CVE-2022-4543 linux-image-rpi-v8
CVE-2023-0160 linux-image-rpi-v8
CVE-2023-31082 linux-image-rpi-v8
CVE-2023-3397 linux-image-rpi-v8
CVE-2023-37454 linux-image-rpi-v8
CVE-2023-4010 linux-image-rpi-v8
CVE-2023-6240 linux-image-rpi-v8
CVE-2024-0564 linux-image-rpi-v8
CVE-2024-21803 linux-image-rpi-v8
CVE-2024-2193 linux-image-rpi-v8
CVE-2024-22386 linux-image-rpi-v8
CVE-2024-24864 linux-image-rpi-v8
CVE-2024-25740 linux-image-rpi-v8
CVE-2013-7445 linux-kbuild-6.6.51+rpt
CVE-2018-12928 linux-kbuild-6.6.51+rpt
CVE-2019-19449 linux-kbuild-6.6.51+rpt
CVE-2019-19814 linux-kbuild-6.6.51+rpt
CVE-2019-20794 linux-kbuild-6.6.51+rpt
CVE-2020-14304 linux-kbuild-6.6.51+rpt
CVE-2020-36694 linux-kbuild-6.6.51+rpt
CVE-2021-3847 linux-kbuild-6.6.51+rpt
CVE-2021-3864 linux-kbuild-6.6.51+rpt
CVE-2022-4543 linux-kbuild-6.6.51+rpt
CVE-2023-0160 linux-kbuild-6.6.51+rpt
CVE-2023-31082 linux-kbuild-6.6.51+rpt
CVE-2023-3397 linux-kbuild-6.6.51+rpt
CVE-2023-37454 linux-kbuild-6.6.51+rpt
CVE-2023-4010 linux-kbuild-6.6.51+rpt
CVE-2023-6240 linux-kbuild-6.6.51+rpt
CVE-2024-0564 linux-kbuild-6.6.51+rpt
CVE-2024-21803 linux-kbuild-6.6.51+rpt
CVE-2024-2193 linux-kbuild-6.6.51+rpt
CVE-2024-22386 linux-kbuild-6.6.51+rpt
CVE-2024-24864 linux-kbuild-6.6.51+rpt
CVE-2024-25740 linux-kbuild-6.6.51+rpt
CVE-2013-7445 linux-libc-dev
CVE-2018-12928 linux-libc-dev
CVE-2019-19449 linux-libc-dev
CVE-2019-19814 linux-libc-dev
CVE-2019-20794 linux-libc-dev
CVE-2020-14304 linux-libc-dev
CVE-2020-36694 linux-libc-dev
CVE-2021-3847 linux-libc-dev
CVE-2021-3864 linux-libc-dev
CVE-2022-4543 linux-libc-dev
CVE-2023-0160 linux-libc-dev
CVE-2023-31082 linux-libc-dev
CVE-2023-3397 linux-libc-dev
CVE-2023-37454 linux-libc-dev
CVE-2023-4010 linux-libc-dev
CVE-2023-6240 linux-libc-dev
CVE-2024-0564 linux-libc-dev
CVE-2024-21803 linux-libc-dev
CVE-2024-2193 linux-libc-dev
CVE-2024-22386 linux-libc-dev
CVE-2024-24864 linux-libc-dev
CVE-2024-25740 linux-libc-dev
CVE-2023-4806 locales
CVE-2024-2961 locales
CVE-2024-33599 locales
CVE-2024-33600 locales
CVE-2024-33601 locales
CVE-2024-33602 locales
CVE-2023-29383 login
CVE-2023-4641 login
CVE-2023-50495 ncurses-base
CVE-2023-50495 ncurses-bin
CVE-2023-50495 ncurses-term
CVE-2024-6501 network-manager
CVE-2024-0727 openssl
CVE-2024-2511 openssl
CVE-2024-4741 openssl
CVE-2024-5535 openssl
CVE-2024-9143 openssl
CVE-2023-52168 p7zip
CVE-2024-11612 p7zip
CVE-2023-52168 p7zip-full
CVE-2024-11612 p7zip-full
CVE-2023-29383 passwd
CVE-2023-4641 passwd
CVE-2023-31484 perl
CVE-2023-31484 perl-base
CVE-2023-31484 perl-modules-5.36
CVE-2016-2568 pkexec
CVE-2016-2568 policykit-1
CVE-2016-2568 polkitd
CVE-2016-2568 polkitd-pkla
CVE-2019-9543 poppler-utils
CVE-2019-9545 poppler-utils
CVE-2023-4016 procps
CVE-2023-50782 python3-cryptography
CVE-2024-22195 python3-jinja2
CVE-2024-34064 python3-jinja2
CVE-2023-5752 python3-pip
CVE-2023-5752 python3-pip-whl
CVE-2024-6345 python3-pkg-resources
CVE-2023-52323 python3-pycryptodome
CVE-2022-40896 python3-pygments
CVE-2023-32681 python3-requests
CVE-2024-35195 python3-requests
CVE-2024-6345 python3-setuptools
CVE-2024-6345 python3-setuptools-whl
CVE-2024-34062 python3-tqdm
CVE-2023-43804 python3-urllib3
CVE-2023-45803 python3-urllib3
CVE-2024-37891 python3-urllib3
CVE-2024-34069 python3-werkzeug
CVE-2024-5569 python3-zipp
CVE-2023-27043 python3.11
CVE-2024-11168 python3.11
CVE-2024-6923 python3.11
CVE-2024-7592 python3.11
CVE-2024-9287 python3.11
CVE-2023-27043 python3.11-dev
CVE-2024-11168 python3.11-dev
CVE-2024-6923 python3.11-dev
CVE-2024-7592 python3.11-dev
CVE-2024-9287 python3.11-dev
CVE-2023-27043 python3.11-minimal
CVE-2024-11168 python3.11-minimal
CVE-2024-6923 python3.11-minimal
CVE-2024-7592 python3.11-minimal
CVE-2024-9287 python3.11-minimal
CVE-2023-27043 python3.11-venv
CVE-2024-11168 python3.11-venv
CVE-2024-6923 python3.11-venv
CVE-2024-7592 python3.11-venv
CVE-2024-9287 python3.11-venv
CVE-2024-39936 qt5-gtk-platformtheme
CVE-2018-14628 samba-libs
CVE-2023-42465 sudo
CVE-2023-2610 vim-common
CVE-2023-4738 vim-common
CVE-2023-4752 vim-common
CVE-2023-4781 vim-common
CVE-2023-5344 vim-common
CVE-2024-22667 vim-common
CVE-2024-43802 vim-common
CVE-2024-47814 vim-common
CVE-2023-2610 vim-tiny
CVE-2023-4738 vim-tiny
CVE-2023-4752 vim-tiny
CVE-2023-4781 vim-tiny
CVE-2023-5344 vim-tiny
CVE-2024-22667 vim-tiny
CVE-2024-43802 vim-tiny
CVE-2024-47814 vim-tiny
CVE-2021-31879 wget
CVE-2024-10524 wget
CVE-2024-38428 wget
CVE-2020-27748 xdg-utils
CVE-2022-4055 xdg-utils
CVE-2023-5367 xserver-common
CVE-2023-5380 xserver-common
CVE-2023-5574 xserver-common
CVE-2023-6377 xserver-common
CVE-2023-6478 xserver-common
CVE-2023-6816 xserver-common
CVE-2024-0229 xserver-common
CVE-2024-0408 xserver-common
CVE-2024-0409 xserver-common
CVE-2024-21885 xserver-common
CVE-2024-21886 xserver-common
CVE-2024-31080 xserver-common
CVE-2024-31081 xserver-common
CVE-2024-31083 xserver-common
CVE-2024-9632 xserver-common
CVE-2023-5367 xserver-xorg-core
CVE-2023-5380 xserver-xorg-core
CVE-2023-5574 xserver-xorg-core
CVE-2023-6377 xserver-xorg-core
CVE-2023-6478 xserver-xorg-core
CVE-2023-6816 xserver-xorg-core
CVE-2024-0229 xserver-xorg-core
CVE-2024-0408 xserver-xorg-core
CVE-2024-0409 xserver-xorg-core
CVE-2024-21885 xserver-xorg-core
CVE-2024-21886 xserver-xorg-core
CVE-2024-31080 xserver-xorg-core
CVE-2024-31081 xserver-xorg-core
CVE-2024-31083 xserver-xorg-core
CVE-2024-9632 xserver-xorg-core
CVE-2023-5367 xwayland
CVE-2023-6377 xwayland
CVE-2023-6478 xwayland
CVE-2023-6816 xwayland
CVE-2024-0229 xwayland
CVE-2024-0408 xwayland
CVE-2024-0409 xwayland
CVE-2024-21885 xwayland
CVE-2024-21886 xwayland
CVE-2024-31080 xwayland
CVE-2024-31081 xwayland
CVE-2024-31083 xwayland
CVE-2024-9632 xwayland
CVE-2023-45853 zlib1g
CVE-2023-45853 zlib1g-dev

ユニークなCVEの報告数は230、報告数の多いパッケージTOP15は次のようになっていました。

# ユニークなCVEの報告数
pi@rasoberrypi:~ $ debsecan --suite bookworm --format simple  | awk '{print $1}' | sort | uniq -c | sort -nr |wc -l
230

# パッケージごとの脆弱性報告数 top15
pi@rasoberrypi:~ $ debsecan --suite bookworm --format simple | awk '{print $2}' | sort | uniq -c | sort -nr | awk '{print $2 " " $1}' | head -n 15
linux-libc-dev 22
linux-kbuild-6.6.51+rpt 22
linux-image-rpi-v8 22
linux-image-rpi-2712 22
linux-image-6.6.51+rpt-rpi-v8 22
linux-image-6.6.51+rpt-rpi-2712 22
linux-headers-rpi-v8 22
linux-headers-rpi-2712 22
linux-headers-6.6.51+rpt-rpi-v8 22
linux-headers-6.6.51+rpt-rpi-2712 22
linux-headers-6.6.51+rpt-common-rpi 22
xserver-xorg-core 15
xserver-common 15
firefox 14
xwayland 13

大量に出てしまうとどれから手をつけていいのかがわからなくなってしまいます。  CVEの1つ1つを深さ優先で情報を掘るといくら時間があっても終わらなくなってしまうので、幅優先で判断する情報を足してみます。

ちょうど個人の何も運用できていなかったawsアカウントがあるのでamazon inspectorのVulnerability database search の機能を利用します。

まずはinspectorの有効化します。EC2 インスタンスなどinspectorのチェック対象がいなければ、料金がかからないです。お財布に優しいですね。

料金 - Amazon Inspector | AWS

IAMユーザーを作成し、権限としてAmazonInspector2ReadOnlyAccessを与えておきます.

iamユーザーへ権限の付与

IAMユーザーにアクセスキーを発行し、aws cli コマンドが叩ける別環境から確認します。

aws inspector2 search-vulnerabilities --filter-criteria '{"vulnerabilityIds":["CVE-2023-38469"]}'
{
    "vulnerabilities": [
        {
            "atigData": {},
            "cvss3": {
                "baseScore": 5.5,
                "scoringVector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"
            },
            "cwes": [
                "CWE-617"
            ],
            "description": "A vulnerability was found in Avahi, where a reachable assertion exists in avahi_dns_packet_append_record.",
            "detectionPlatforms": [
                "ALPINE_LINUX_3_19",
                "ALPINE_LINUX_3_20",
                "AMAZON_LINUX_2023",
                "AMAZON_LINUX_2",
                "UBUNTU_14_04",
                "UBUNTU_23_04",
                "UBUNTU_18_04",
                "UBUNTU_20_04",
                "UBUNTU_22_04",
                "UBUNTU_16_04",
                "UBUNTU_23_10",
                "ALMALINUX_9",
                "ALMALINUX_8",
                "DEBIAN_SID",
                "OPEN_SUSE_15_6",
                "OPEN_SUSE_15_5",
                "SUSE_SERVER_12_5",
                "SUSE_SERVER_15_5",
                "SUSE_SERVER_15_6",
                "ROCKY_8",
                "WOLFI",
                "AMAZON_LINUX",
                "ORACLE_LINUX_8",
                "ORACLE_LINUX_9",
                "RHEL_8",
                "RHEL_9"
            ],
            "epss": {
                "score": 0.00043
            },
            "id": "CVE-2023-38469",
            "referenceUrls": [
                "https://access.redhat.com/security/cve/CVE-2023-38469",
                "https://bugzilla.redhat.com/show_bug.cgi?id=2191687"
            ],
            "relatedVulnerabilities": [],
            "source": "NVD",
            "sourceUrl": "https://nvd.nist.gov/vuln/detail/CVE-2023-38469",
            "vendorCreatedAt": "2023-11-03T00:15:08+09:00",
            "vendorSeverity": "MEDIUM",
            "vendorUpdatedAt": "2023-11-10T04:58:53+09:00"
        }
    ]
}

これでデータの抽出は簡単にできました。 cvss3やepssの情報を使うと脆弱性影響度や対応の優先度の指標になりますね。

少々時間がかかりますが、ユニークなCVEのリストから、順にコマンドを叩いてcsv形式で保存しておきます。

端末内部でのユニークなCVEのリスト取得

debsecan --suite bookworm --format simple  | awk '{print $1}' | sort | uniq > cve.list

解析用のshell gist.github.com

実行結果

$ ./cve2csv.sh
89 "UNKNOWN"
76 "MEDIUM"
52 "HIGH"
9 "CRITICAL"
3 "LOW"


$ head -n 3 ./cve_raspberry.csv
"CVE-2013-7445","HIGH",7.8,"AV:N/AC:L/Au:N/C:N/I:N/A:C",0.00149,"The Direct Rendering Manager (DRM) subsystem in the Linux kernel through 4.x mishandles requests for Graphics Execution Manager (GEM) objects, which allows context-dependent attackers to cause a denial of service (memory consumption) via an application that processes graphics data, as demonstrated by JavaScript code that creates many CANVAS elements for rendering by Chrome or Firefox.","https://nvd.nist.gov/vuln/detail/CVE-2013-7445","https://bugzilla.kernel.org/show_bug.cgi?id=60533"
"CVE-2016-2568","HIGH",7.8,"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H",0.00042,"pkexec, when used with --user nonpriv, allows local users to escape to the parent session via a crafted TIOCSTI ioctl call, which pushes characters to the terminal's input buffer.","https://nvd.nist.gov/vuln/detail/CVE-2016-2568","https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=816062,https://bugzilla.redhat.com/show_bug.cgi?id=1300746,https://access.redhat.com/security/cve/cve-2016-2568,https://ubuntu.com/security/CVE-2016-2568"
"CVE-2016-2781","MEDIUM",6.5,"CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N",0.00042,"chroot in GNU coreutils, when used with --userspec, allows local users to escape to the parent session via a crafted TIOCSTI ioctl call, which pushes characters to the terminal's input buffer.","https://nvd.nist.gov/vuln/detail/CVE-2016-2781","https://lists.apache.org/thread.html/rf9fa47ab66495c78bb4120b0754dd9531ca2ff0430f6685ac9b07772@<dev.mina.apache.org>"

CVEによっては、まだ脆弱性が見つかったばかりで詳細なデータが足りていないものもありますが、取得できたデータを使って分析してみます。

ChatGPTと戯れながら、分析する

GPTsを使ってみます

https://chatgpt.com/gptscveと検索すると似たようなGPTsはすでにいくつかありましたが、勉強のために自分でも作ってみました。

chatgpt.com

先ほど作ったcsvを読み込ませて幾つか質問していきます。

脆弱性の優先順位をGPTsに考えてもらう

ChatGPT - CVE優先順位決定

1人でない安心感と、1つずつ解決できそうな自信が出てきました。

対策してみる

脆弱性の数の多さで、気持ち的にやられてしまいそうになりましたが、GPTsがいればもう少しだけ対応を考えられそうです。 とはいえ、脆弱性の数を一気に減らせそうな取り組みを考えてみます。

不要なパッケージのアンインストール

debsecanで見つけらる脆弱性Debianパッケージのバージョン情報等に基づいています。未来に見つかる脆弱性も含め、パッケージが少ないことはそれだけで管理するものを減らせます。

特定のパッケージに依存するパッケージはapt-cacheコマンドで調べられます。 不要なものはアンインストールしたいです。しかし、パッケージが他のパッケージに依存されている場合など、このような手段が取れない場合も多いです。

今回の脆弱性リストにあるもののうち、ローカル環境にインストールされている他のパッケージからはどのパッケージからも依存されていないパッケージを調べます。

実行結果

chromium is not depended on by any installed package.
libqt5sql5-sqlite is not depended on by any installed package.
linux-headers-rpi-2712 is not depended on by any installed package.
linux-headers-rpi-v8 is not depended on by any installed package.
linux-image-rpi-2712 is not depended on by any installed package.
linux-image-rpi-v8 is not depended on by any installed package.
login is not depended on by any installed package.
ncurses-bin is not depended on by any installed package.
p7zip is not depended on by any installed package.

依存されないパッケージは 9/197 パッケージしか該当しませんでした。 大半は依存パッケージ込みで不要な機能をごっそり削ることになるので、今後新しいパッケージの脆弱性が見つかった場合もシンプルにパッケージの要否を見極めることは難しいかもしれません。

必要なパッケージのアップデート

現在更新できるaptパッケージについてみてみます。

apt update

update実行ログの最後の行を見ると40パッケージの更新を行うことができるように見えます。

~~~
Fetched 1,689 kB in 3s (635 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
40 packages can be upgraded. Run 'apt list --upgradable' to see them.

実際にアップデートしてから脆弱性の数を測ってみると...

pi@rasoberrypi:~ $ sudo apt upgrade
~~実行結果は省略~~
pi@rasoberrypi:~ $ debsecan --suite bookworm --format simple | awk '{print $2}' | sort | uniq | wc -l
201

230件から201件に少しだけ減りましたが、脆弱性が0になるわけではないです。 Debian用のパッケージサーバーなどに比べ、Raspberry Pi OS 向けのサーバーに更新が反映までに期間が開くことが多く、反映される頃にはDebian側のパッケージで新たな脆弱性が報告されているので数がなかなか減らないです。 より最新のパッケージがリリースされているDebian用のパッケージサーバーからのインストールは、全てのパッケージでRaspberry Piで動く保証はないため、問答無用でアップデートをすることは避けた方が良いです。

そして水際の対策と予防へ

先ほどのGPTsにも聞いてみましょう。

GPTsとの会話の抜粋

会話全体: ChatGPT - CVE優先順位決定

事前に設定を練ることで、いざ問題が起こった時の被害を減らすことができそうです。

まとめ

世の中の便利そうなツールを使って、Raspberry Pi OS の脆弱性を分析しました。 便利なツールを使う過程で自身の理解度をうまく上げ、興味を持ち続けながら脆弱性をコントロールできると幸せなのだと思います。


株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 photosynth.co.jp

Akerunにご興味のある方はこちらから akerun.com