가장 최신 버전 Nginx Proxy Manager에서도 코드 인젝션 취약점이 존재합니다.
작년 5월 즈음에 발견되어 이슈로 올라온 내용입니다.
가장 최근 업데이트에서도 보안 픽스가 적용되지 않았고 유저들이 올해 1월
취약점 CNA에 취약점 번호를 신청해 승인되었습니다.
권한 목록을 수정할 때 수정 항목의 username과 password를 escape처리하지 않아 생기는 취약점으로
해당 API를 이용하려면 그 이전에 이미 접근 권한을 필요로 하지만
이를 이용해서 NPM컨테이너나 (네이티브 환경이라면) 호스트 서버에서
임의의 shell 스크립트 실행으로 권한을 획득할 수 있고
NPM의 API는 권한 확인 방법으로 JWT를 사용하는데
임의로 서버단에서 로그아웃 처리가 불리한 JWT 특성상 토큰이 탈취되면(NPM의 기본 토큰 만료기간은 하루)
서버(혹은 컨테이너)가 보안에 취약한 환경에 놓이기 쉽습니다.
단순히 개인 사용 목적으로 NPM을 사용하는 환경에서는 큰 문제가 없을 수 있고
대부분 컨테이너로 사용하시기 때문에 현실적인 위협은 없을거라 판단합니다만,
입력 내용의 escape처리만 시켜주면 되는 간단한 패치만으로도 보완할 수 있는 취약점인데
이슈가 올라온 이후의 업데이트에서도 해당 내용은 고쳐지지 않는 걸 보면
NPMv3 으로 마이그레이션 하면 내부 코드는 싹 다 바뀔테니 굳이 해결할 필요가 없다고 생각하는 것 같은데
수정 활동이 활발한 Traefik같은 대체재를 알아봐야하나 싶네요
트래픽이 파일에서 설정하는것만 잘해줘도 쓸텐데..
트래픽은 독커 컴포즈 야믈 파일의 라벨에서 설정하는 것과 파일에서 설정하는게 연동이 안됩니다.
트래픽은 독커 라벨에서 설정한것을 바꾸려면 컨테이너 재시작이 필요하고(레이블 변경 후 dcupd 하면 재생성합니다)
파일에서 바꾸는 것은 즉시 반영 됩니다.
컨테이너가 실행되면 특정 라우터 같은게 활성화 되고
그 라우터 설정은 파일에서 하면 좋은데..
그게 안되요.
file run의 접속 도메인을 바꾸면
npm은 즉시 반영되지만
트래픽은 filerun 컨테이너가 종료 삭제 생성 실행된 후에 반영됩니다.
파일에서 라우터랑 미들웨어 설정하고
파일에서 설정한 라우터와 미들웨어를 간단하게 켜고 끄는 것만 독커 컴포즈에 넣고 싶습니다.
지금은 될지 모르겠지만, 1년 반? 2년 쯤 전엔 그게 안되서 저는 npm으로 돌아왔어요.
뭘 바꾸려고 하면 컨테이너 종료 삭제 생성 실행을 해야 합니다.
트래픽에서만 되는 기능을 쓸생각 없다면 npm이 압도적으로 편하다고 생각했었죠..
이 보안 이슈도 컨테이너에서는 큰 문제 안되는 것 같아보이구요.
jwt? 이거 컨테이너 지울때마다 생성되는거고..
그닥 위험한 보안 문제는 아닌듯 합니다.
저는 그 불편한 트래픽을 써가면서 이 보안 이슈를 피할 필요성이 느껴지진 않네요.
트래픽이 워낙 불편해서..
일단.. 라우터는 내가 원하는 모든 컨테이너에 대해 만들어둬야 합니다
설령 그 컨테이너가 이제는 더 이상 안쓰일지라도..
맞아요.
그게 문제인거죠.
docker-compose.yml 수정을 가져와야 하는데.. 내부 설정 파일만 모니터링이 되요.
docker는 container 스펙을 가져오다보니 docker를 중지 삭제 생성 실행 해야 반영이 됩니다.
독커 레이블을 안쓰면 독커와 상관 없이 항상 라우터가 존재해야죠.
그럴거면 npm이죠.
어차피 접근 권한이 있어야 뚫릴 보안 취약점 때문에 독커를 쓰면서 굳이 쓸 이유가 없는것이죠.
스케일 아웃을 해야하는 kubernetes면 필요하겠지만요..
관리콘솔을 내부에서만 붙게한다는 조건에서는 괜찮긴하지만 결국 CVE까지 나왔군요 그럼 패치해주겠죠...??
Trafik은 난이도가 너무...ㅠㅠ
cmt alert