EBUG勉強会/20241130_河豚板のIBT対応
をテンプレートにして作成
Start:
#topicpath
*河豚板のIBT対応 [#te955453]
RIGHT:EBUG 第91回会合 2024年11月30日 ~
川俣吉広、kaw@on.rim.or.jp
**概要 [#a554226a]
河豚板にて同様の不具合が複数報告されたことにより調査・対...
-amd64プラットフォーム版の河豚板{7.5,7.6-current,7.6}にて...
-起動時、カーネルのdmesgが出力し終わり、/boottmp/rcが実行...
-"Process (pid 1) got a signal 4"が繰り返し表示され、起動...
**経過 [#wbc378d4]
|9月22日 (日) |karl | ''初の報告'' (on Hyper-V) |
| |kaw | 現象を分析、initがsignal 4 (SIGILL...
|10月20日 (日)| | ''[[FuguIta/Report/19]] にて同様の...
| |masakazu,kaw|コンパイラのCPUインストラクシ...
|||(河豚板7.6リリース)|
|10月21日 (月)|kaw |PIEが関連しているか検討|
| |kaw,karl|pie:PIEな版→現象かわらず|
|10月23日 (水)|kaw,karl|rvmk:ビルドツールの改修版→現象か...
|10月24日 (木)|kaw,karl|init: /boottmp/initを独立した実行...
|||''新たに報告あり。[[FuguIta/Report/23]]'' - 12th Gen I...
| |karl |クランチバイナリの問題?''12世代...
|10月25日 (金)|paina |''12900K 実機によるテスト''→現象...
| |kaw,karl|tst4:クランチバイナリ生成部を現行...
|10月27日 (日)|kaw,karl|tst5: crunchgen廻りをよりOpenBSD...
| |kaw,karl|tst6: *.[do]の消し忘れがあったの...
|10月28日 (月)|kaw,karl|nocb: クランチバイナリを使用しな...
| |kaw |本件についてfuguita.orgの掲示版で...
| |karl |''[[arm64で関連する可能性のある事...
| |nork |''[[コンパイル時のリンカーオプシ...
|10月29日 (火)|karl |LDFLAGS+=$(NOPIE_LDFLAGS) -z nobt...
| |kaw |IBT対応は[[OpenBSD Journal>https:...
| |kaw |cts2: LDFLAGS+=-Wl,-z,nobitcfiで...
|10月30日 (水)|karl |再度処理が走るのでshell自身がcore...
| |kaw |シェル変数が未代入、sysctlとかswa...
|10月31日 (木)|kaw,karl|cts4: クランチバイナリを /usr/src...
| |karl |/boottmp/init?がIBTで保護されて...
|11月1日 (金) |karl |現象の整理|
| |kaw |/usr/ports に、Makefileで USE_NOB...
|11月2日 (土) |kaw,karl|cts7:OpenBSDでの instbin ビルドを...
| |kaw,karl|cts8: build-repl.sh で作成。中身...
| |kaw,karl|Jitsiにてミーティング|
| |kaw |cts9: /boottmp/rc の冒頭に set -x...
| |karl |HYPER-V上では、cpuid 7.0の所にedx...
| |kaw |コアダンプしているのは''クランチ...
| |karl |$swpmem=NULLとなり、NULLを参照し...
| |kaw |parsesize はシェル関数なので、NUL...
|11月3日 (日) |kaw |検索: [[脆弱性緩和技術の最前線 - ...
| |kaw |ctsa: makeconf.awkのlibs行の生成...
| |karl |wd0bが存在する状態でもスワップ容...
| |kaw |ctsb: ctsa から 2>/dev/null をは...
| |kaw,karl|ctsc: set -v を追加, swpmemを設定...
| |karl |シェルコマンド置換の部分で、評価...
| |kaw |パラメータのコマンド実行置換(=サ...
| |karl |カーネル内で、''option SMALL_KERN...
| |kaw,karl|ネストしたシェル呼出しのサンプル...
| |kaw |ctsd: bootbinにノーマルなkshを入...
| |kaw,karl|ctse: ramdisk root容量増、NKPTP変...
|11月5日 (火) |kaw |実機を手配|
|11月6日 (水) |karl |自前buildで検証→IBT環境でcrunch ...
|11月7日 (木) |kaw |crunchgenが不正な分岐命令を生成し...
| |kaw |実機到着・テスト実施|
|11月8日 (金) |kaw |テストシェルスクリプト(クランチバ...
| |kaw |ctsf: /boottmp/bootbinに-z nobtcf...
| |karl |同様に、''正常起動を確認''|
| |kaw |[[FuguIta/Report/19]]、[[FuguIta/...
| |kaw |''FuguIta-7.6-amd64-202411081を対...
|11月9日 (土) |kaw |i386カーネルが動作せず→NKPTP変更...
**要約 [#e12409d8]
-当初はHyper-V固有の問題と認識
-実機での報告が複数寄せられたことから、本格的に対応を開始
-エラーメッセージから、発生箇所はクランチバイナリである/b...
-コンパイラが生成するCPUのインストラクションセットの可能...
-PIEが関係しているか検討
-12世代以降のCPUでのP/Eコア構成が絡んでいるか検討
-CFI(Control Flow Integrity)機能を持つCPU(amd64: IBT, arm...
→CFIに関するリンカオプション(-z nobitcfi)を発見
-OpenBSD 7.4以降でCFIに対応したことが判明
-IBT無効としたクランチバイナリをビルド~
→当初のメッセージは出なくなるが、一部でコアダンプ~
→コアダンプしたコマンドを調査
-OpenBSDのインストーラでは、option SMALL_KERNELによりIBT...
-テストスクリプトを作成、実機にて調査~
→クランチバイナリのshでは、IBT無効でビルドしても、このsh...
-shのみ個別のバイナリとしてビルド → 対応版をリリース
**まとめ [#i99fc495]
-EBUGで複数のメンバーがコラボレーションして成果を出した初...
--参加者各位様、ありがとうございました。
-この事象はOpenBSD 7.4のリリース以降が該当しており、事実...
--複数の報告が寄せられたのは、河豚板7.6リリースの直前 → ...
-このようなケースではOpenBSD本体との連携をどのように考え...
//--派生プロジェクトに対するOpenBSDプロジェクトの姿勢を見...
--派生プロジェクトに対するOpenBSDプロジェクトの姿勢を見つ...
----
#topicpath
End:
#topicpath
*河豚板のIBT対応 [#te955453]
RIGHT:EBUG 第91回会合 2024年11月30日 ~
川俣吉広、kaw@on.rim.or.jp
**概要 [#a554226a]
河豚板にて同様の不具合が複数報告されたことにより調査・対...
-amd64プラットフォーム版の河豚板{7.5,7.6-current,7.6}にて...
-起動時、カーネルのdmesgが出力し終わり、/boottmp/rcが実行...
-"Process (pid 1) got a signal 4"が繰り返し表示され、起動...
**経過 [#wbc378d4]
|9月22日 (日) |karl | ''初の報告'' (on Hyper-V) |
| |kaw | 現象を分析、initがsignal 4 (SIGILL...
|10月20日 (日)| | ''[[FuguIta/Report/19]] にて同様の...
| |masakazu,kaw|コンパイラのCPUインストラクシ...
|||(河豚板7.6リリース)|
|10月21日 (月)|kaw |PIEが関連しているか検討|
| |kaw,karl|pie:PIEな版→現象かわらず|
|10月23日 (水)|kaw,karl|rvmk:ビルドツールの改修版→現象か...
|10月24日 (木)|kaw,karl|init: /boottmp/initを独立した実行...
|||''新たに報告あり。[[FuguIta/Report/23]]'' - 12th Gen I...
| |karl |クランチバイナリの問題?''12世代...
|10月25日 (金)|paina |''12900K 実機によるテスト''→現象...
| |kaw,karl|tst4:クランチバイナリ生成部を現行...
|10月27日 (日)|kaw,karl|tst5: crunchgen廻りをよりOpenBSD...
| |kaw,karl|tst6: *.[do]の消し忘れがあったの...
|10月28日 (月)|kaw,karl|nocb: クランチバイナリを使用しな...
| |kaw |本件についてfuguita.orgの掲示版で...
| |karl |''[[arm64で関連する可能性のある事...
| |nork |''[[コンパイル時のリンカーオプシ...
|10月29日 (火)|karl |LDFLAGS+=$(NOPIE_LDFLAGS) -z nobt...
| |kaw |IBT対応は[[OpenBSD Journal>https:...
| |kaw |cts2: LDFLAGS+=-Wl,-z,nobitcfiで...
|10月30日 (水)|karl |再度処理が走るのでshell自身がcore...
| |kaw |シェル変数が未代入、sysctlとかswa...
|10月31日 (木)|kaw,karl|cts4: クランチバイナリを /usr/src...
| |karl |/boottmp/init?がIBTで保護されて...
|11月1日 (金) |karl |現象の整理|
| |kaw |/usr/ports に、Makefileで USE_NOB...
|11月2日 (土) |kaw,karl|cts7:OpenBSDでの instbin ビルドを...
| |kaw,karl|cts8: build-repl.sh で作成。中身...
| |kaw,karl|Jitsiにてミーティング|
| |kaw |cts9: /boottmp/rc の冒頭に set -x...
| |karl |HYPER-V上では、cpuid 7.0の所にedx...
| |kaw |コアダンプしているのは''クランチ...
| |karl |$swpmem=NULLとなり、NULLを参照し...
| |kaw |parsesize はシェル関数なので、NUL...
|11月3日 (日) |kaw |検索: [[脆弱性緩和技術の最前線 - ...
| |kaw |ctsa: makeconf.awkのlibs行の生成...
| |karl |wd0bが存在する状態でもスワップ容...
| |kaw |ctsb: ctsa から 2>/dev/null をは...
| |kaw,karl|ctsc: set -v を追加, swpmemを設定...
| |karl |シェルコマンド置換の部分で、評価...
| |kaw |パラメータのコマンド実行置換(=サ...
| |karl |カーネル内で、''option SMALL_KERN...
| |kaw,karl|ネストしたシェル呼出しのサンプル...
| |kaw |ctsd: bootbinにノーマルなkshを入...
| |kaw,karl|ctse: ramdisk root容量増、NKPTP変...
|11月5日 (火) |kaw |実機を手配|
|11月6日 (水) |karl |自前buildで検証→IBT環境でcrunch ...
|11月7日 (木) |kaw |crunchgenが不正な分岐命令を生成し...
| |kaw |実機到着・テスト実施|
|11月8日 (金) |kaw |テストシェルスクリプト(クランチバ...
| |kaw |ctsf: /boottmp/bootbinに-z nobtcf...
| |karl |同様に、''正常起動を確認''|
| |kaw |[[FuguIta/Report/19]]、[[FuguIta/...
| |kaw |''FuguIta-7.6-amd64-202411081を対...
|11月9日 (土) |kaw |i386カーネルが動作せず→NKPTP変更...
**要約 [#e12409d8]
-当初はHyper-V固有の問題と認識
-実機での報告が複数寄せられたことから、本格的に対応を開始
-エラーメッセージから、発生箇所はクランチバイナリである/b...
-コンパイラが生成するCPUのインストラクションセットの可能...
-PIEが関係しているか検討
-12世代以降のCPUでのP/Eコア構成が絡んでいるか検討
-CFI(Control Flow Integrity)機能を持つCPU(amd64: IBT, arm...
→CFIに関するリンカオプション(-z nobitcfi)を発見
-OpenBSD 7.4以降でCFIに対応したことが判明
-IBT無効としたクランチバイナリをビルド~
→当初のメッセージは出なくなるが、一部でコアダンプ~
→コアダンプしたコマンドを調査
-OpenBSDのインストーラでは、option SMALL_KERNELによりIBT...
-テストスクリプトを作成、実機にて調査~
→クランチバイナリのshでは、IBT無効でビルドしても、このsh...
-shのみ個別のバイナリとしてビルド → 対応版をリリース
**まとめ [#i99fc495]
-EBUGで複数のメンバーがコラボレーションして成果を出した初...
--参加者各位様、ありがとうございました。
-この事象はOpenBSD 7.4のリリース以降が該当しており、事実...
--複数の報告が寄せられたのは、河豚板7.6リリースの直前 → ...
-このようなケースではOpenBSD本体との連携をどのように考え...
//--派生プロジェクトに対するOpenBSDプロジェクトの姿勢を見...
--派生プロジェクトに対するOpenBSDプロジェクトの姿勢を見つ...
----
#topicpath
Page: