피드로 돌아가기
Dev.toSecurity
원문 읽기
Go Module Mirror 캐싱 취약점 해결을 위한 Hexagonal Architecture 도입
A Malicious Go Module Sat in the Mirror for 3 Years. Your go.sum Won't Save You
AI 요약
Context
Go Module Mirror의 불변 캐싱 정책을 악용한 Typosquatting 공격으로 인해 3년간 악성 코드가 유포된 사례 발생. Version Pinning과 go.sum 해시 검증만으로는 Mirror에 이미 캐싱된 악성 바이트를 차단할 수 없는 구조적 한계 노출.
Technical Solution
- Third-party 패키지의 직접 참조를 배제한 Domain Layer 중심의 설계 변경
- 외부 의존성을 Adapter 계층으로 격리하여 악성 코드의 실행 범위(Blast Radius)를 최소화
- Consumer-defined Interface를 통한 Port 정의로 외부 라이브러리와 도메인 로직 간 결합도 제거
- 외부 패키지 변경 시 도메인 전체가 아닌 특정 Adapter 파일만 영향받는 샌드박스 구조 구축
- 도메인 계층에서 Standard Library와 내부 패키지만 사용하도록 강제하는 Import Graph 제어
실천 포인트
1. Domain Layer 내 외부 패키지 Import 여부 전수 조사
2. Third-party 라이브러리를 래핑하는 전용 Adapter 계층 설계 및 구현
3. 인터페이스 정의 위치를 Provider가 아닌 Consumer(Domain) 측으로 이동
4. CI 단계에서 도메인 계층의 외부 의존성 유입을 차단하는 Lint 규칙 검토