사이버 공격과 방어의 실무

어떤 기업은 사내 패키지 저장소(프라이빗 레지스트리)에 사내 전용 라이브러리 acme-utils를 두고 사용하고 있다. 공격자가 공개 패키지 저장소에 같은 이름 acme-utils로 더 큰 버전 번호의 패키지를 등록했더니, 빌드 설정에 따라서는 사내 빌드 환경이 공격자의 패키지를 가져와 버린다는 것이 밝혀졌다. 이 '의존성 혼동(dependency confusion)'에 대한 대책으로 가장 적절한 것은?

  1. A사내 전용 라이브러리의 버전 번호를 작게 유지하여 공개 저장소에 있는 패키지와 구별하기 쉽게 해 둔다
  2. B사내 전용 패키지는 조직이 관리하는 네임스페이스에 두고 사내 저장소에서만 가져오도록 설정하며, 잠금 파일(lock file)로 버전과 해시값을 고정한다
  3. C공개 저장소의 패키지는 심사를 거쳐 신뢰할 수 있으므로, 어느 저장소에서 가져올지는 설정하지 않아도 된다
정답과 해설 보기

정답: B. 사내 전용 패키지는 조직이 관리하는 네임스페이스에 두고 사내 저장소에서만 가져오도록 설정하며, 잠금 파일(lock file)로 버전과 해시값을 고정한다

의존성 혼동은 소프트웨어 공급망 공격의 일종입니다. 패키지 관리 도구 중에는 여러 저장소를 참조하여 같은 이름이 있으면 버전 번호가 큰 쪽을 고르도록 설정된 것이 있으며, 공격자는 이를 악용하여 사내 이름과 같은 부정한 패키지를 가져오게 합니다. 대책은 사내 패키지에 조직이 관리하는 네임스페이스(스코프)를 사용하고, 그 네임스페이스를 사내 저장소에만 연결하여 어느 저장소에서 가져올지를 명시하는 것입니다. 나아가 잠금 파일로 의존하는 패키지의 버전과 해시값을 고정하면, 모르는 사이에 다른 것으로 바뀌는 것을 막을 수 있습니다. 공개 저장소에 조직의 네임스페이스를 먼저 등록해 두는 것도 사칭을 막는 데 도움이 됩니다.

이 분야 연습하기 분야로 돌아가기

사이버 공격과 방어의 실무의 다른 문제

  1. 2020년 12월에 드러난 SolarWinds사 사건에서는 IT 관리용 소프트웨어의 빌드 환경에 공격자가 들어와 정규 업데이트 프로그램에 부정한 코드가 섞여 들어갔다. 이 업데이트는 개발사의 정규 코드 서명이 붙은 상태로 배포되었다. 이 사건에서 얻을 수 있는 교훈으로 가장 적절한 것은?
  2. 클라우드의 오브젝트 스토리지에 둔 고객 정보 파일이 인터넷의 누구나 읽을 수 있는 상태였다는 것이 밝혀졌다. 이러한 정보 유출의 전형적인 원인과 재발을 막는 대책의 조합으로 적절한 것은?
  3. 클라우드에서 동작하는 배치 처리에, 모든 조작을 허가한 관리자 권한의 액세스 키(장기간 유효한 인증 정보)를 설정 파일에 적어 넘기고 있었다. 이 키가 유출되었을 때의 피해를 작게 하기 위한 재검토로 가장 적절한 것은?
  4. 공격자가 직원의 비밀번호를 입수하고 로그인을 수십 번 반복하여, 직원의 스마트폰에 승인을 요구하는 알림을 대량으로 보냈다. 직원은 귀찮아져서 그만 '승인'을 눌러 버렸다. 이 공격에 대한 대책으로 가장 적절한 것은?
  5. FIDO2(WebAuthn)의 패스키에 의한 인증이 일회용 비밀번호(OTP)와 비교하여 피싱에 강하다고 여겨지는 이유로 올바른 것은?