
Linuxカーネルの特権昇格エクスプロイトへの露出を監査し、ヒューリスティック分析と設定/sysctlチェックを使用してカーネル強化セキュリティ対策を検証します。
クイックダウンロード:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
LES の使用方法と内部動作の詳細:
https://blog.z-labs.eu/2019/05/10/les-paper.html
LES の追加リソース:
https://github.com/mzet-/les-res
| 名前 | CVE | LES 対応 | 検証済み環境 | 参照 |
|---|---|---|---|---|
| CopyFail | CVE-2026-31431 | 未対応 | - | https://copy.fail/ |
| DirtyFrag | CVE-2026-43284 | 未対応 | - | https://www.openwall.com/lists/oss-security/2026/05/07/8 |
| DirtyAH6 | 未対応 | - | https://heyitsas.im/posts/lpe-quartet/ | |
| PPPoEject | 未対応 | - | https://heyitsas.im/posts/lpe-quartet/ | |
| TUNderflow | 未対応 | - | https://heyitsas.im/posts/lpe-quartet/ | |
| DiagSpill | 未対応 | - | https://heyitsas.im/posts/lpe-quartet/ | |
| OVSwrap | 未対応 | - | https://heyitsas.im/posts/ovswrap/ | |
| CIFSwith | 未対応 | - | https://heyitsas.im/posts/cifswitch/ | |
| RefluXFS | 未対応 | - | URL | |
| vsockpwn | CVE-2025-21756 | 未対応 | - | https://hoefler.dev/articles/vsock.html |
| CrackArmor | multiple | 未対応 | - | URL |
| needrestart | multiple | 未対応 | - | https://www.qualys.com/2024/11/19/needrestart/needrestart.txt |
| StackRot | CVE-2023-3269 | 未対応 | - | https://www.openwall.com/lists/oss-security/2023/07/28/1 |
LES ツールは、特定の Linux カーネル/Linux ベースのマシンにおけるセキュリティ上の欠陥の検出を支援するために設計されています。以下の機能を提供します:
本ツールは、特定の Linux システムが公開されている Linux 権限昇格エクスプロイトに対してどの程度露出しているかを評価します(詳細はこちらで議論されているヒューリスティック手法を使用)。ツール出力の例:
$ ./linux-exploit-suggester.sh
...
[+] [CVE-2017-16995] eBPF_verifier
Details: https://ricklarabee.blogspot.com/2018/07/ebpf-and-analysis-of-get-rekt-linux.html
Exposure: highly probable
Tags: debian=9.0{kernel:4.9.0-3-amd64},fedora=25|26|27,[ ubuntu=14.04 ]{kernel:4.4.0-89-generic},ubuntu=(16.04|17.04){kernel:4.(8|10).0-(19|28|45)-generic}
Download URL: https://www.exploit-db.com/download/45010
Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1
[+] [CVE-2017-1000112] NETIF_F_UFO
Details: http://www.openwall.com/lists/oss-security/2017/08/13/1
Exposure: probable
Tags: [ ubuntu=14.04{kernel:4.4.0-*} ],ubuntu=16.04{kernel:4.8.0-*}
Download URL: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c
ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/cve-2017-1000112/CVE-2017-1000112/poc.c
Comments: CAP_NET_ADMIN cap or CONFIG_USER_NS=y needed. SMEP/KASLR bypass included. Modified version at 'ext-url' adds support for additional distros/kernels
[+] [CVE-2016-8655] chocobo_root
Details: http://www.openwall.com/lists/oss-security/2016/12/06/1
Exposure: probable
Tags: [ ubuntu=(14.04|16.04){kernel:4.4.0-(21|22|24|28|31|34|36|38|42|43|45|47|51)-generic} ]
Download URL: https://www.exploit-db.com/download/40871
Comments: CAP_NET_RAW capability is needed OR CONFIG_USER_NS=y needs to be enabled
...
各エクスプロイトについて、露出度が算出されます。以下の「露出度」状態が存在します:
Highly probable - 対象カーネルが影響を受けている可能性が最も高く、PoCエクスプロイトが大きな改変なしにそのまま動作する可能性が非常に高い状態です。
Probable - エクスプロイトが動作する可能性はありますが、対象に適合させるためにPoCエクスプロイトのカスタマイズが必要となる可能性が高い状態です。
Less probable - カーネルが影響を受けているかどうかを確認するために、追加の手動分析が必要な状態です。
Unprobable - カーネルが影響を受けている可能性が極めて低い状態です(エクスプロイトはツールの出力に表示されません)。
LESは、Linuxカーネルで利用可能なほとんどのセキュリティ設定をチェックできます。カーネルのコンパイル時設定(CONFIG)だけでなく、実行時設定(sysctl)も検証し、稼働中のカーネルのセキュリティ態勢についてより完全な全体像を提供します。この機能は、Tobias Kleinによるchecksec.shツールの--kernelスイッチの現代的な後継として位置づけられています。ツール出力の例:
$ ./linux-exploit-suggester.sh --checksec
Mainline kernel protection mechanisms:
[ Disabled ] GCC stack protector support (CONFIG_HAVE_STACKPROTECTOR)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-regular.md
[ Disabled ] GCC stack protector STRONG support (CONFIG_STACKPROTECTOR_STRONG)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-strong.md
[ Enabled ] Low address space to protect from user allocation (CONFIG_DEFAULT_MMAP_MIN_ADDR)
https://github.com/mzet-/les-res/blob/master/features/mmap_min_addr.md
[ Disabled ] Restrict unprivileged access to kernel syslog (CONFIG_SECURITY_DMESG_RESTRICT)
https://github.com/mzet-/les-res/blob/master/features/dmesg_restrict.md
[ Enabled ] Randomize the address of the kernel image (KASLR) (CONFIG_RANDOMIZE_BASE)
https://github.com/mzet-/les-res/blob/master/features/kaslr.md
[ Disabled ] Hardened user copy support (CONFIG_HARDENED_USERCOPY)
https://github.com/mzet-/les-res/blob/master/features/hardened_usercopy.md
...
Linux マシンの公開されている既知のエクスプロイトへの露出を評価します:
$ ./linux-exploit-suggester.sh
Linux マシン上のセキュリティ機能の状態を表示します:
$ ./linux-exploit-suggester.sh --checksec
提供された 'uname' 文字列(つまり uname -a コマンドの出力)に基づいて、Linux カーネルの公開されている既知のエクスプロイトに対する露出を評価します:
$ ./linux-exploit-suggester.sh --uname <uname-string>
その他の使用例については、こちらを参照してください。
LES とは何か、LES があなたのために何ができるかをご理解いただけたと思います。次に、あなたが LES のために何ができるかを見てみましょう:
Tags の形で文書化する。タグの例:ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} は、タグ付けされたエクスプロイトが Ubuntu 12.04 上でカーネル 3.2.0-23-generic、3.2.0-29-generic、3.5.0-23-generic、3.5.0-29-generic で正しく動作することを検証済みであることを示します。このタグを追加すると、LES は Ubuntu 12.04 上でリストされたカーネルバージョンのいずれかで実行された際に、そのエクスプロイトの動的な Rank を自動的に強調表示して引き上げます。これにより、ペネトレーションテスト中に、あなた(および他の人々)が深刻な脆弱性を持つ Linux マシンを迅速に特定できるようになります。ext-url エントリとして LES に追加し、新たに追加されたターゲットを反映するように Tags を変更してください。特定の PoC エクスプロイトを異なるカーネルバージョンに適応させる優れた例については、この記事を参照してください。FEATURES 配列に追加して(まだ存在しない場合)、分析結果を https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md で公開してください。LES への優れた頻繁な貢献に対して bcoles に感謝します。