これの続きを調べていた
SPRM からソースを展開して、問題のあるカーネルとそうでないカーネルとの diff を見ながら、関係がありそうな変更を削ったり/足したりしながら手元でビルドして試したころ、下記の変更によって起きる問題だと絞り込めた
diff -ru /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.el7/linux-3.10.0-862.el7.centos.x86_64/arch/x86/kernel/entry_64.S /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.2.3.el7/linux-3.10.0-862.2.3.el7.x8 6_64/arch/x86/kernel/entry_64.S --- /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.el7/linux-3.10.0-862.el7.centos.x86_64/arch/x86/kernel/entry_64.S 2018-03-21 21:40:12.000000000 +0000 +++ /home/vagrant/rpmbuild/BUILD/kernel-3.10.0-862.2.3.el7/linux-3.10.0-862.2.3.el7.x86_64/arch/x86/kernel/entry_64.S 2018-04-30 14:05:40.000000000 +0000 @@ -1400,7 +1400,7 @@ .pushsection .kprobes.text, "ax" paranoidzeroentry_ist debug do_debug DEBUG_STACK -paranoidzeroentry_ist int3 do_int3 DEBUG_STACK +zeroentry int3 do_int3 errorentry stack_segment do_stack_segment #ifdef CONFIG_XEN zeroentry xen_debug do_debug
上記の変更を取り除くと、SIGSEGV は治まった.
該当のコミットを %changelog で調べる
https://git.centos.org/summary/rpms!kernel.git を git clone して imports/c7/kernel-3.10.0-862.2.3.el ブランチの SPECS/kernel.spec を見て見るに下記の変更っぽい
%changelog * Mon Apr 30 2018 Rado Vrbovsky <rvrbovsk@redhat.com> [3.10.0-862.2.3.el7] - [x86] kvm: fix icebp instruction handling (Paolo Bonzini) [1566849 1566845] {CVE-2018-1087} - [x86] entry/64: Don't use IST entry for #BP stack (Paolo Bonzini) [1567084 1567083] {CVE-2018-8897} 👈
(CentOS で spec ファイルの %changelog と diff を付き合わせるよい方法がわからない)
upstream のコミットを調べる
もともと upstrem には下記のコミットでマージされたようだ.
自分が見ていたコードとはだいぶ違う. バックポートの際に変更が加わっているのだろう
どういう意図の変更なのか
CVE-2018-8897 の fix である
- CVE-2018-8897 - Red Hat Customer Portal
- JVNVU#98401336: Intel ハードウェアアーキテクチャのデバッグ例外を適切に処理していない問題
- 例外的な状況に対する不適切なチェックまたは処理 (CWE-703)
コードを追って見たものの、どうやって不具合に至るのかという詳細まではよく分からない 🙃
その他
/sys/kernel/debug/tracing
がぶっこわれているということで、 似たような問題が下記で議論されたり パッチが revert されていた
- 845572 - /sys/kernel/debug/tracing is broken for 3.18 (at least) - chromium - Monorail
- https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1069421
bugs.centos.org にどうやってレポートするといいか考えている