Skip to main content
Glama
README.md
# 🚨 μ·¨μ•½ν•œ MCP μ„œλ²„ - λ³΄μ•ˆ ꡐ윑용 데λͺ¨

⚠️ **κ²½κ³ : 이 μ„œλ²„λŠ” ꡐ윑 λͺ©μ μœΌλ‘œλ§Œ μ„€κ³„λ˜μ—ˆμœΌλ©°, μ‹€μ œ 운영 ν™˜κ²½μ—μ„œλŠ” μ ˆλŒ€ μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”!**

## κ°œμš”

이 ν”„λ‘œμ νŠΈλŠ” MCP (Model Context Protocol) μ„œλ²„μ˜ 일반적인 λ³΄μ•ˆ 취약점듀을 μ‹œμ—°ν•˜κ³ , μ•ˆμ „ν•œ 개발 방법을 κ΅μœ‘ν•˜κΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

## ν¬ν•¨λœ 취약점듀

1. **λͺ…λ Ήμ–΄ μ£Όμž… (Command Injection)** - `execute_system_command`
2. **경둜 순회 곡격 (Path Traversal)** - `read_file_content`, `write_file_content`
3. **비직렬화 곡격 (Deserialization)** - `process_pickled_data`
4. **SQL μΈμ μ…˜** - `search_user_database`
5. **λ―Όκ°ν•œ 정보 λ…ΈμΆœ** - `get_system_info`
6. **μ„œλΉ„μŠ€ κ±°λΆ€ 곡격 (DoS)** - `generate_large_data`
7. **μž„μ‹œ 파일 λ³΄μ•ˆ** - `create_temp_file`
8. **LDAP μΈμ μ…˜** - `ldap_search_simulation`
9. **XML μ™ΈλΆ€ μ—”ν‹°ν‹° (XXE)** - `parse_xml_unsafe`

## μ„€μΉ˜ 및 μ‹€ν–‰

### 1. μ˜μ‘΄μ„± μ„€μΉ˜
```bash
# uv μ‚¬μš© (ꢌμž₯)
uv sync

# λ˜λŠ” pip μ‚¬μš©
pip install -e .
```

### 2. μ„œλ²„ μ‹€ν–‰
```bash
# 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰
uv run dev

# λ˜λŠ” μ‹€ν–‰ 슀크립트 μ‚¬μš©
python run_server.py
```

### 3. λŒ€ν™”ν˜• ν…ŒμŠ€νŠΈ
```bash
# λŒ€ν™”ν˜• ν”Œλ ˆμ΄κ·ΈλΌμš΄λ“œ
uv run playground
```

## 취약점 ν…ŒμŠ€νŠΈ

취약점을 μ•ˆμ „ν•˜κ²Œ ν…ŒμŠ€νŠΈν•΄λ³΄λ €λ©΄:

```bash
# 취약점 ν…ŒμŠ€νŠΈ 슀크립트 μ‹€ν–‰
python test_vulnerabilities.py
```

## ꡐ윑 자료

- [`SECURITY_DEMO.md`](SECURITY_DEMO.md) - μƒμ„Έν•œ 취약점 μ„€λͺ…κ³Ό 곡격 μ‹œλ‚˜λ¦¬μ˜€
- [`test_vulnerabilities.py`](test_vulnerabilities.py) - 취약점 ν…ŒμŠ€νŠΈ 슀크립트
- [`src/character_counter/server.py`](src/character_counter/server.py) - μ·¨μ•½ν•œ μ„œλ²„ κ΅¬ν˜„

## ν•™μŠ΅ λͺ©ν‘œ

이 ν”„λ‘œμ νŠΈλ₯Ό 톡해 λ‹€μŒμ„ ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

1. 일반적인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 취약점듀이 MCP μ„œλ²„μ—μ„œ μ–΄λ–»κ²Œ λ‚˜νƒ€λ‚˜λŠ”μ§€
2. 각 μ·¨μ•½μ μ˜ 곡격 벑터와 영ν–₯도
3. μ•ˆμ „ν•œ μ½”λ”© 방법과 λ°©μ–΄ 기법
4. λ³΄μ•ˆ ν…ŒμŠ€νŠΈ 및 감사 방법

## μ‹€μŠ΅ 과제

1. **취약점 뢄석**: 각 λ„κ΅¬μ˜ 취약점을 μ‹λ³„ν•˜κ³  곡격 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μž‘μ„±ν•˜μ„Έμš”
2. **μ•ˆμ „ν•œ κ΅¬ν˜„**: μ·¨μ•½ν•œ κΈ°λŠ₯λ“€μ˜ μ•ˆμ „ν•œ 버전을 κ΅¬ν˜„ν•΄λ³΄μ„Έμš”
3. **λ³΄μ•ˆ ν…ŒμŠ€νŠΈ**: κ΅¬ν˜„ν•œ μ•ˆμ „ν•œ 버전을 ν…ŒμŠ€νŠΈν•΄λ³΄μ„Έμš”
4. **κ°€μ΄λ“œλΌμΈ μž‘μ„±**: 쑰직의 MCP μ„œλ²„ λ³΄μ•ˆ κ°€μ΄λ“œλΌμΈμ„ μž‘μ„±ν•΄λ³΄μ„Έμš”

## λ³΄μ•ˆ 원칙

MCP μ„œλ²„ 개발 μ‹œ λ‹€μŒ 원칙을 λ”°λ₯΄μ„Έμš”:

1. **μ΅œμ†Œ κΆŒν•œ 원칙**: ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ κΆŒν•œλ§Œ λΆ€μ—¬
2. **μž…λ ₯ 검증**: λͺ¨λ“  μ‚¬μš©μž μž…λ ₯을 κ²€μ¦ν•˜κ³  μƒˆλ‹ˆνƒ€μ΄μ¦ˆ
3. **μƒŒλ“œλ°•μŠ€ μ‚¬μš©**: 격리된 ν™˜κ²½μ—μ„œ μ‹€ν–‰
4. **정기적인 λ³΄μ•ˆ 감사**: μ½”λ“œμ™€ 섀정을 μ •κΈ°μ μœΌλ‘œ κ²€ν† 
5. **λ³΄μ•ˆ μ—…λ°μ΄νŠΈ**: μ˜μ‘΄μ„±μ„ μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€

## κ²½κ³  및 λ©΄μ±… μ‘°ν•­

⚠️ **이 ν”„λ‘œμ νŠΈλŠ” 였직 ꡐ윑 λͺ©μ μœΌλ‘œλ§Œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.**

- μ‹€μ œ 운영 ν™˜κ²½μ—μ„œλŠ” μ ˆλŒ€ μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”
- λ¬΄λ‹¨μœΌλ‘œ νƒ€μΈμ˜ μ‹œμŠ€ν…œμ— λŒ€ν•΄ ν…ŒμŠ€νŠΈν•˜μ§€ λ§ˆμ„Έμš”
- 취약점을 μ•…μš©ν•˜μ—¬ λΆˆλ²•μ μΈ ν–‰μœ„λ₯Ό ν•˜μ§€ λ§ˆμ„Έμš”
- μ‚¬μš©μžλŠ” 이 μ½”λ“œμ˜ μ‚¬μš©μ— λŒ€ν•œ λͺ¨λ“  μ±…μž„μ„ μ§‘λ‹ˆλ‹€

## λΌμ΄μ„ΌμŠ€

이 ν”„λ‘œμ νŠΈλŠ” ꡐ윑 λͺ©μ μœΌλ‘œλ§Œ μ œκ³΅λ©λ‹ˆλ‹€. 상업적 μ‚¬μš©μ„ κΈˆμ§€ν•©λ‹ˆλ‹€.