공급망 공격(Supply Chain Attack)란?

표적 조직을 직접 공격하는 것이 아니라, 그 조직이 사용하는 소프트웨어나 부품, 위탁처 등 공급의 흐름(공급망)의 약한 곳을 공격하여 간접적으로 침입하는 공격. 정규 업데이트 프로그램에 대한 부정한 코드의 혼입, 오픈 소스 패키지의 탈취나 비슷한 이름의 부정한 패키지, IT 위탁처를 경유한 침입 등이 있다. 2020년에 드러난 SolarWinds사 사건에서는 정규 서명이 붙은 업데이트를 통해 많은 조직으로 피해가 확산되었다. 하드웨어에서는 제조 도중에 부정한 회로를 추가하는 하드웨어 트로이 목마도 이런 종류의 위협에 포함된다.

일본어 명칭: サプライチェーン攻撃

공급망 공격(Supply Chain Attack)은(는) 사이버 공격과 방어의 실무 등 1개 분야의 연습 문제 2개에 나와요.

분야: 사이버 공격과 방어의 실무

도전해 보기: 공급망 공격(Supply Chain Attack) 관련 문제

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

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

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

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

2020년 12월에 드러난 SolarWinds사 사건에서는 IT 관리용 소프트웨어의 빌드 환경에 공격자가 들어와 정규 업데이트 프로그램에 부정한 코드가 섞여 들어갔다. 이 업데이트는 개발사의 정규 코드 서명이 붙은 상태로 배포되었다. 이 사건에서 얻을 수 있는 교훈으로 가장 적절한 것은?

  1. A코드 서명이 올바른 업데이트 프로그램에는 부정한 코드가 포함되지 않으므로, 사용자는 서명을 확인하면 충분하다
  2. B업데이트 프로그램은 위험하므로 보안 수정을 포함하여 소프트웨어는 일절 업데이트하지 않도록 한다
  3. C코드 서명은 누가 서명했는지와 서명 후 변조 여부를 나타낼 뿐이므로, 개발사는 빌드 환경을 지키고 사용자는 신뢰하는 소프트웨어의 행위도 감시한다
정답과 해설 보기

정답: C. 코드 서명은 누가 서명했는지와 서명 후 변조 여부를 나타낼 뿐이므로, 개발사는 빌드 환경을 지키고 사용자는 신뢰하는 소프트웨어의 행위도 감시한다

코드 서명은 서명한 자가 누구인지와 서명 후에 내용이 바뀌지 않았음을 확인하는 구조로, 서명 전에 섞여 들어간 부정한 코드는 식별할 수 없습니다. 소프트웨어 공급망 공격의 대표적인 예인 SolarWinds사 사건에서는 빌드 도중에 부정한 코드가 추가되었기 때문에, 서명이 붙은 정규 업데이트로서 많은 조직에 전달되었습니다. 2024년 3월에 드러난 xz-utils의 백도어에서도 오랜 기간에 걸쳐 개발자로서 신뢰를 얻은 인물이 배포용 파일에 부정한 코드를 숨겨 넣었습니다. 개발사는 빌드 환경을 분리하여 지키고 소스부터 빌드까지의 출처 이력을 기록하여 검증하며, 사용자는 신뢰하는 소프트웨어라도 수상한 통신이나 행위를 EDR 등으로 감시하는 것이 중요합니다.

해설 속 공급망 공격(Supply Chain Attack)

공급망 공격(Supply Chain Attack)이(가) 나오는 문제 (2)

  1. 어떤 기업은 사내 패키지 저장소(프라이빗 레지스트리)에 사내 전용 라이브러리 acme-utils를 두고 사용하고 있다. 공격자가 공개 패키지 저장소에 같은 이름 acme-utils로 더 큰 버전 번호의 패키지를 등록했더니, 빌드 설정에 따라서는 사내 빌드 환경이 공격자의 패키지를 가져와 버린다는 것이 밝혀졌다. 이 '의존성 혼동(dependency confusion)'에 대한 대책으로 가장 적절한 것은?
  2. 2020년 12월에 드러난 SolarWinds사 사건에서는 IT 관리용 소프트웨어의 빌드 환경에 공격자가 들어와 정규 업데이트 프로그램에 부정한 코드가 섞여 들어갔다. 이 업데이트는 개발사의 정규 코드 서명이 붙은 상태로 배포되었다. 이 사건에서 얻을 수 있는 교훈으로 가장 적절한 것은?

관련 용어

EDR(엔드포인트 탐지 및 대응) 디지털 포렌식(Digital Forensics) 보안 관제 센터(Security Operations Center) 사이버 킬 체인(Cyber Kill Chain) 인시던트 대응 제로 트러스트 측면 이동(Lateral Movement) 침입 탐지 시스템(IDS) 침투 테스트(Penetration Testing) IoC(침해 지표)

용어집으로 돌아가기