
Log4j2 CVE-2021-44228 向け脆弱性スキャナーおよび緩和パッチ

log4j2-scan は、CVE-2021-44228 の脆弱性スキャンおよび緩和パッチ適用のための単一バイナリのコマンドラインツールです。ネストされた JAR ファイルのスキャンとパッチ適用にも対応しています。また、CVE-2021-45046 (log4j 2.15.0)、CVE-2021-45105 (log4j 2.16.0)、CVE-2021-44832 (log4j 2.17.0)、CVE-2021-4104、CVE-2019-17571、CVE-2017-5645、CVE-2020-9488、CVE-2022-23302、CVE-2022-23305、CVE-2022-23307 (log4j 1.x)、および CVE-2021-42550 (logback 0.9-1.2.7) の脆弱性も検出します。
レポート作成とパッチ管理のために、log4j2-scan を Logpresso Watch サービスと統合できます。詳細は https://logpresso.watch をご覧ください。
VCRUNTIME140.dll not found エラーが発生する場合は、Visual C++ Redistributable をインストールしてください。ターゲットディレクトリのパスを指定して log4j2-scan.exe または log4j2-scan を実行するだけです。logpresso-log4j2-scan.jar は JRE/JDK 7+ で動作します。
--fix オプションは以下の脆弱性に対してサポートされています:
--fix オプションは以下の脆弱性を緩和しません:
使用法
Logpresso CVE-2021-44228 Vulnerability Scanner 3.0.1 (2022-02-13)
Usage: log4j2-scan [--scan-log4j1] [--fix] target_path1 target_path2
-f [config_file_path]
Specify config file path which contains scan target paths.
Paths should be separated by new line. Prepend # for comment.
--scan-log4j1
Enables scanning for log4j 1 versions.
--scan-logback
Enables scanning for logback CVE-2021-42550.
--scan-zip
Scan also .zip extension files. This option may slow down scanning.
--zip-charset
Specify an alternate zip encoding other than utf-8. System default charset is used if not specified.
--fix
Backup original file and remove JndiLookup.class from JAR recursively.
With --scan-log4j1 option, it also removes JMSAppender.class, SocketServer.class, SMTPAppender.class, SMTPAppender$1.class,
JMSSink.class, JDBCAppender.class, and all classes of org.apache.log4j.chainsaw package
--force-fix
Do not prompt confirmation. Don't use this option unless you know what you are doing.
--restore [backup_file_path]
Unfix JAR files using zip archived file.
--backup-path [zip_output_path]
Specify backup file path.
--backup-ext [zip]
Specify backup file extension. zip by default.
If --backup-path is specified, this option is ignored.
--all-drives
Scan all drives on Windows
--drives c,d
Scan specified drives on Windows. Spaces are not allowed here.
--no-symlink
Do not detect symlink as vulnerable file.
--exclude [path_prefix]
Path prefixes of directories whose absolute path starts with the specified value will be excluded.
Does not support relative paths. You can specify multiple --exclude [path_prefix] pairs
--exclude-config [config_file_path]
Specify exclude path prefix list in text file. Paths should be separated by new line. Prepend # for comment.
--exclude-pattern [pattern]
Exclude specified paths of directories by pattern. Supports fragments.
You can specify multiple --exclude-pattern [pattern] pairs (non regex)
--exclude-file-config [config_file_path]
Specify exclude file path list in text file. Paths should be separated by new line. Prepend # for comment.
--exclude-fs nfs,tmpfs
Exclude paths by file system type. nfs, nfs3, nfs4, afs, cifs, autofs,
tmpfs, devtmpfs, fuse.sshfs, smbfs and iso9660 is ignored by default.
--api-key [key]
Send reports to Logpresso Watch service.
--http-proxy [addr:port]
Send reports via specified HTTP proxy server.
--syslog-udp [host:port]
Send reports to remote syslog host.
Send vulnerable, potentially vulnerable, and mitigated reports by default.
--syslog-level [level]
Send reports only if report is higher or equal to specified level.
Specify alert for vulnerable and potentially vulnerable reports.
Specify info for vulnerable, potentially vulnerable, and mitigated reports.
Specify debug for vulnerable, potentially vulnerable, mitigated, and error reports.
--syslog-facility [code]
Default value is 16 (LOCAL0). Facility value must be in the range of 0 to 23 inclusive.
--rfc5424
Follow RFC5424 The Syslog Protocol strictly.
--report-csv
Generate log4j2_scan_report_yyyyMMdd_HHmmss.csv in working directory if not specified otherwise via --report-path [path]
--report-json
Generate log4j2_scan_report_yyyyMMdd_HHmmss.json in working directory if not specified otherwise via --report-path [path]
--report-patch
Report also patched log4j file.
--report-path
Specify report output path including filename. Implies --report-csv.
--report-dir
Specify report output directory. Implies --report-csv.
--no-empty-report
Do not generate empty report.
--csv-log-path
Specify csv log file path. If log file exists, log will be appended.
--json-log-path
Specify json log file path. If log file exists, log will be appended.
--old-exit-code
Return sum of vulnerable and potentially vulnerable files as exit code.
--debug
Print exception stacktrace for debugging.
--trace
Print all directories and files while scanning.
--silent
Do not print progress message.
--throttle
Limit scan files per second.
--help
Print this help.
Windows の場合
log4j2-scan [--fix] target_path
Linux の場合
./log4j2-scan [--fix] target_path
UNIX (AIX、Solaris など) の場合
java -jar logpresso-log4j2-scan-3.0.1.jar [--fix] target_path
--fix オプションを指定すると、このプログラムは脆弱な元の JAR ファイルを .bak ファイルにコピーし、org/apache/logging/log4j/core/lookup/JndiLookup.class エントリを含まない新しい JAR ファイルを作成します。すべての .bak ファイルは log4j2_scan_backup_yyyyMMdd_HHmmss.zip という名前の単一の zip ファイルにアーカイブされた後、安全に削除されます。ほとんどの環境では、JNDI ルックアップ機能は使用されません。ただし、このオプションの使用は自己責任で行ってください。--restore オプションを使用すると、脆弱な元の JAR ファイルを簡単に復元できます。
オペレーティングシステムによって異なります:
パッチ適用ジョブを自動化する場合は、--force-fix オプションを使用してください。このオプションを使用すると、このプログラムは確認プロンプトを表示しなくなります。
JAR ファイルから org/apache/logging/log4j/core/lookup/JndiLookup.class エントリが削除されている場合、(mitigated) タグが表示されます。
--trace オプションを指定すると、このプログラムはアクセスしたすべてのディレクトリとファイルを出力します。このオプションはデバッグ専用に使用してください。
Windows の場合:
CMD> log4j2-scan.exe D:\tmp
[*] Found CVE-2021-44228 vulnerability in D:\tmp\elasticsearch-7.16.0\bin\elasticsearch-sql-cli-7.16.0.jar, log4j 2.11.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\elasticsearch-7.16.0\lib\log4j-core-2.11.1.jar, log4j 2.11.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\flink-1.14.0\lib\log4j-core-2.14.1.jar, log4j 2.14.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\logstash-7.16.0\logstash-core\lib\jars\log4j-core-2.14.0.jar, log4j 2.14.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\logstash-7.16.0\vendor\bundle\jruby\2.5.0\gems\logstash-input-tcp-6.2.1-java\vendor\jar-dependencies\org\logstash\inputs\logstash-input-tcp\6.2.1\logstash-input-tcp-6.2.1.jar, log4j 2.9.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-7.7.3\solr-7.7.3\contrib\prometheus-exporter\lib\log4j-core-2.11.0.jar, log4j 2.11.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-7.7.3\solr-7.7.3\server\lib\ext\log4j-core-2.11.0.jar, log4j 2.11.0
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-8.11.0\contrib\prometheus-exporter\lib\log4j-core-2.14.1.jar, log4j 2.14.1
[*] Found CVE-2021-44228 vulnerability in D:\tmp\solr-8.11.0\server\lib\ext\log4j-core-2.14.1.jar, log4j 2.14.1
Scanned 5047 directories and 26251 files
Found 9 vulnerable files
Completed in 0.42 seconds
5 つのステップで実行されます:
META-INF/maven/org.apache.logging.log4j/log4j-core/pom.properties エントリを検索します。log4j2_scan_backup_yyyyMMdd_HHmmss.zip にアーカイブし、.bak ファイルを削除します。ご質問や問題がある場合は、このリポジトリで issue を作成してください。
Logpresso は、韓国に拠点を置く AI およびビッグデータ業界のリーディングカンパニーです。 Logpresso は、独自のビッグデータプラットフォームにより、SIEM、SOAR、ログ管理、FDS ソリューションを提供しています。