Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Dead.Letter-CVE-2026-45185 — Exim MTAのCVE-2026-45185(Dead.Letter)用のシェルベースの脆弱性スキャナー。GnuTLSビルドのuse-after-freeを検出し、バージョン、TLSライブラリ、CHUNKING設定をチェックします。CI/CD統合用のJSON出力を生成します。 | Kitploit
ツール/GitHubGitHub/liamromanis101/dead.letter-cve-2026-45185
脆弱性スキャナー脆弱性分析エクスプロイトスクリプトと自動化構成監査ネットワークセキュリティDevSecOpsメールセキュリティ
GitHub
liamromanis101/dead.letter-cve-2026-45185

Dead.Letter-CVE-2026-45185

Exim MTAのCVE-2026-45185(Dead.Letter)用のシェルベースの脆弱性スキャナー。GnuTLSビルドのuse-after-freeを検出し、バージョン、TLSライブラリ、CHUNKING設定をチェックします。CI/CD統合用のJSON出力を生成します。

リポジトリを見る
2274ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-45185 — "Dead.Letter" Exim脆弱性スキャナー

LinuxシステムがCVE-2026-45185(Eximメール転送エージェントのuse-after-free脆弱性で、リモートコード実行につながる可能性がある)に対して脆弱かどうかを検出するシェルスクリプト。

CI/CDパイプライン、構成管理ツール、アドホックなシステム監査での使用を想定。人間が読める形式と機械可読(JSON)形式の両方で出力を生成。


脆弱性

CVE-2026-45185(別名: Dead.Letter)は、EximのBDAT(バイナリデータ)メッセージボディ解析におけるuse-after-freeバグであり、GnuTLSがTLSを処理するときに引き起こされます。

TLSシャットダウン中にEximはTLS転送バッファを解放しますが、ネストされたBDAT受信ラッパーが依然として着信バイトを処理し、ungetc()を呼び出して解放された領域に単一の\nバイトを書き込む可能性があります。この1バイトの書き込みがヒープアロケータのメタデータを破壊し、攻撃者はそこからさらなるメモリプリミティブを取得し、リモートコード実行を達成できます。

プロパティ詳細
CVECVE-2026-45185
別名Dead.Letter
種別Use-After-Free (CWE-416)
コンポーネントExim BDAT/CHUNKINGハンドラ(GnuTLSビルドのみ)
攻撃ベクトルネットワーク — 認証不要、TLS接続とCHUNKING拡張のみ必要
影響を受けるバージョンExim 4.97 – 4.99.2、GnuTLSビルドのみ
修正バージョンExim 4.99.3
発見者Federico Kirschbaum, XBOW Security Lab(2026年5月1日報告)

OpenSSLビルドは影響を受けません。 この脆弱性はUSE_GNUTLS=yesでコンパイルされたEximに固有です。EximがOpenSSLにリンクしている場合、バージョンに関係なく脆弱ではありません。


スクリプトがチェックする内容

スクリプトは決定木を通じて動作し、決定的に安全な状態が確認され次第、システムを脆弱ではないとマークして停止します。

チェック1 — Eximの存在 $PATHおよび一般的なインストール場所(/usr/sbin/exim、/usr/sbin/exim4、/usr/local/sbin/exim)を検索します。Eximが見つからない場合、システムは脆弱ではなく、スクリプトは即座に終了します。

チェック2 — Eximのバージョン exim -bVの出力を解析し、影響を受ける範囲(4.97 – 4.99.2)と比較します。バージョン4.99.3以上はパッチ適用済みとして扱われます。既知の範囲外のバージョンは脆弱ではないとマークされます(認識されない場合は注釈が付きます)。

チェック3 — TLSライブラリ(重要なゲート) 次の3つの検出方法を順に使用します。

  1. exim -bVビルド情報(最も信頼性が高い — Eximはコンパイル時の機能を報告します。例: Support for: GnuTLS)
  2. ldd共有ライブラリのリンク
  3. stringsバイナリスキャン(フォールバック)

OpenSSLが検出された場合 → 判定はバージョンに関係なく脆弱ではないに反転します。GnuTLSが検出された場合 → 攻撃対象領域が存在することが確認されます。どちらも判別できない場合 → 結果は不明です。

チェック4 — CHUNKING/BDAT設定(回避策チェック) この時点でシステムがまだ脆弱とマークされている場合のみ実行します。Exim設定でchunking_advertise_hostsが明示的に空の値に設定されているかどうかをチェックし、これによりBDATのアドバタイズが無効になり、攻撃ベクトルがブロックされます。単一ファイルの設定とDebianの分割設定レイアウト(/etc/exim4/conf.d/フラグメント)の両方を処理します。

注: chunking_advertise_hostsが設定に存在しない場合(デフォルト)、EximはCHUNKINGをすべてのホスト(*)にアドバタイズします。無効にするには、オプションを明示的に空の値に設定する必要があります。

チェック5 — 情報提供: システムの緩和策 判定は変更しませんが、悪用可能性に影響を与える要因を報告します。

  • ASLRレベル(/proc/sys/kernel/randomize_va_space) — 2であるべき
  • glibcバージョン — 2.32以上ではより強力なヒープメタデータ整合性チェックが行われる
  • Eximバイナリのchecksec出力(PIE、RELRO、スタックカナリア) — checksecがインストールされている場合
  • systemdユニットのサンドボックス化: MemoryDenyWriteExecute、NoNewPrivileges、SystemCallFilter

必要条件

  • Bash 4.0以降
  • /procファイルシステム(ASLRチェック用)を備えたLinux
  • 標準coreutils: grep、awk、ldd、head
  • checksec(オプション — バイナリ強化解析用)
  • systemctl(オプション — systemdユニット検査用)
  • Exim設定ファイルを読み取るための十分な権限で実行する必要があります(通常はroot、またはDebian/UbuntuではDebian-eximグループのユーザー)

コア脆弱性チェックには外部依存関係は必要ありません。


使用方法

root@kitploit:~
chmod +x check_cve_2026_45185.sh
./check_cve_2026_45185.sh

オプション

フラグ説明
--json結果をJSONオブジェクトとして出力(下記参照)
--quietすべての出力を抑制。終了コードのみ設定
--no-colorANSIカラーコードを無効化(ログファイルに便利)
--help / -h使用方法を表示

終了コード

コード意味
0脆弱ではない(または決定的に安全な状態が見つかった)
1脆弱
2不明 — 1つ以上の必要な情報を判別できなかった。潜在的に脆弱として扱う
3スクリプトエラーまたはサポートされていない環境

出力例

人間が読める形式(デフォルト)

root@kitploit:~
CVE-2026-45185 (Dead.Letter) — Exim脆弱性評価
============================================================

[CHECK] Eximインストールを確認中...
[WARN]  Eximバイナリが見つかりました: /usr/sbin/exim4
[CHECK] Eximバージョンを確認中...
        検出されたバージョン: 4.99.1
[FAIL]  Exim 4.99.1 は脆弱な範囲(4.97 – 4.99.2)に含まれます。
[CHECK] TLSライブラリのリンクを確認中(GnuTLS 対 OpenSSL)...
[FAIL]  EximはGnuTLSにリンクされています — このビルドは影響を受けます。
[CHECK] CHUNKING (BDAT) アドバタイズ設定を確認中...
        設定ファイル: /etc/exim4/exim4.conf
[WARN]  chunking_advertise_hosts が無効になっていません — BDATがアクティブです(デフォルトですべてのホストにアドバタイズ)。
        ヒント: 回避策として、メイン設定に 'chunking_advertise_hosts ='(空の値)を追加してBDATを無効にしてください。
[CHECK] システムレベルのエクスプロイト緩和策を確認中(情報提供)...
[PASS]  ASLR: 完全なランダム化 (randomize_va_space=2)
        glibcバージョン: 2.35 (2.32+ はより強力なヒープメタデータチェックがあります)
[WARN]  systemd: MemoryDenyWriteExecute が設定されていません — ユニットに追加することを推奨
[WARN]  systemd: NoNewPrivileges が設定されていません

------------------------------------------------------------
判定
------------------------------------------------------------
脆弱 — CVE-2026-45185
  理由: Eximバージョン4.99.1が脆弱範囲4.97–4.99.2に含まれます

推奨アクション:
  1. Eximを4.99.3以降にアップグレード(主要な修正)
  2. 回避策として、Exim設定に 'chunking_advertise_hosts ='(空)を設定
  3. systemdユニットに MemoryDenyWriteExecute=yes と NoNewPrivileges=yes を追加
  4. ASLRが2に設定されていることを確認: echo 2 > /proc/sys/kernel/randomize_va_space
------------------------------------------------------------

JSON出力(--json)

root@kitploit:~
{
  "cve": "CVE-2026-45185",
  "alias": "Dead.Letter",
  "host": "mailserver-01",
  "timestamp": "2026-05-12T17:00:00Z",
  "verdict": "vulnerable",
  "reason": "Exim version 4.99.1 is in vulnerable range 4.97–4.99.2",
  "exit_code": 1,
  "findings": {
    "exim_binary": "/usr/sbin/exim4",
    "exim_version": "4.99.1",
    "exim_version_vulnerable": "true",
    "tls_library": "gnutls",
    "tls_library_detected": "gnutls",
    "exim_config": "/etc/exim4/exim4.conf",
    "chunking_advertised": "true",
    "aslr_level": "2",
    "glibc_version": "2.35"
  },
  "mitigations": [
    "aslr=full"
  ]
}

CI/CD統合

GitHub Actions

root@kitploit:~
- name: CVE-2026-45185をチェック
  run: |
    chmod +x check_cve_2026_45185.sh
    ./check_cve_2026_45185.sh --json | tee vuln-report.json
    exit $(jq '.exit_code' vuln-report.json)

- name: 脆弱性レポートをアップロード
  if: always()
  uses: actions/upload-artifact@v4
  with:
    name: cve-2026-45185-report
    path: vuln-report.json

GitLab CI

root@kitploit:~
check-exim-vuln:
  stage: security
  script:
    - chmod +x check_cve_2026_45185.sh
    - ./check_cve_2026_45185.sh --json > vuln-report.json
  artifacts:
    when: always
    paths:
      - vuln-report.json
  allow_failure: false

Ansible

root@kitploit:~
- name: CVE-2026-45185チェックを実行
  script: check_cve_2026_45185.sh --json
  register: vuln_check
  failed_when: vuln_check.rc == 1
  changed_when: false

- name: 脆弱性レポートを表示
  debug:
    msg: "{{ vuln_check.stdout | from_json }}"

JSON出力をjqで解析

root@kitploit:~
# 判定のみ取得
./check_cve_2026_45185.sh --json | jq -r '.verdict'

# 特定の緩和策が見つかったか確認
./check_cve_2026_45185.sh --json | jq '.mitigations | contains(["aslr=full"])'

# 複数のホストで実行し結果を収集
for host in mail1 mail2 mail3; do
  ssh "$host" 'bash -s' < check_cve_2026_45185.sh --json
done | jq -s '.'

修復

主要な修正 — Eximのアップグレード

root@kitploit:~
# Debian / Ubuntu
apt-get update && apt-get install --only-upgrade exim4

# RHEL / CentOS / Fedora
dnf upgrade exim

# ソースから
# https://ftp.exim.org/pub/exim/exim4/ から4.99.3をダウンロード
# 既存のLocal/Makefile設定で再ビルド

アップグレード後に確認:

root@kitploit:~
exim -bV | head -1
# 期待される出力: Exim version 4.99.3 ...

一時的な回避策 — CHUNKING/BDATを無効化

すぐにアップグレードできない場合、Exim設定のメイン設定セクションに次の行を追加すると、BDATアドバタイズが完全に無効になり、攻撃ベクトルをブロックします。

root@kitploit:~
chunking_advertise_hosts =

空の値は「ホストなし」を意味します — EximはEHLO応答でCHUNKING拡張をアドバタイズしなくなります。この変更後、Eximを再起動してください。

root@kitploit:~
# Debian / Ubuntu
systemctl restart exim4

# その他のsystemdシステム
systemctl restart exim

CHUNKINGがアドバタイズされなくなったことを確認:

root@kitploit:~
# 接続してEHLO応答を確認 — CHUNKINGが表示されてはいけない
echo QUIT | openssl s_client -connect localhost:25 -starttls smtp 2>/dev/null \
  | grep -i chunking
# 出力がない = CHUNKINGが無効

これは回避策であり、修正ではありません。 一部の送信メールサーバーは大容量メッセージ配信にBDATを使用します。無効にすると、それらの送信者との互換性の問題が発生する可能性があります。できるだけ早く4.99.3にアップグレードしてください。

systemdユニットの強化(多層防御)

パッチ適用済みシステムでも、Exim systemdユニットに次のディレクティブを追加することで、将来のメモリ破壊脆弱性の影響を軽減します。

root@kitploit:~
# /etc/systemd/system/exim4.service.d/hardening.conf
[Service]
NoNewPrivileges=yes
MemoryDenyWriteExecute=yes
ProtectSystem=strict
PrivateTmp=yes
RestrictAddressFamilies=AF_INET AF_INET6
SystemCallFilter=@system-service
root@kitploit:~
systemctl daemon-reload && systemctl restart exim4

制限事項

  • スクリプトは静的検出のみを行います。脆弱性を悪用したり、ターゲットシステムの特定のランタイム条件下での悪用可能性を確認したりするものではありません。
  • Eximバイナリを実行できないシステム(コンテナ内の権限制約など)では、TLSライブラリ検出はlddおよびstringsにフォールバックし、信頼性が低下する可能性があります。
  • 4.97未満のEximバージョンは、この特定のCVEの既知の影響範囲外ですが、メンテナンスされておらず、他の未修正の問題に対して脆弱である可能性があります。アップグレードを推奨します。
  • CHUNKING回避策をチェックするには、Exim設定ファイルへの読み取りアクセスが必要です。十分な権限なしで実行された場合、設定チェックステップは失敗ではなく不明と報告します。

参照

  • The Hacker News — New Exim BDAT Vulnerability Exposes GnuTLS Builds to Potential Code Execution
  • Eximプロジェクト — セキュリティドキュメント
  • Exim仕様 — CHUNKING (chunking_advertise_hosts)
  • Exim仕様 — TLS設定
  • XBOW Security Lab
ツールをダウンロード