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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-44228 — Log4jの脆弱性(CVE-2021-44228、CVE-2021-45046、CVE-2021-45105、CVE-2021-4104、CVE-2019-17571)に関するノルウェー語のガイド。検出スクリプト、緩和策、影響を受けるシステムを特定および修復するためのマインドマップを提供。 | Kitploit
ツール/GitHubGitHub/helsecert/cve-2021-44228
脆弱性分析サプライチェーンセキュリティ学習と教育インシデントレスポンス厳選リソースログ分析
GitHubhelsecert/cve-2021-44228

CVE-2021-44228

Log4jの脆弱性(CVE-2021-44228、CVE-2021-45046、CVE-2021-45105、CVE-2021-4104、CVE-2019-17571)に関するノルウェー語のガイド。検出スクリプト、緩和策、影響を受けるシステムを特定および修復するためのマインドマップを提供。

リポジトリを見る
114年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Log4jの脆弱性

2021年12月19日更新:Log4jにおける新たな脆弱性とそれらの悪用手法が次々と発見されています。リポジトリに3つのフローチャート(マインドマップ)を追加しました。それぞれ、脆弱なLog4jのバージョン、脆弱性の有無を確認する方法、および各脆弱性の軽減策について説明しています。

推奨事項

Log4j v2.x:

  • Log4j バージョン 2.x を使用しているソフトウェアを特定する

  • Log4j の脆弱性を軽減する

    • Log4j 2.17.0 を使用しているバージョンにソフトウェアを更新する

    上記が不可能な場合

    • CVE-2021-44228 および CVE-2021-45046 に対する軽減策が実施されていることを確認する。ただし、その場合 DoS に対して脆弱であることに注意
    • システムが特に重要な場合は、Log4j2 の設定で Pattern Layouts 内の Context Lookups を確認することを検討する

Log4j v1.x:

  • Log4j バージョン 1.x を使用しているソフトウェアを特定する

  • 組織内で Log4j バージョン 1.x を使用している場合は、ベンダーと協議し、以下を要求する

    • Log4j バージョン 2.x へのアップグレード
    • または、ログ記録に関して別のライブラリに移行する

脆弱性について

CVE-2021-44228

Log4j の脆弱性の中でも最大の脅威。${jndi:ldap://\<攻撃コード>/a} のバリエーションを含む文字列が Log4j によってログ記録されると悪用されます。CVSS 10.0、RCE。

CVE-2021-45046

CVE-2021-44228 ほどではありませんが、同様に危険です。Log4j の非標準的な設定が必要です。CVSS 9.0、RCE および DoS。

CVE-2021-45105

CVE-2021-44228 ほどではなく、やや影響は小さいです。CVSS 7.5、DoS

CVE-2021-4104

Log4j バージョン 1.x のみに影響します。Log4j が JMSAppender を使用している必要があります。CVSS 6.6、RCE 悪用には Log4j が JMSAppender を使用している必要があります。JMSAppender が直接設定されている場合(これはまれです)、または攻撃者が自ら Log4j の設定に追加した場合に発生します。 さらに、攻撃者は JMSAppender の設定を変更できる必要があります。この場合、攻撃者は通常すでにシステムにアクセスしています。したがって、この脆弱性はあまり重要ではないと考えられます。

CVE-2019-17571

Log4j バージョン 1.x のみに影響します。Log4j が SocketServer を使用している必要があります。CVSS 9.8、RCE ネットワーク経由で該当するソケットにアクセスできる攻撃者にコード実行を許可します。悪用コードは公開されています。

Java 8 の場合、Log4j v. 2.17.0 が最新バージョンです。これは上記のすべての脆弱性を軽減します。

バージョン 2.16.0 は最も深刻な脆弱性を軽減します。

Java 7 の場合、Log4j はバージョン 2.12.2 でリリースされています。これは CVE-2021-45105 を軽減しません。Log4j チームは、Java 6 も Java 7 もサポートされていないと述べています。Java 7 の Log4j に対するさらなるセキュリティアップデートが提供されるかどうかは未定です。

フローチャート「マインドマップ #1」は、各脆弱性の有無の前提条件をわかりやすく示しています。 Log4jの脆弱性の有無を判断するフローチャート

作成者:Loïc Castel。githubから取得。

脆弱性の検出

課題の一つは、必ずしもインターネットに直接露出しているサーバーだけが脆弱であるとは限らないことです。脆弱性は、同じデータを受信してログ記録する、チェーンの奥深くにあるサーバーに存在する可能性があります。そのため、何が露出しているのか、何が露出していないのかを把握することが困難になる場合があります。

フローチャート「マインドマップ #2」は、自社システムの脆弱性を確認する方法をわかりやすく示しています。

Log4jの脆弱なインスタンスを探すためのフローチャート

作成者:Loïc Castel。githubから取得。

脆弱性をトリガーして確認する 1. DNSカナリアトークンを作成する [https://canarytokens.org/generate#](https://canarytokens.org/generate#)

DNSカナリアの作成

  1. 次のテキスト文字列を構築する ${jndi:ldap://<カナリアトークン>/a}
  2. ログ記録される可能性のあるすべてのフィールドにこの文字列を入力する

"カナリア文字列"での検索

root@kitploit:~
- User-agent
- 検索フィールド
- ユーザー名
- ...

4. カナリアのヒットを追跡し、log4jがどこで動作しているかを特定する。

参照:Florian Roth のツイート

ホストをスキャンして確認する

Windows

以下は、マップされたネットワークドライブを含むすべてのディスクを対象とします。

root@kitploit:~
Get-PSDrive -PSProvider FileSystem | foreach {(gci ($_.Root) -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}

参照:https://twitter.com/0gtweet/status/1469661769547362305

ローカルディスクのみをチェックする場合:

root@kitploit:~
Get-CimInstance win32_volume | Where-Object { $_.DriveType -eq 3 -and $_.DriveLetter -ne $null} | ForEach-Object {(gci ($_.DriveLetter+"\") -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}

参照:https://twitter.com/webmastir/status/1470386184052486155?s=20

さらにマシンのイベントログをチェックする場合:

root@kitploit:~
Get-WinEvent -ListLog * |
  foreach { get-winevent @{logname=$_.logname; } -ea 0 } |
  where message -match 'jndi'

Linux #1

root@kitploit:~
#!/bin/bash
find / -name '*log4j*.jar' -print0 2>/dev/null -print0 | while read -d $'\0' log4j; do
        echo -en "${log4j}: "$(unzip -p "${log4j}" | strings | grep -Po '^Implementation-Version:\s+([0-9\.]+)' | awk '{ print $NF }')"\n"
done
exit 0

脆弱性の軽減

フローチャート「マインドマップ #3」は、軽減の選択肢の概要を示しています。

Log4jの軽減策のフローチャート

作成者:Loïc Castel。githubから取得。

以下に、軽減策を実行するためのリソースをいくつか記載します。

#1 パッチ適用

Java 8

Log4j を v 2.17.0 に更新

Java 7

Log4j を v 2.12.2 に更新 注意: CVE-2021-45105 は軽減されません

#4 軽減策 #1: 変数を設定

⚠️ この方法は、すべての状況で全ての脆弱性を軽減するわけではないため、もはや完全な解決策とは見なされていません。

Windows

root@kitploit:~
[Environment]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/HEAD/:SetEnvironmentVariable(%22LOG4J_FORMAT_MSG_NO_LOOKUPS%22,%22true%22,%22Machine%22)

注意: 再起動が必要

出典:https://twitter.com/CyberRaiju/status/1469505680138661890

JVMフラグの設定

root@kitploit:~
"‐Dlog4j2.formatMsgNoLookups=True"

コマンドライン例:

root@kitploit:~
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" teku --network mainnet

または -Xmx 値を指定する場合:

root@kitploit:~
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx4g" teku

Systemd 設定例:

root@kitploit:~
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true"'

または -Xmx 値を指定する場合:

root@kitploit:~
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" "-Xmx4g'

アプリケーションの再起動時に読み込まれます 出典:https://github.com/ConsenSys/teku/security/advisories/GHSA-mwfw-vm54-g3p7

#4 軽減策 #2: Javaクラスの削除 log4j の jar ファイルから JndiLookup.class を削除します。

jar ファイルはアーカイブ(zip ファイル)であり、開くことができます。その後、ファイルを削除できます。これは、7-zip などのツール(画像参照)を使用して手動で行うか、スクリプトを使用して実行できます。

アプリケーションの再起動が必要

参照:https://mogwailabs.de/en/blog/2021/12/vulnerability-notes-log4shell/9

jndilookup.classの削除

Windows

root@kitploit:~
[Reflection.Assembly]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/HEAD/:LoadWithPartialName(%27System.IO.Compression%27)
$JarFilLokasjon = 'C:\temp\log4j-core-2.13.0-test.jar'
$Filnavn   = 'JndiLookup.class' #このファイルが削除されます!

$Stream = New-Object IO.FileStream($JarFilLokasjon, [IO.FileMode]::Open)
$ZipMode   = [IO.Compression.ZipArchiveMode]::Update
$Zip    = New-Object IO.Compression.ZipArchive($stream, $ZipMode)

($zip.Entries | Where-Object { $Filnavn -contains $_.Name }) | ForEach-Object { $_.Delete() }
$zip.Dispose()
$stream.Close()
$stream.Dispose()

Linux

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

影響を受けるソフトウェアのリスト

https://github.com/NCSC-NL/log4shell/tree/main/software

https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592

https://github.com/cisagov/log4j-affected-db

ツールをダウンロード

rootで実行

Linux #2

root@kitploit:~
lsof | grep log4j-core