Help us understand the problem. What is going on with this article?

Oracle Autonomous Linuxをハックする Part 2

前回の続き

前回から続いた内容なので、連続した段落番号をつけている。

4. Kspliceの設定を調べる

KspliceとはOracle Linuxで利用できるライブ・パッチング・システムだ。詳しくは以下のエントリーを読んでもらうとして、簡単に説明する。

通常アップデートしたLinuxカーネルを有効にするには、OSを再起動する必要がある。しかしKspliceを使用すると、再起動しなくてもアップデートを有効化できる。

Kspliceのおもなメリットは以下のとおり。またglibcとopensslを対象にした、ユーザー空間対応Kspliceモジュールもある。

  • ダウンタイム無しのパッチ適用/ロールバック
  • 迅速なセキュリティ脆弱性への対応

4-1. インストールされているKspliceモジュール

インストールされているKspliceモジュールを確認する。拡張クライアント(ksplice)とUptrackクライアント(uptrack)の両方がインストールされている。さらにglibc-2.17-292.0.1.ksplice1openssl-1.0.2k-19.0.1.ksplice1などのユーザー空間用パッケージもインストールされている。

# rpm -qa | grep -e ksplice -e uptrack | sort
glibc-2.17-292.0.1.ksplice1.el7.x86_64
glibc-common-2.17-292.0.1.ksplice1.el7.x86_64
ksplice-1.0.42-1.el7.x86_64
ksplice-core0-1.0.42-1.el7.x86_64
ksplice-helper-1.0.42-1.el7.x86_64
ksplice-known-exploit-detection-1.0.42-1.el7.x86_64
ksplice-release-el7-1.0-5.el7.x86_64
ksplice-tools-1.0.42-1.el7.x86_64
openssl-1.0.2k-19.0.1.ksplice1.el7.x86_64
openssl-libs-1.0.2k-19.0.1.ksplice1.el7.x86_64
uptrack-1.2.58-0.el7.noarch

4-2. Kspliceの設定ファイル

Kspliceの設定ファイルを確認する。autoinstall = noなので、自動適用しない設定になっている。

# grep -v -e '^\s*#' -e '^\s*$' /etc/uptrack/uptrack.conf
[Auth]
accesskey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(意図的に伏せ字)
[Network]
https_proxy =
gconf_proxy_lookup = no
update_repo_url=https://oraclecloud-updates-ksplice.oracle.com/update-repository
user_update_repo_url=https://oraclecloud-updates-ksplice.oracle.com/ksplice/request
[Settings]
install_on_reboot = yes
autoinstall = no ★この部分
[Known-Exploit-Detection]
enabled = yes

4-3. Kspliceの動作状況

Kspliceの動作状況を確認する。unameとuptrack-unameの結果が異なるので、Kspliceパッチが適用されている。

  • uname: 動作しているベースカーネルのバージョン
  • uptrack-uname: Kspliceパッチを提供した実効カーネルバージョン
# uname -r
4.14.35-1902.4.8.el7uek.x86_64
# uptrack-uname -r
4.14.35-1902.5.2.2.el7uek.x86_64

以下のコマンドを実行すると、適用済みパッチのリストが表示される。

# ksplice all show
100% |########################################################################|
Ksplice user-space updates:
No Ksplice user-space updates installed

Ksplice kernel updates:
Installed updates:
[lubjelbn] Known exploit detection.
[7zk0g4lf] Known exploit detection for CVE-2017-7308.
[zfuwlaff] Known exploit detection for CVE-2018-14634.
[pqqx26q0] Known exploit detection for CVE-2018-18445.
[28h7tx53] Kernel IO hang during directory entry cache shrinking.
[s3la2wa9] Use-after-free in Xen network backend receive path.
[r0cv90yp] SUNRPC failure during NFS secure unmounting.
[awwtw5mv] Memory leak when freeing NVMe subsystem.
[htah118n] NULL pointer dereference when using NVMe multipath with ANA deactivated.
[d8w38jxd] Multiple use-after-free in NVMe subsystem.
[oxqquizz] Improved fix for Spectre v1: Bounds check bypass in Vhost ioctl.
[6dd5x4cg] CVE-2019-14835: Privilege escalation during live migration of guest.
[plcrrmwl] KPTI enablement for Ksplice.
[j5cc6s5g] CVE-2019-14821: Denial-of-service in KVM MMIO coalesced writes.

Effective kernel version is 4.14.35-1902.5.2.2.el7uek

autoinstall = noで自動適用しない設定になっていることと一致しないが、この謎解きは今後の課題にする。

5. Oracle Autonomous Linuxとは何か?

ここまでの調査で大まかなことは分かった。「Oracle Autonomous Linux固有」と思われる機能は以下のとおり。Kspliceとyum-cronは通常のOracle Linuxでも利用できるが、デフォルトでは有効化されていない。

  1. Kspliceパッチが自動適用される
  2. RPMパッケージが自動アップデートされる(yum-cron)
  3. Oracle Autonomous Linux固有のサービスal-config.serviceが起動している

とはいえ、

Oracle Autonomous Linuxって、Kspliceやyum-cronがデフォルトで有効化されるだけ?

新機能として発表しても、実際には既存の手堅いテクノロジーを利用していることが多いOracle。それでもコンサバすぎるのでは?

stressやfioで負荷を掛けても反応無し。いったいNotificationsを設定した意味は?

などと考えつつ、インスタンスを起動したまま放置。

すると翌日Notifications経由でメールが送られてきた来た! イエーイ!

※2019/9/24以降のバージョン(al-config-1.0-1.0.29.el7)では、Notificationsをセットアップするとメールが送信される。

これがメールの文面。

+------------------------------------------------------------------------+
| Summary (Tue Oct 1 HH:MM:DD JST 2019)
| 
+------------------------------------------------------------------------+
Yum updates installed: no
Ksplice updates installed: no
Uptime: 15:46:07 up 20:42, 1 user,
load average: 0.00, 0.00, 0.00 
+------------------------------------------------------------------------+
| Ksplice upgrade report
| 
+------------------------------------------------------------------------+
Running 'ksplice -y all upgrade'. 
Updating on-disk packages for new processes 
Loaded plugins: langpacks, ulninfo 
No packages marked for update 
Nothing to do. 
Nothing to be done. 
Your kernel is fully up to date. 
Effective kernel version is 4.14.35-1902.5.2.2.el7uek 
+------------------------------------------------------------------------+
| Yum upgrade report 
|
+------------------------------------------------------------------------+
Running 'yum-cron' with update cmd: default. 
+------------------------------------------------------------------------+
| Ksplice updates status 
| 
+------------------------------------------------------------------------+
Running 'ksplice all show'. 
Ksplice user-space updates: 
No Ksplice user-space updates installed 

Ksplice kernel updates: 
Installed updates: 
[1rw4f14x] Known exploit detection. 
[eexuzyat] Known exploit detection for CVE-2017-7308. 
[bum1jlug] Known exploit detection for CVE-2018-14634. 
[p31wiydb] KPTI enablement for Ksplice. 
[oql5q0mj] Known exploit detection for CVE-2018-18445. 

Effective kernel version is 4.14.35-1902.5.2.2.el7uek 
+------------------------------------------------------------------------+
| Needs-restarting status 
|
+------------------------------------------------------------------------+
Running 'needs-restarting'. 
-------------------------------------------------------------------------- 
Running 'needs-restarting --services'. 
-------------------------------------------------------------------------- 
Running 'needs-restarting --reboothint'. No core libraries or services have been updated.
Reboot is probably not necessary.

書かれている内容は以下のとおり。来ないよりはいいが、正直物足りないような。まあAutonomous Databaseも徐々に進歩だからねぇ。

  • Kspliceによるアップデート情報
  • yum-cronによるアップデート情報
  • OS再起動の必要性の有無。needs-restartingは、インストールしたRPMパッケージから再起動の必要性を表示するツール

おわりに

次回は実際にスクリプトを調査して、より深い解析を試みる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした