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 ๋ฒ„์ „ ์ž๋™ ํƒ์ง€ ๋ฐ ์ทจ์•ฝ์  ์—ฌ๋ถ€ ํŒ๋‹จ
  • ์ปจํ…์ŠคํŠธ ๋ถ„์„: ์ •๊ตํ•œ ํŒจํ„ด ๋งค์นญ์œผ๋กœ ์ •ํ™•๋„ ํ–ฅ์ƒ

๐Ÿ“Š ์ง๊ด€์ ์ธ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ

  • ์ƒ์„ธํ•œ ๋ถ„์„: ํŒŒ์ผ๋ณ„ ์ทจ์•ฝ์  ์ •๋ณด ๋ฐ ์œ„ํ—˜๋„ ํ‰๊ฐ€
  • JSON ์ถœ๋ ฅ: ์ž๋™ํ™” ๋„๊ตฌ ์—ฐ๋™์„ ์œ„ํ•œ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ
  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ: ๊ตฌ์ฒด์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ œ์‹œ

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

์„ค์น˜

PyPI์—์„œ ์„ค์น˜

pip install static-log4shell

ํ…Œ์ŠคํŠธ ๋ฒ„์ „ (๊ฐœ๋ฐœ ์ค‘)

pip install -i https://test.pypi.org/simple/ 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 ๋ณด์•ˆ ์Šค์บ” ์‹œ์ž‘: ./spring-boot-project
============================================================
๐Ÿ“‚ ํŒŒ์ผ ์Šค์บ” ์ง„ํ–‰ ์ค‘...
    > ๋ถ„์„ ์ค‘: UserController.java...

โœ… ์Šค์บ” ์™„๋ฃŒ: 847๊ฐœ ํŒŒ์ผ ๊ฒ€์‚ฌ

๐Ÿ“Š ์Šค์บ” ๊ฒฐ๊ณผ ์š”์•ฝ
----------------------------------------
  ๐Ÿ“… ์Šค์บ” ์‹œ๊ฐ„: 2024-12-31 15:30:25
  ๐Ÿ“ ์Šค์บ” ํŒŒ์ผ: 847๊ฐœ
  โ˜• Java ๋ฒ„์ „: 11
  ๐Ÿ“š Log4j ๋ฒ„์ „: 2.14.1 (์ทจ์•ฝํ•จ)
  ๐Ÿ›ก๏ธ  ๋ฐฉ์–ด ์ ์ˆ˜: 25/100์ 
  โš ๏ธ  ์œ„ํ—˜๋„: ๐Ÿ”ด ๋†’์Œ (์ฆ‰์‹œ ์กฐ์น˜ ํ•„์š”)
  ๐Ÿ” ๋ฐœ๊ฒฌ์‚ฌํ•ญ: 3๊ฐœ

๐Ÿ“‹ ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ :
1. [๐Ÿ”ด HIGH] JAR ํŒŒ์ผ ์ทจ์•ฝ์ 
   ๐Ÿ“ /lib/log4j-core-2.14.1.jar
   ๐Ÿ“‹ Log4Shell ์ทจ์•ฝ ๋ฒ„์ „ ํƒ์ง€

2. [๐ŸŸ  MEDIUM] ์†Œ์Šค์ฝ”๋“œ ์œ„ํ—˜ ํŒจํ„ด  
   ๐Ÿ“ /src/UserController.java
   ๐Ÿ“‹ ์™ธ๋ถ€ ์ž…๋ ฅ์ด ๋กœ๊ฑฐ๋กœ ์ง์ ‘ ์ „๋‹ฌ๋จ

3. [๐ŸŸก LOW] ๋นŒ๋“œ ์„ค์ • ๊ฐœ์„  ํ•„์š”
   ๐Ÿ“ /pom.xml  
   ๐Ÿ“‹ Log4j ์˜์กด์„ฑ ๋ฒ„์ „ ๋ช…์‹œ ๊ถŒ์žฅ

๐Ÿ’ก ๊ถŒ์žฅ ์กฐ์น˜์‚ฌํ•ญ:
  1. ๐Ÿ”ฅ ๊ธด๊ธ‰: Log4j๋ฅผ 2.17.1 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
  2. โšก ์ž„์‹œ์กฐ์น˜: JVM ์˜ต์…˜ -Dlog4j2.formatMsgNoLookups=true ์ ์šฉ
  3. ๐Ÿ”ง ๋ณด์™„: ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ๋กœ์ง ์ถ”๊ฐ€
  4. ๐Ÿ“‹ ๋ชจ๋‹ˆํ„ฐ๋ง: ์ •๊ธฐ์ ์ธ ๋ณด์•ˆ ์Šค์บ” ์ˆ˜ํ–‰

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

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

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

  • 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 "๋ณด์•ˆ ๊ฒ€์‚ฌ ํ†ต๊ณผ"

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

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 ๋ผ์ด์„ ์Šค](LICENSE) ํ•˜์— ๋ฐฐํฌ๋˜์–ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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.1.0.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.1.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: static_log4shell-0.1.0.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.1.0.tar.gz
Algorithm Hash digest
SHA256 2f973901211547a7a3dcad7352421407bc3d119c4bbbdbfec40a5870bc92172a
MD5 ac32d832c889b316e5eb2bf67a9097b1
BLAKE2b-256 522d39b8850034ca0729b655a6bac2ca1148fcc671898bb11592cdd48dbb7e75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for static_log4shell-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e898e8867b43eaaaa1590f07cf704402cc59a396b8a55e9d16dfd3b6d01cd494
MD5 4901dacca7f2ad9081a3bee898a7f255
BLAKE2b-256 3216b33213dd66d9713ae35dfefe7c5fe1bb443eed75402a706d3ad83cd94c15

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