組み込みLinuxで実行されているカスタムアプリケーション(Buildrootを使用して作成)があります。 grsecでカーネルをパッチし、linux-menuconfigでGRsecurityを有効にします。 Grsec関連のオプションが有効になっていません(コードの再利用を除く)。
コアダンプと競合してカーネルパニックを引き起こす限り、アプリケーションを除いてすべてがうまく機能します。
私はカーネルでGrsecurityを有効にせずに(しかしまだカーネルをパッチしている間)、同じアプリケーションを試しましたが、うまくいきました。
アプリケーションには、特別なデバイス(例:/ dev / mydev)と起動時に/ etc / rcファイルにロードされたモジュールを介したハードウェアアクセスが必要です。
私の考えでは、lsmodまたはmodinfoがモジュールを正しく表示していても、grsecがモジュールのロードをブロックまたは変更することがあります。
最も面倒なのは、カーネルパニックが原因でデバイスが再起動されるため、これに関する詳細情報を取得するのが難しいことです(メッセージの最後の行だけを読むことができます)。
エラーメッセージは次のとおりです。
worker_thread+0x58/0x490
process_one_work+0x3b0/0x3b0
kkthread_create_on_node+0x1b0/0x1b0
ツリーの外部モジュールを正しくロードできるようにカーネルで何かを設定する必要があるかどうかを知っていますか?
公式wikiを読んでみましたが、ほとんどRBACに関する内容であり、アプリケーションを実行してもRBACはアクティブになりません。
ベストアンサー1
難しいですが、まだ理解しようとしているのに問題の原因を見つけました。
したがって、カーネル構成にはデフォルトで有効になっている「コード再利用攻撃防止」オプションがあります。私はそれを無効にし、素晴らしい動作します。
私はまだそれが実際に何のために使用されているのかをよりよく理解しようとしていますが、共有ライブラリの使用方法を変更すると思います(おそらく)。
とにかく無効にすると問題が解決しました。だから私の問題は解決されたと思います。