🇰🇷 한글 설명
Skipper는 HTTP 라우터 및 리버스 프록시로, 서비스 구성에 사용됩니다. 버전 0.24.0 이전에는 Skipper를 Ingress 컨트롤러로 실행할 때, Ingress와 ExternalName 타입의 서비스를 생성할 수 있는 사용자는 내부 서비스에 접근할 수 있는 라우트를 생성할 수 있습니다. 버전 0.24.0에서는 기본적으로 Kubernetes ExternalName을 비활성화합니다.
💡 쉬운 설명
Skipper를 사용하는 시스템에서, 사용자 권한이 있는 경우 내부 서비스에 접근할 수 있는 라우트를 생성할 수 있습니다. 버전 0.24.0 이전의 버전에서는 이 문제가 발생합니다. 버전 0.24.0에서는 이 문제가 해결되었습니다.
🇺🇸 원문 (English)
Skipper is an HTTP router and reverse proxy for service composition. Prior to version 0.24.0, when running Skipper as an Ingress controller, users with permissions to create an Ingress and a Service of type ExternalName can create routes that enable them to use Skipper's network access to reach internal services. Version 0.24.0 disables Kubernetes ExternalName by default. As a workaround, developers can allow list targets of an ExternalName and allow list via regular expressions.
📍 영향받는 시스템
Skipper 버전 0.24.0 이전
⚔️ 공격 벡터
Ingress와 ExternalName 타입의 서비스를 생성하여 내부 서비스에 접근
🛡️ 대응 방법
Skipper를 버전 0.24.0 이상으로 업데이트하거나, ExternalName을 비활성화하고 allow list를 설정합니다.
🔧 검증 코드
로컬 시스템에서 Skipper 버전을 확인하여 취약점 여부를 점검합니다. Python 3.x가 설치되어 있어야 합니다. 코드를 실행하기 전에, Skipper가 설치되어 있는지 확인합니다.
python -c "import subprocess; output = subprocess.check_output(['skipper', '--version']); if '0.24.0' <= output.decode('utf-8').strip(): print('{{"result": "양호", "reason": "Skipper 버전이 0.24.0 이상"}}'); else: print('{{"result": "취약", "reason": "Skipper 버전이 0.24.0 미만"}}')"