Skip to main content

Static analysis scanner for Log4Shell (CVE-2021-44228) vulnerabilities in Java projects

Project description

๐Ÿ“ README.md

๐Ÿ›ก๏ธ Static Log4Shell Scanner

Log4Shell ์ทจ์•ฝ์ ์„ ํƒ์ง€ํ•˜๋Š” ์ „๋ฌธ์ ์ธ ๋ณด์•ˆ ์Šค์บ๋„ˆ

Java ํ”„๋กœ์ ํŠธ์—์„œ Log4Shell(CVE-2021-44228) ์ทจ์•ฝ์ ์„ ์‹ ์†ํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํƒ์ง€ํ•˜๋Š” CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์‹ค๋ฌด ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœ๋œ ์Šค์บ๋„ˆ๋กœ, ๊ฐœ๋ฐœํŒ€์˜ ๋ณด์•ˆ ์›Œํฌํ”Œ๋กœ์šฐ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ ์ฃผ์š” ํŠน์ง•

โšก ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ์Šค์บ”

  • ๋Œ€์šฉ๋Ÿ‰ ํ”„๋กœ์ ํŠธ ์ง€์›: ์ˆ˜์ฒœ ๊ฐœ ํŒŒ์ผ์„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ
  • ์‹ค์‹œ๊ฐ„ ์ง„ํ–‰์ƒํ™ฉ: ์Šค์บ” ์ค‘์ธ ํŒŒ์ผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ‘œ์‹œ
  • ์ •์  ๋ถ„์„ ๋ฐฉ์‹: ์‹คํ–‰ ์—†์ด ์ฝ”๋“œ์™€ ์„ค์ • ํŒŒ์ผ๋งŒ์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์‚ฌ

๐Ÿ” ์ •๋ฐ€ํ•œ ์ทจ์•ฝ์  ํƒ์ง€

  • ๋‹ค์ค‘ ํƒ์ง€ ๋ฐฉ์‹: JAR ํŒŒ์ผ, ์†Œ์Šค์ฝ”๋“œ, ๋นŒ๋“œ ํŒŒ์ผ ๋™์‹œ ๊ฒ€์‚ฌ
  • ์ •ํ™•ํ•œ ๋ฒ„์ „ ๋ถ„์„: Log4j ๋ฒ„์ „ ์ž๋™ ํƒ์ง€ ๋ฐ ์ทจ์•ฝ์  ์—ฌ๋ถ€ ์ •ํ™•ํžˆ ํŒ๋‹จ
  • ์ปจํ…์ŠคํŠธ ๋ถ„์„: ์œ„ํ—˜ํ•œ ๋กœ๊น… ํŒจํ„ด๊นŒ์ง€ ์ƒ์„ธ ๊ฒ€์‚ฌ

๐Ÿ“Š ๋ช…ํ™•ํ•œ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ

  • ๊ฐ„๋‹จ๋ช…๋ฃŒํ•œ ํŒ์ •: ์•ˆ์ „/์œ„ํ—˜ ๋‘ ๊ฐ€์ง€๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œ
  • ๋งž์ถคํ˜• ์กฐ์น˜๋ฐฉ์•ˆ: Log4j ๋ฒ„์ „๋ณ„ ์ตœ์ ํ™”๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ œ์‹œ
  • JSON ์ถœ๋ ฅ ์ง€์›: ์ž๋™ํ™” ๋„๊ตฌ ์—ฐ๋™ ๊ฐ€๋Šฅ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

์„ค์น˜

# PyPI์—์„œ ์„ค์น˜
pip install static-log4shell

# pipx๋กœ ์„ค์น˜ (๊ถŒ์žฅ - ์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค ๋“ฑ)
pipx install static-log4shell

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ์Šค์บ”
static-log4shell .

# ํŠน์ • ํ”„๋กœ์ ํŠธ ์Šค์บ”
static-log4shell /path/to/java-project

# ์งง์€ ๋ช…๋ น์–ด (๋ณ„์นญ)
slog4j ~/workspace/spring-app

๊ณ ๊ธ‰ ์˜ต์…˜

# ๊ฒฐ๊ณผ๋ฅผ JSON ํŒŒ์ผ๋กœ ์ €์žฅ
static-log4shell ./project --output security-report.json

# ๊ฐ„๋‹จํ•œ ์ถœ๋ ฅ๋งŒ ํ‘œ์‹œ
static-log4shell ./project --quiet

# ๋ฒ„์ „ ์ •๋ณด ํ™•์ธ
static-log4shell --version

๐Ÿ“‹ ์Šค์บ” ๊ฒฐ๊ณผ ์˜ˆ์‹œ

๐Ÿ”ด ์ทจ์•ฝํ•œ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ

๐Ÿ” Log4Shell ๋ณด์•ˆ ์Šค์บ” ์‹œ์ž‘: ./vulnerable-spring-app
============================================================
๐Ÿ“‚ ํŒŒ์ผ ์Šค์บ” ์ง„ํ–‰ ์ค‘...
    > build.gradle                            
    ๐Ÿšจ ์œ„ํ—˜ ๋ฐœ๊ฒฌ: build.gradle
    > MainController.java                      
โœ… ์Šค์บ” ์™„๋ฃŒ: 1,679๊ฐœ ํŒŒ์ผ ๊ฒ€์‚ฌ

๐Ÿ“Š ์Šค์บ” ๊ฒฐ๊ณผ ์š”์•ฝ
----------------------------------------
  ๐Ÿ“… ์Šค์บ” ์‹œ๊ฐ„: 2026-01-06 16:30:46
  ๐Ÿ“ ์Šค์บ” ํŒŒ์ผ: 1,679๊ฐœ
  โ˜• Java ๋ฒ„์ „: 1.8
  ๐Ÿ“š Log4j ๋ฒ„์ „: 2.14.1
  ๐Ÿ›ก๏ธ  ๋ณด์•ˆ ์ƒํƒœ: ๐Ÿ”ด ์œ„ํ—˜
  ๐Ÿ” ๋ฐœ๊ฒฌ์‚ฌํ•ญ: 1๊ฐœ

โš ๏ธ ๋ฐœ๊ฒฌ๋œ ์œ„ํ—˜ (1๊ฐœ):
  1. MainController.java
     Log4j 2.x ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import + ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์„ ํ†ตํ•œ ์œ„ํ—˜ํ•œ ๋กœ๊น…

๐Ÿšจ ๊ธด๊ธ‰ ์กฐ์น˜์‚ฌํ•ญ:
  1. ๐Ÿ“ฆ Log4j ์—…๊ทธ๋ ˆ์ด๋“œ (์ตœ์šฐ์„ )
     Log4j๋ฅผ 2.17.1 ์ด์ƒ ๋˜๋Š” 2.12.2, 2.3.1(๋ณด์•ˆ ๋ฆด๋ฆฌ์ฆˆ)๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
  2. โšก JVM ์˜ต์…˜ ์ ์šฉ (2.10.0 ์ด์ƒ์šฉ)
     java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
  3. ๐Ÿ—‘๏ธ JndiLookup ํด๋ž˜์Šค ์ œ๊ฑฐ (2.10.0 ๋ฏธ๋งŒ์šฉ)
     zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

โœ… ์•ˆ์ „ํ•œ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ

๐Ÿ” Log4Shell ๋ณด์•ˆ ์Šค์บ” ์‹œ์ž‘: ./safe-java-project
============================================================
๐Ÿ“‚ ํŒŒ์ผ ์Šค์บ” ์ง„ํ–‰ ์ค‘...
    > pom.xml                                 
โœ… ์Šค์บ” ์™„๋ฃŒ: 523๊ฐœ ํŒŒ์ผ ๊ฒ€์‚ฌ

๐Ÿ“Š ์Šค์บ” ๊ฒฐ๊ณผ ์š”์•ฝ
----------------------------------------
  ๐Ÿ“… ์Šค์บ” ์‹œ๊ฐ„: 2026-01-06 16:45:12
  ๐Ÿ“ ์Šค์บ” ํŒŒ์ผ: 523๊ฐœ
  โ˜• Java ๋ฒ„์ „: 17
  ๐Ÿ“š Log4j ๋ฒ„์ „: 2.17.2
  ๐Ÿ›ก๏ธ  ๋ณด์•ˆ ์ƒํƒœ: โœ… ์•ˆ์ „
  ๐Ÿ” ๋ฐœ๊ฒฌ์‚ฌํ•ญ: 0๊ฐœ

โœจ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค! ํ”„๋กœ์ ํŠธ๊ฐ€ Log4Shell ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ์Šค์บ” ๋ฒ”์œ„ ๋ฐ ํƒ์ง€ ํ•ญ๋ชฉ

์Šค์บ” ์œ ํ˜• ํƒ์ง€ ๋Œ€์ƒ ์„ค๋ช…
JAR ํŒŒ์ผ ๊ฒ€์‚ฌ log4j-core-.jar, log4j-api-.jar ์ทจ์•ฝํ•œ Log4j ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง์ ‘ ํƒ์ง€
์†Œ์Šค์ฝ”๋“œ ๋ถ„์„ .java ํŒŒ์ผ ์œ„ํ—˜ํ•œ ๋กœ๊น… ํŒจํ„ด ๋ฐ ์™ธ๋ถ€ ์ž…๋ ฅ ์‚ฌ์šฉ ๊ฐ์ง€
๋นŒ๋“œ ํŒŒ์ผ ๋ถ„์„ pom.xml, build.gradle ์˜์กด์„ฑ ์„ค์ • ๋ฐ ๋ฒ„์ „ ์ •๋ณด ์ถ”์ถœ
๋ฒ„์ „ ํ˜ธํ™˜์„ฑ Java-Log4j ๋งค์นญ ํ˜ธํ™˜์„ฑ ๋ฐ ๊ถŒ์žฅ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฒฝ๋กœ ์ œ์‹œ

๐Ÿ”ง ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ

  • Python: 3.7 ์ด์ƒ
  • ์šด์˜์ฒด์ œ: Windows, macOS, Linux
  • ๋ฉ”๋ชจ๋ฆฌ: ์ตœ์†Œ 512MB RAM ๊ถŒ์žฅ
  • ์ €์žฅ๊ณต๊ฐ„: ์Šค์บ” ๋Œ€์ƒ ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ์˜ 10% ์—ฌ์œ ๊ณต๊ฐ„

๐Ÿ“– ์ƒ์„ธ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

์ „์ฒด ๋ช…๋ น์–ด ์˜ต์…˜

usage: static-log4shell [-h] [-o OUTPUT] [--version] [-q] path

positional arguments:
  path                 ์Šค์บ”ํ•  ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ

options:
  -h, --help           ๋„์›€๋ง ํ‘œ์‹œ
  -o, --output OUTPUT  ๊ฒฐ๊ณผ ์ €์žฅ ํŒŒ์ผ (JSON ํ˜•์‹)
  --version            ๋ฒ„์ „ ์ •๋ณด ํ‘œ์‹œ  
  -q, --quiet          ๊ฐ„๋‹จํ•œ ์ถœ๋ ฅ๋งŒ ํ‘œ์‹œ

์‚ฌ์šฉ ์˜ˆ์‹œ

# ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ Java ํ”„๋กœ์ ํŠธ ์Šค์บ”
static-log4shell ~/Documents/JavaProjects/MyApp

# ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ ์ „์ฒด ์Šค์บ” ํ›„ ๊ฒฐ๊ณผ ์ €์žฅ
static-log4shell /workspace/enterprise-app -o security-audit.json

# CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉ
slog4j . --quiet && echo "๋ณด์•ˆ ๊ฒ€์‚ฌ ํ†ต๊ณผ"

โš ๏ธ ์ค‘์š” ์ฐธ๊ณ ์‚ฌํ•ญ

Log4Shell ์ทจ์•ฝ์ ์ด๋ž€?

  • CVE-2021-44228: CVSS 10์  ๋งŒ์ ์˜ ์น˜๋ช…์  ์ทจ์•ฝ์ 
  • ์˜ํ–ฅ ๋ฒ”์œ„: Log4j 2.2.0-beta9 ~ 2.15.0 (์ผ๋ถ€ ๋ณด์•ˆ ๋ฆด๋ฆฌ์ฆˆ ์ œ์™ธ)
  • ๊ณต๊ฒฉ ์›๋ฆฌ: JNDI Injection์„ ํ†ตํ•œ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰
  • ๋ฐœ์ƒ ์‹œ์ : 2021๋…„ 12์›”, ์ „ ์„ธ๊ณ„ Java ์‹œ์Šคํ…œ์— ๋Œ€๋Œ€์  ์˜ํ–ฅ

์™œ ์ •์  ์Šค์บ๋„ˆ์ธ๊ฐ€?

  • ์•ˆ์ „์„ฑ: ์‹ค์ œ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ ์‹œ์Šคํ…œ์— ๋ฌดํ•ด
  • ํšจ์œจ์„ฑ: ๋น ๋ฅธ ์†๋„๋กœ ๋Œ€๋Ÿ‰์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค ๊ฒ€์‚ฌ ๊ฐ€๋Šฅ
  • ์‹ค์šฉ์„ฑ: ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋ถ€๋‹ด ์—†์ด ์ •๊ธฐ์  ๊ฒ€์‚ฌ ์ˆ˜ํ–‰

๐ŸŽ“ ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ

2021๋…„ Log4Shell ์ทจ์•ฝ์ ์ด ์ „ ์„ธ๊ณ„ ์ˆ˜๋งŽ์€ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ ๊ฒƒ์„ ๋ณด๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒ์ง€ ๋„๊ตฌ์˜ ํ•„์š”์„ฑ์„ ๋А๊ปด ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ

  • ๋ณด์•ˆ ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ ํƒ์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„
  • Python ํŒจํ‚ค์ง€ ๊ฐœ๋ฐœ ๋ฐ CLI ๋„๊ตฌ ์„ค๊ณ„
  • ์ •๊ทœํ‘œํ˜„์‹์„ ํ™œ์šฉํ•œ ์ •๊ตํ•œ ํŒจํ„ด ๋งค์นญ
  • PyPI ๋ฐฐํฌ ๋ฐ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ
  • ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ์„ค๊ณ„ ์›์น™

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

# ์ €์žฅ์†Œ ๋ณต์ œ
git clone https://github.com/vanillacustardcream/static-log4shell.git
cd static-log4shell

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python -m venv venv
source venv/bin/activate  # Linux/macOS
# venv\Scripts\activate   # Windows

# ๊ฐœ๋ฐœ ๋ชจ๋“œ ์„ค์น˜
pip install -e .

# ํ…Œ์ŠคํŠธ ์‹คํ–‰
static-log4shell --help

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋˜์–ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

static_log4shell-0.2.5.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

static_log4shell-0.2.5-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file static_log4shell-0.2.5.tar.gz.

File metadata

  • Download URL: static_log4shell-0.2.5.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for static_log4shell-0.2.5.tar.gz
Algorithm Hash digest
SHA256 8b1be853990f2586b6a798ecd7d5bd0d26830403782bd43337917015cc90bbb5
MD5 1417eb5b73c4143f673bbe82b98ceaa9
BLAKE2b-256 cc465a45645d39e12b445a31cd6cd0bcf54e35bae6a1ef0bad2881168593614a

See more details on using hashes here.

File details

Details for the file static_log4shell-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for static_log4shell-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 cc463198cd03af0aefd5eee2f9e348005dc05c398c824184b39f96545c0f5203
MD5 ddb57d2c5b1780ce4f7603e5d8b55339
BLAKE2b-256 5d45d5c39ce682da7deebf69e1e02573c392d9ba8de8a82385d746ffbfcb8dc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page