🇰🇷 한글 설명
Skipper는 HTTP 라우터 및 리버스 프록시입니다. 기본적으로 Skipper는 -lua-sources=inline,file로 설정되어 있습니다. 이 설정은 신뢰할 수 없는 사용자가 Lua 필터를 생성할 수 있을 때 문제가 발생합니다. 이 필터를 통해 사용자는 스킵퍼 프로세스가 접근할 수 있는 파일시스템을 읽을 수 있으며, 로그에 접근할 수 있다면 스킵퍼의 비밀을 읽을 수 있습니다. 이 취약점은 0.23.0 버전에서 수정되었습니다.
💡 쉬운 설명
Skipper의 기본 설정으로 인해 사용자가 Lua 필터를 생성하여 파일시스템을 읽을 수 있습니다. 로그에 접근할 수 있는 사용자는 스킵퍼의 비밀을 읽을 수 있습니다. 스킵퍼 버전을 0.23.0으로 업데이트하여 취약점을 수정할 수 있습니다.
🇺🇸 원문 (English)
Skipper is an HTTP router and reverse proxy for service composition. The default skipper configuration before 0.23.0 was -lua-sources=inline,file. The problem starts if untrusted users can create lua filters, because of -lua-sources=inline , for example through a Kubernetes Ingress resource. The configuration inline allows these user to create a script that is able to read the filesystem accessible to the skipper process and if the user has access to read the logs, they an read skipper secrets. This vulnerability is fixed in 0.23.0.
📍 영향받는 시스템
Skipper 버전 0.23.0 이전
⚔️ 공격 벡터
신뢰할 수 없는 사용자가 Lua 필터를 생성하여 파일시스템을 읽고 스킵퍼의 비밀을 읽는 방법
🛡️ 대응 방법
Skipper 버전을 0.23.0으로 업데이트하고, -lua-sources 설정을 변경하여 취약점을 수정
🔧 검증 코드
로컬 시스템에서 Python을 실행하여 Skipper 버전을 확인합니다. Skipper 버전이 0.23.0 이상이면 양호, 미만이면 취약으로 판단합니다.
python -c "import subprocess; output = subprocess.check_output(['skipper', '-version']).decode('utf-8'); if '0.23.0' in output: print('{"result": "양호", "reason": "Skipper 버전이 0.23.0 이상"}'); else: print('{"result": "취약", "reason": "Skipper 버전이 0.23.0 미만"}')"