Skip to main content
Glama

UnrealBlueprintMCP

by BestDev
SECURITY.md5.93 kB
# Security Features - UnrealBlueprintMCP 이 문서는 UnrealBlueprintMCP 프로젝트에 구현된 보안 기능과 수정된 취약점들을 설명합니다. ## 보안 취약점 수정 완료 ### 1. OpenAI API 키 하드코딩 제거 ✅ **문제**: API 키가 소스코드에 직접 하드코딩되어 있었음 **수정사항**: - 환경변수 사용으로 변경 (`OPENAI_API_KEY`) - `.env` 파일 지원 추가 (python-dotenv) - API 키 유효성 검증 구현 - 키 누락 시 명확한 에러 메시지 제공 **영향받은 파일**: - `/examples/advanced/config.py` - `/examples/advanced/langchain_integration/nl_blueprint_generator.py` - `/requirements.txt` (python-dotenv 추가) - `/.env.example` (새로 생성) **구현된 보안 검증**: ```python def validate_openai_api_key() -> bool: """Validate OpenAI API key format and presence""" if not OPENAI_API_KEY: return False if not OPENAI_API_KEY.startswith('sk-') or len(OPENAI_API_KEY) < 20: return False return True ``` ### 2. 입력 검증 레이어 구현 ✅ **문제**: 사용자 입력값이 검증 없이 WebSocket으로 전송됨 **수정사항**: - 포괄적인 보안 유틸리티 모듈 생성 (`security_utils.py`) - Pydantic 모델에 보안 검증 통합 - JSON-RPC 매개변수 sanitization - WebSocket 메시지 크기 제한 **새로 생성된 파일**: - `/security_utils.py` - 보안 검증 유틸리티 - `/tests/test_security.py` - 보안 테스트 스위트 **구현된 보안 기능**: #### Blueprint 이름 검증 ```python BLUEPRINT_NAME_PATTERN = re.compile(r'^[A-Za-z][A-Za-z0-9_]*$') ``` - 영문자로 시작, 영숫자+언더스코어만 허용 - 최대 64자 길이 제한 - 예약어 방지 #### Asset 경로 검증 ```python ASSET_PATH_PATTERN = re.compile(r'^/Game/[A-Za-z0-9_/]+/$') ``` - `/Game/`으로 시작 강제 - 디렉토리 트래버설 방지 (`..` 탐지) - 위험한 문자 차단 (`<`, `>`, `|`, `?`, `*` 등) #### Property 값 sanitization - HTML 이스케이핑으로 XSS 방지 - 위험한 패턴 탐지 (`<script>`, `javascript:`, `eval()` 등) - 최대 길이 제한 (기본 1024자) #### Parent 클래스 화이트리스트 ```python VALID_PARENT_CLASSES = { "Actor", "Pawn", "Character", "ActorComponent", "SceneComponent", "UserWidget", "Object", "StaticMeshActor", "GameModeBase", "PlayerController", "GameState", "PlayerState" } ``` ### 3. 추가 보안 강화 ✅ **WebSocket 메시지 크기 제한**: - 기본 1MB 제한으로 DoS 공격 방지 - 사용자 정의 크기 제한 지원 **JSON-RPC 매개변수 Sanitization**: - 모든 문자열 값에 HTML 이스케이핑 적용 - 키 이름 검증 (영숫자+언더스코어만 허용) - 안전한 데이터 타입만 전송 **URL 검증**: - WebSocket 프로토콜만 허용 (`ws://`, `wss://`) - 유효한 hostname 검증 ## 보안 테스트 ### 테스트 실행 ```bash cd mcp_server_env source bin/activate python -m pytest tests/test_security.py -v ``` ### 테스트 커버리지 - ✅ 22개 보안 테스트 통과 - Blueprint 이름 검증 (4개 테스트) - Property 검증 (4개 테스트) - Asset 경로 검증 (3개 테스트) - Parent 클래스 검증 (2개 테스트) - XSS 방지 (2개 테스트) - Path traversal 방지 (1개 테스트) - JSON-RPC sanitization (1개 테스트) - WebSocket 보안 (2개 테스트) - Pydantic 통합 (3개 테스트) ## 환경 설정 ### .env 파일 설정 ```bash # .env.example을 .env로 복사 cp .env.example .env # API 키 설정 OPENAI_API_KEY=sk-your-actual-api-key-here ``` ### 의존성 설치 ```bash pip install python-dotenv ``` ## 보안 가이드라인 ### 개발자를 위한 권장사항 1. **API 키 관리**: - 절대 하드코딩하지 말 것 - `.env` 파일을 `.gitignore`에 포함 - 환경변수로만 관리 2. **입력 검증**: - 모든 사용자 입력은 `security_utils.py`의 함수로 검증 - Pydantic 모델의 field_validator 사용 - 화이트리스트 방식으로 허용 값 제한 3. **에러 처리**: - 보안 관련 에러는 명확한 메시지 제공 - 민감한 정보 노출 방지 - 적절한 로깅 4. **테스트**: - 새로운 입력 필드 추가 시 보안 테스트 작성 - 공격 벡터를 고려한 테스트 케이스 포함 ## 보안 체크리스트 ### 배포 전 확인사항 - [ ] API 키가 하드코딩되지 않았는지 확인 - [ ] 모든 사용자 입력에 검증이 적용되는지 확인 - [ ] 보안 테스트가 통과하는지 확인 - [ ] `.env` 파일이 `.gitignore`에 포함되어 있는지 확인 - [ ] 에러 메시지에 민감한 정보가 포함되지 않는지 확인 ### 정기 보안 점검 - [ ] 의존성 취약점 스캔 (`pip audit`) - [ ] 새로운 공격 벡터 확인 - [ ] 로그 모니터링 - [ ] 접근 패턴 분석 ## 알려진 제한사항 1. **WebSocket Deprecation**: - 현재 websockets 라이브러리가 deprecated API 사용 - 향후 업데이트에서 최신 API로 마이그레이션 필요 2. **Rate Limiting**: - 현재 구현되지 않음 - 향후 버전에서 API 호출 빈도 제한 추가 예정 ## 버전 히스토리 ### v2.1.0 (2025-09-17) - ✅ OpenAI API 키 하드코딩 제거 - ✅ 포괄적인 입력 검증 레이어 구현 - ✅ XSS 및 Path Traversal 방지 - ✅ 22개 보안 테스트 추가 - ✅ .env 파일 지원 추가 ## 문의 및 신고 보안 취약점 발견 시: 1. GitHub Issues에 "Security" 라벨로 신고 2. 민감한 취약점은 비공개로 연락 3. 보안 패치는 최우선으로 처리 --- **보안은 지속적인 과정입니다. 정기적인 점검과 업데이트를 통해 안전한 개발 환경을 유지하세요.**

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BestDev/unreal_bp_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server