제목

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 개발자 및 DevOps 엔지니어
  • 중간~고급 수준의 이해가 필요 (컨테이너 보안, 코드 검증, 인증 프로토콜 등)

핵심 요약

  • MCP 서버 사용 시 보안 위험 : npx 또는 uvx 명령어를 통해 실행되는 서드파티 MCP 서버는 시스템에 악의적인 코드가 삽입될 수 있음 (예: 타이포스쿼팅, 빌드 시스템 침해).
  • Sigstore와 GitHub Attestations의 역할 :

- Sigstore : 장기적인 암호화 키 대신 GitHub/Google ID 기반의 임시 인증서를 사용하여 코드 서명.

- GitHub Attestations : GitHub Actions에서 생성된 소스 코드, 빌드 워크플로우, 빌드 시간/위치 정보를 기록.

  • ToolHive의 주요 기능 :

- 컨테이너 기반 보안 (최소 권한 부여), 검증된 레지스트리, 기업 규칙 적용.

- 이미지 검증 옵션 (--image-verification=disabled, warn, enabled).

섹션별 세부 요약

1. MCP 서버의 보안 문제

  • 위험 요소 :

- npx, uvx, pip 명령어로 설치된 서드파티 서버는 악의적인 코드가 포함될 수 있음.

- 타이포스쿼팅, 유지자 계정 해킹, 빌드 시스템 침해 등으로 인한 공격 가능성.

  • 예시 공격 시나리오 :

- @modelcontextportocol/github-mcp-server와 같은 잘못된 패키지 이름으로 토큰 도용.

- 유지자 계정 유출로 인한 악의적 업데이트.

2. Sigstore와 GitHub Attestations의 해결책

  • Sigstore 기능 :

- 장기 암호화 키 대신 ID 기반 임시 인증서 사용.

- 서명 정보를 불변의 투명도 로그에 기록하여 위변조 방지.

  • GitHub Attestations 기능 :

- GitHub Actions에서 생성된 소스 코드, 워크플로우, 빌드 시간/위치 정보 기록.

- 소프트웨어 출처 및 빌드 과정의 신뢰성 검증.

3. ToolHive의 구현 방식

  • 핵심 기능 :

- 하나의 명령어 배포 : thv run github로 빠른 설치.

- 컨테이너 기반 보안 : 최소 권한 부여된 컨테이너 실행.

- 검증된 레지스트리 : 유지자 검증된 MCP 서버만 포함.

- 기업용 기능 : 세부 권한 관리, 비밀 관리, Kubernetes 통합.

  • 이미지 검증 프로세스 :
  1. 컨테이너 이미지의 암호화 지문 추출.
  2. 특정 이미지와 연관된 서명 및 인증 정보 검색.
  3. 신뢰할 수 있는 CA에 서명 검증.
  4. 빌드 출처와 워크플로우 일치 여부 확인.
  5. 검증 결과에 따라 배포 허용/경고/차단 결정.

4. Attestation의 구조 및 활용

  • Attestation 구성 요소 :

- Subject : 인증이 적용된 소프트웨어 (예: 컨테이너 이미지).

- Predicate : 소프트웨어에 대한 주장 (예: 빌드 출처, SBOM, 보안 검사 결과).

  • 활용 사례 :

- 빌드 출처 검증, SBOM 생성, 보안 검사 결과 기록.

- 공개/프라이빗 레포지토리에서 Sigstore 인프라 사용 가능.

5. 실무 적용 효과 및 미래 방향

  • 실무 적용 효과 :

- 공급망 공격 사전 차단 (출처 검증).

- 컨테이너 이미지 조작 감지 (암호화 검증).

- 조직 정책 강제 적용 (신뢰 가능한 출처 제한).

  • 향후 방향 :

- MCP 생태계의 보안 표준 확대.

- ToolHive 레지스트리에 등록 시 기준 마련 및 유지자 권장 사항 공유.

결론

  • 핵심 팁 :

- ToolHive의 --image-verification=enabled 옵션을 사용하여 컨테이너 출처 검증 강화.

- Sigstore와 GitHub Attestations를 통한 인증 정보 기록빌드 출처 검증이 보안의 핵심.

- "ToolHive" 공식 레지스트리에서 검증된 MCP 서버만 사용하여 위험 최소화.

  • 구현 예시 :

- thv run --image-verification=enabled github 명령어로 검증된 이미지만 실행.

- { "provenance": { "sigstore_url": "tuf-repo-cdn.sigstore.dev", "repository_uri": "..." } } 형식의 메타데이터로 레지스트리 구성.