CLIツール
bcoles/kasld avatar
bcoles/kasld

KASLD: ローカルプロセスからカーネルの仮想・物理メモリレイアウトを絞り込む

KASLD は、その利点、特権、構成、制限が許す限り、Linux カーネルの仮想および物理メモリ レイアウトをローカル プロセスから非ランダム化します。

スター 546フォーク 56CMIT
GitHub

ひと目でわかる

これは何?
KASLD は C で書かれたツールで、多数のリークおよびサイドチャネル技術の証拠を統合し、Linux カーネルのテキストベースを報告します。残る探索空間はスロット数とエントロピービットで示されます。
誰に向いている?
KASLD は MIT ライセンスで提供され、README は部分結果の正確な意味について docs/limitations.md を参照しています。リポジトリ自体は、報告された残存ウィンドウ以外のセキュリティ保証を主張していません。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に C です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

KASLD が復元するもの

KASLD は、ローカルプロセスから Linux カーネルの仮想・物理メモリレイアウトを復元します。主に対象となるのはカーネルのテキストベースです。推論エンジンは、数十の独立した技術からの証拠と、アーキテクチャの既知の不変条件を組み合わせます。結果は残存配置ウィンドウとして報告され、生存スロット数とエントロピービットで示されます。README は、これはそのプロセスの視点から KASLR が保持する保護の上限であり、ベースが到達不能であるという保証ではないと述べています。完全にパッチされた最新カーネルでは完全な復元はしばしば不可能ですが、制約集合が空になることはまれです。

対応アーキテクチャとビルド要件

対応ターゲットは、x86(i386+ と amd64)、ARM(armv6、armv7、armv8、aarch64)、MIPS(mipsbe、mipsel、mips64el)、PowerPC(ppc、ppc64)、RISC-V(riscv32、riscv64)、LoongArch(loongarch64)、s390 です。ビルドには _GNU_SOURCE マクロをサポートするコンパイラが必要です。コードが MAP_ANONYMOUS、getline()、popen() などの非可搬なインターフェースを使うためです。README のクイックスタートは Debian 系パッケージを想定しています: libc-dev、make、gcc、binutils、git。クローンして make を実行すると、build/<arch>/kasld バイナリは自己完結しており、ターゲットシステムに展開できます。

KASLD の実行

ドキュメントに記載されたクイックスタートは次のとおりです: `sudo apt install libc-dev make gcc binutils git`、次に `git clone https://github.com/bcoles/kasld`、`cd kasld`、`make`、`./build/<arch>/kasld`。ビルドディレクトリにはバイナリと components/ フォルダがあり、リークコンポーネントが含まれます。KASLD はデフォルトで少数の権限を想定し、実行中プロセスの視点が与えるものを機会主義的に利用します。KASLR がないアーキテクチャでは、エンジンはブートローダが選択したロードアドレスを特定します。

出力モード

デフォルトのテキストモードは、回答を先に示す概要を出力します: ターゲット、実行されたコンポーネント数、仮想イメージベース、物理イメージベース、ダイレクトマップベースとその探索空間の表です。`-v` は詳細なコンポーネント別ログ、システム設定、KASLR 分析、メモリマップを追加します。`-j` は完全な構造化ビューとハードニング評価を含む機械可読 JSON を出力します。`-1` は単一行のパイプ可能出力、`-m` はイシュートラッカー向けの整形、`-H` はハードニング評価をテキストまたは Markdown レポートに追加します。README は完全な CLI と explain モードについて docs/usage.md を参照しています。

視点モデル

KASLD が何を復元できるかは、3 つの独立した軸に依存します: 権限・グループ・ケーパビリティ、kptr_restrict、dmesg_restrict、perf_event_paranoid、非特権 BPF、カーネルロックダウンなどのシステム設定、そして名前空間や seccomp による隔離です。各軸はリークソースを独立に制御するため、より多くの権限がより少ない権限のスーパーセットであるとは限りません。たとえば、CAP_SYS_RAWIO を持つコンテナは /proc/kcore を読めますが、root でも kptr_restrict=2 の下では /proc/kallsyms を読めません。詳細出力と JSON 出力は、検出された視点、つまりコンテナ、隔離、読み取り可能なオラクル、現在のケーパビリティから到達可能なケーパビリティで制御されたリークを報告します。

ドキュメント、制限、ライセンス

リポジトリのドキュメント索引は、KASLR 入門、使用方法、結果の解釈、バイパス技術、悪用、フットプリントと検出、アーキテクチャ、貢献、テスト、再現性をカバーしています。README は、否定的または部分的な結果の意味について docs/limitations.md を参照し、結果を sound-but-not-complete と説明していますが、その文書の詳細は再掲していません。KASLD は MIT ライセンスです。一部のリークコンポーネントは第三者による概念実証コードを適応しています。各ファイルはヘッダで出典を明記し、THIRD-PARTY-NOTICES.md は各項目のライセンスまたは再利用根拠を列挙しています。MIT ライセンスのテキストは、使用、複製、変更、統合、公開、配布、再ライセンス、販売の権利を許諾し、ソフトウェアは保証なしで現状有姿で提供されると述べています。

KASLD はローカルプロセスから見える情報を使う調査用ツールで、結果はプロセスの権限、設定、隔離状態、CPU アーキテクチャに依存します。ビルド後は README の実行例を対象の Linux カーネル上で走らせ、出力されたテキストベース、残存スロット数、エントロピービットを記録します。部分結果の意味は docs/limitations.md に委ねられているため、残る候補範囲を完全なアドレスの証明と解釈しないでください。x86_64 と arm64 で同じ結果になる根拠は資料にないので、対象構成ごとに確認します。権限を変えた二つのプロセスから同じ測定を行えば、ツールが見えている vantage の差を記録できます。出力の数字だけを比較せず、カーネル構成、隔離条件、実行ユーザーを同じ記録に残す必要があります。KASLD の価値はアドレスを断定することではなく、残る探索空間をどこまで狭めたかを可視化する点にあります。

docs/limitations.mdが示す結果の読み方

KASLD の README は、推論エンジンが残した窓を surviving slot count と bits of entropy として報告し、それはこの視点から見た KASLR の上限であって、基点が攻撃者の手の届かない場所にある保証ではないと docs/limitations.md へ送っています。完全にパッチされた現行カーネルでは、x86-64 のサイドチャネルが緩和され直接の kernel-text リークが残らない場合、完全復元はしばしば不可能だが制約集合は空になりにくい、と README は書いています。KASLR のないアーキテクチャでは、ブートローダが選んだロードアドレスを探す、ともあります。

テスト用に extra/weaken-kernel-hardening が kernel.dmesg_restrict、kernel.kptr_restrict、kernel.perf_event_paranoid、kernel.unprivileged_bpf_disabled を一時的に緩める脚本を提供しますが、root が必要です。検出面は docs/footprint.md が、監視下ホストでの振る舞いと OPSEC コストを扱い、loud by design と明記しています。CLI の全体は docs/usage.md、既定は ./build/<arch>/kasld、詳細は -v、-j、-1、-m、-H、-x です。README 取得時点のタグは v0.3.0、v0.2.0、v0.1.1、ライセンスは MIT です。make 後の build/<arch>/ 一式を対象機へコピーして実行する、というのが README の配備手順です。

編集部の結論

KASLD は MIT ライセンスで提供され、README は部分結果の正確な意味について docs/limitations.md を参照しています。リポジトリ自体は、報告された残存ウィンドウ以外のセキュリティ保証を主張していません。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート