오늘은 BOB 13기에 진행했던 블록체인 기반의 공급망 공격 탐지 툴 제작 프로젝트에 대해 알아볼 것입니다.

 

 

1. 주제 소개

블록체인은 각각의 블록에 담긴 데이터를 연결해 관리하는 기술을 의미합니다.

블록체인은 공급망의 투명성과 신뢰성을 높일 수 있는 강력한 해결책으로 유명합니다.

 

그 이유는 분산 원장 기술의 역할이 큽니다.

분산 원장 기술은 실시간으로 데이터를 공유하여 정보의 불변성을 보장하며, 복잡한 다단계 공급망에서 발생할 수 있는 오류, 부정 리스크를 줄이는 기술입니다.

또한 모든 거래 내역이 실시간으로 기록되며 변경이 불가능하도록 저장됩니다.

 

다른 이유로는 탈중앙화입니다.

하나의 중앙화된 신뢰 기관 없이도 다양한 참여자 간의 신뢰를 구축할 수 있으며 서로 직접적인 신뢰 관계가 없는 다양한 기업들로 구성된 글로벌 공급망에 이상적입니다.

 

블록체인 기반의 공급망 장점

  • 투명성 및 신뢰성 강화
    • 모든 거래를 변경할 수 없게 저장하므로, 데이터 조작, 부정행위 방지가 가능합니다.
    • 공급망 참여자들은 모두 동일한 정보를 공유하기에 하나의 블록에서 수정하더라도 다른 블록들은 수정되지 않습니다.
  • 실시간 추적 가능
    • 원산지에서 소비자에게 전달되기까지의 과정을 실시간으로 추적할 수 있습니다.
  • 비용 절감
    • 중개자 개입을 줄이고, 스마트 계약을 활용하여 자동화된 프로세스인 스마트 컨트랙스를 사용하여 비용을 절감할 수 있습니다.
  • 위조품 방지 및 품질 보장
    • 생산 이력, 유통 기록 모두 블록체인에 저장되어 위조품이 유통되는 것을 방지합니다.

 

이러한 이유로 소프트웨어 공급망도 블록체인을 활용하는 경우가 점차 늘고 있는 추세입니다.

 

블록체인 기반의 소프트웨어 공급망이 증가하면서 자연스럽게 공급망에 대한 공격도 증가하고 있습니다.

 

논문에 의하면 소프트웨어 공급망 공격 종류는 다음과 같습니다.

공격 종류 공격 방법
공개 SW 보안취약점 공개 SW 내 취약한 코드, 유해한 구성요소가 포함되어, 취약성이 공개SW를 사용하는 모든 SW에 전파됨
타사 의존성 공격자가 타사 SW(상용 SDK, 라이브러리 등)에 악성 코드를 삽입하여 운영 시스템을 침해
공용 리포지토리 공개 SW코드를 찾는 개발자를 목표로 GitHub 등 알려진 리포지토리 호스팅 서비스에 합법적인 SW 패키지와 유사한 이름을 가진 악성코드를 업로드
변환 시스템 개발 프로세스 자동화를 위한 CI/CD상의 중요코드, 리포지토리, 컨테이너 및 변환 서버를 침해하여 악성 코드로 교체
업데이트 가로채기 공격자가 SW 업데이트 과정을 침해하거나 업데이트 서버의 관리권한을 가로채어 악성코드를 삽입
내부 리포지토리 공격자가 기업 내부에서 사용중인 코드 저장소에 침입하여 악성 코드를 삽입
공급사 및 협력사 제 3자로부터 서비스를 제공받는 경우 타사 위험이 내부 시스템으로 전이

 

해당 공격을 포함한 다양한 공격에 대한 탐지 툴 제작 프로젝트로 예상됩니다.


2. 주제 선정 이유

선정 이유는 단순히 '재밌어 보여서' 선정하게 되었습니다.

최근 블록체인 기술에 관심도 있었고 소프트웨어 공급망 공격 사례도 궁금해져 선정하게 되었습니다.

프론티어 미션에도 web3 문제 풀이가 있어 진행할 예정입니다.


3. 예상 산출물 및 예상 시행착오

예상 산출물

  • 블록체인 기반 분산 원장 시스템
  • 스마트 컨트랙트 기반 탐지 모듈
  • 탐지 성능 보고서
  • PoC 코드
  • SBOM 데이터셋

예상 시행착오

  • SBOM 차이
    • 공급자마다 SBOM 형식에 차이가 있습니다.
  • 복잡한 구조
    • 코드, 라이브러리 등 다양한 디지털 자산으로 구성되어 있어 모든 구성 요소의 보안 상태를 일일이 확인해야 합니다.
  • 신뢰할 수 있는 스포트웨어
    • 공격자가 신뢰할 수 있는 소프트웨어 업데이트나 내부 시스템 접근 권한을 탈취하여 악성 코드를 심을 수 있으며, 기존 보안 솔루션은 정상적인 행위로 판단하여 탐지하기 어렵습니다.

4. 추가 조사

SBOM(Software Bill of Materials)

 

SBOM은 소프트웨어 자재 명세서를 의미합니다.

여기서 BOM은 제품을 구성하는 모든 재료, HS코드(품목분류 코드), 소요량, 단가, 원산지 등을 상세히 써놓은 문서를 말합니다.

즉, 소프트웨어의 구성요소, 관계, 오픈소스 및 외부 서비스와의 융합 방식 등을 모두 정리한 문서입니다.

 

1. 데이터 필드

  • 공급업체 이름, 구성요소 이름, 구성요소 버전, 기타 고유 식별 코드, SBOM 데이터 작성자 등 구체적인 데이터를 말합니다.

2. 오토메이션 서포트

  • 자동화 지원은 SBOM이 일관적인 형식을 지켜야 함을 뜻합니다.
  • 가장 보편적으로 사용되는 형식은 SPDX, SWID, 사이클론DX입니다.
    • 리눅스 재단에서 운영하는 프로젝트인 SPDX는 가장 많은 파일 형식을 지원하며, 국제 개방형 표준입니다.
      사람도 기계도 읽을 수 있는 것이 특징입니다.
    • OASIS의 ISO/IEC 표준인 소프트웨어 식별번호 SWID는 제품 이름, 버전, 개발자, 요소, 관계 등 정보를 전송하는 소프트웨어에 내장된 메타데이터의 일종입니다.
    • OWASP의 오픈소스 프로젝트인 사이클론DX는 처음부터 BOM형식으로 설계된 것이 특징이며 Saas BOM을 포함한 다양한 사용 예시가 있습니다.

스마트 컨트랙트

스마트 컨트랙트는 계약 당사자 간 거래 내용을 코드로 기록해 블록체인에 올리면, 계약 조건이 충족됐을 때 계약을 자동으로 이행해 주는 시스템입니다. 이를 통해 은행처럼 계약 이행을 검증, 보증하는 중앙화된 제 3자 없이도 계약을 자동으로 이행할 수 있습니다.

 

암호학자 닉 사보가 만든 개념으로 다음의 특징을 가지고 있습니다.

1. 지불 조건, 유치권, 기밀 보장 등 일반적인 계약의 조건을 만족해야 한다.

2. 계약 지불 조건이 만족되면, 자동으로 계약이 이행되어야 한다. 이를 위해 컴퓨터 코드로 스마트 컨트랙트를 작성하고, 조건에 따라 자동으로 계약이 수행되도록 해야 한다.

 

스마트 컨트랙트의 장점

 

1. 보안

  스마트 컨트랙트는 블록체인 네트워크 위에서 생성되고 실행됩니다.
  컨트랙트 수행 역시 블록체인 네트워크에 참여하는 모든 노드가 공유하게 됩니다.
  따라서 누군가가 계약 기록을 위조하기 위해서는 이 기록을 가진 모든 노드의 데이터를 변조해야 합니다.

 

2. 신뢰성 및 투명성

  스마트 컨트랙트 코드에 작성된 조건이 만족되면, 계약이 이행됩니다.

  이 계약 이행은 당사자의 컴퓨터에서 기록되는 것이 아닌, 많은 노드들에 의해 검증되기에 문제점이 발견되면 이행 자체가 취소됩니다.

  즉, 계약 내용 및 계약 이행 결과를 위변조하는 것이 어렵고, 여러 노드에 의해 계약 결과가 검증되기 때문에 신뢰성과 투명성이 높습니다.

 

3. 효율성

  한번 스마트 컨트랙트 코드를 작성해 배포하게 되면, 계약 당사자들이 수동으로 데이터를 입력하거나, 상대방의 계약 의무 이행 여부를 검증하거나, 제 3자를 통해 계약 이행 여부를 확인하지 않아도 됩니다.

 

CI/CD 보안

 

CI(Continuous Integration)은 지속적인 통합을 의미합니다.

여기서 지속적인 통합은 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되는 것을 의미합니다.

다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경, MSA(Micro Service Archietecture) 환경 등에서 사용되고 있습니다.

핵심 목표는 버그를 신속하게 찾아 해결하고, 품질을 개선하며, 새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있습니다.

 

CD(Continuous Delivery/Continuous Deployment)는 지속적인 서비스 제공, 지속적인 배포를 의미합니다.

Continuous Delivery는 공유 레포지토리로 자동으로 Release하는 것을, Continuous Deploymentsms Production 레벨까지 자동으로 deploy하는 것을 의미합니다.

 

즉, CI는 새로운 소스코드의 빌드, 테스트, 병합을 의미하고 CD는 개발자의 변경 사항이 Production 환경까지 Release되는 것을 의미합니다.

 

이러한 CI/CD는 다음과 같은 위험에 노출될 수 있습니다.

  • 안전하지 않은 코딩
  • 불충분한 액세스 제어
  • 보안 구성 오류
  • 기밀 정보 노출
  • 취약한 타사 라이브러리
  • 공급망 공격

아티팩트 서명

 

Sigstore Cosingn는 컨테이너 이미지에 디지털 서명을 부여하여 공급망 내에서 콘텐츠의 신뢰성과 무결성을 검증할 수 있도록 지원하는 오픈소스 CLI 도구입니다.

소프트웨어 전달 체계에서 필수적인 SBOM 서명, 정책 기반 검증, 키리스 서명(keyless signing) 등을 지원하여 클라우드 네이티브 보안의 핵심 축으로 자리 잡고 있습니다.

 

Cosign의 주요 목적은 다음과 같습니다.

  • 컨테이너 이미지의 위변조 여부 검증
  • SBOM 및 바이너리의 정합성 보장
  • 신뢰 기반 공급망 검증 자동화

Cosign의 특징은 다음과 같습니다.

항목 설명 효과
OCI 호환 서명 저장 이미지 레지스트리에 서명/증명 저장 별도 메타스토리지 필요 없음
키리스 서명 지원 개인 키 없이 OIDC 기반 서명 가능 GitHub Actions 연동, 키 관리 부담 최소화
다중 아티팩트 서명 이미지 외에도 파일, SBOM 서명 가능 정책, 서드파티 바이너리 서명 확대 가능
Rekor 연동 투명 로그에 서명 기록 저장 감사를 위한 불변성 제공

 

Rekor는 Sigstore 생태계의 핵심 구성 요소로, 코드 서명, 컨테이너 이미지, 아티팩트 등의 서명 정보를 영구적이고 투명하게 기록하는 투명성 로그(Transparency Log) 시스템입니다.

블록체인 유사 구조로 데이터 변경 불가능성을 보장하며, 소프트웨어 공급망의 신뢰성과 추적 가능성을 향상시키는 핵심 역할을 수행합니다.

 

Rekor의 특징은 다음과 같습니다.

항목 설명 효과
불변성 보장 Append_only Merkle Tree 기반 일반 DB 대비 위변조 방지 강함
공개 접근성 누구나 로그 조회 및 증명 가능 폐쇄형 서명 시스템과 대비됨
서명 데이터 분리 저장 인증서, 해시, 서명 등을 분리 저장 키 없이도 검증 정보 확보 가능

 

BaaS(Blockchain as a Service)

 

BaaS는 관리형 블록체인 서비스로 참여자 온보딩, 노드 운영, 모니터링, 업타임, 스케일링 같은 운영 부담을 클라우드 수준으로 관리해 주는 서비스입니다. 공급망처럼 참여자가 많고 트랜잭션이 빈번한 환경에서는 퍼블릭 체인 단독으로는 처리량, 지연, 프라이버시 문제로 한계가 있으므로, 온체인 + 오프체인 하이브리드와 BaaS의 엔터프라이즈 인프라를 결합하는 방식을 사용합니다.

 

예를 들어 컨테이너 터미널의 수많은 상태 업데이트는 오프체인에서 집계 및 처리하고 주기적으로 요약 정보(해시)만 블록체인에 올려 실시간성은 유지하면서도 블록체인의 불변성, 추적성 이점을 확보할 수 있습니다.


5. 공격 사례

1. 업스트림 서버 침해 : Codecov 공격, SolarWinds 공격

  • 소프트웨어 공급망 공격 대부분은 공격자가 업스트림 서버 또는 코드 레포지토리에 침입해 악성 페이로드를 삽입하는 방식으로 이루어집니다.
  • Codecov 공격자들은 도커 이미지 생성 프로세스를 통해 Codecov 배시 업로더를 수정하는 데 사용되는 자격 증명을 획득했습니다.
  • 해당 공격은 소프트웨어 패키지 서명 및 확인에 사용되는 GPG(GNU Privacy Guard) 개인 키가 노출된 것으로 확인되었습니다.
  • SolarWinds 공격은 솔라윈즈 IT 성능 모니터링 제품인 오리온(Orion)의 합법적인 업데이트 바이너리인 SolarWinds.Orion.Core.BusinessLayer.dll을 변조했습니다.

2. 의존성 혼동 공격

  • 의존성 혼동 공격은 다수의 오픈소스 생태계에서 발견되는 고유한 설계 약점으로 인해 최소한의 노력으로 자동화된 방식으로 작동합니다.
  • 의존성 혼동 또는 네임스페이스(namespace) 혼동은 소프트웨어 빌드가 오픈소스 레포지토리에 존재하지 않는 내부적으로 생성된 비공개 의존성을 사용하는 경우 발생합니다.
  • 공격자는 공개 레포지토리에 동일한 이름의 의존성을 더 높은 버전으로 등록하여 공격자의 공개된 의존성을 소프트웨어 빌드로 가져올 가능성을 높입니다.
  • 화이트해커 알렉스 버산은 이러한 취약점으로 대기업 35곳을 해킹하고 13만 달러가 넘는 버그 바운티 현상금을 받았습니다.

3. 도난당한 SSL 및 코드 서명 인증서

  • HTTPS 웹 사이트가 증가함에 따라 SSL/TLS 인증서는 어디에서나 온라인 통신을 보호합니다.
  • SSL 인증서의 개인 키가 손상되면 엔드투엔드 암호화의 안전한 통신 보증이 위협받을 수 있습니다.
  • Stuxnet은 공격자가 훔친 개인 키를 사용해 악성 코드에 신뢰할 수 있는 서명을 한 공격 사례입니다.

4. 개발자의 CI/CD 인프라 타겟팅

  • 소프트웨어 공급망 관리 업체 Sonatype은 사용자의 GitHub 프로젝트에 악성 풀 리퀘스트를 도입하는 것뿐만 아니라 암호화폐 채굴을 위해 GitHub의 CI/CD 자동화 인프라인 GitHub 액션을 악용한 다각적인 소프트웨어 공급망 공격을 관찰했습니다.
  • GitHub 액션은 개발자가 GitHub에서 호스팅되는 레포지토리에 대해 자동화된 CI/CD 작업을 예약하는 방법을 제공합니다.
  • 공격자는 GitHub 액션을 사용하는 합법적인 GitHub 레포지토리를 복제하고 레포지토리의 GitHub 액션 스크립트를 약간 변경한 다음 프로젝트 소유자에게 변경 사항을 원래 레포지토리에 다시 병합하도록 풀 리퀘스트를 제출하는 방식으로 공격합니다.
  • 프로젝트 소유자가 아무렇지 않게 승인하면 공격에 성공하는 것이지만, 악성 풀 리퀘스트 공격에는 공격자가 풀 리퀘스트를 제출하자마자 GitHub 액션에 의해 자동으로 실행되도록 수정된 ci.yml이 포함되어 있습니다.
  • 개발자가 악성 풀 리퀘스트를 수락하도록 유도하며, 실패한다면 자동화된 CI/CD 인프라를 악용해 악의적인 활동을 수행합니다.

5. 오픈소스 취약점 악용: Log4j(Log4shell) 공격

  • 자바 기반의 오픈소스 로깅 라이브러리인 Log4j에서 심각한 원격 코드 실행 취약점이 발견되었습니다.
  • 공격자는 JNDI(Java Naming and Directory Interface) 기능을 악용했습니다.
  • Log4j는 로그 기록에 JNDI를 포함한 특정 문자열이 입력되면 원격 서버에 접속하여 해당 서버의 자바 객체를 실행하도록 설계되어 있었고 공격자는 이를 노려 악성 코드가 담긴 원격 서버의 주소를 로그에 삽입하고, Log4j가 이를 처리하는 과정에서 임의의 코드를 실행시켰습니다.
  • Log4j는 자바 기반의 서버 및 애플리케이션에 널리 사용되는 범용 라이브러리이기에 해당 취약점은 Log4j를 직간접적으로 사용하는 수많은 소프트웨어와 서비스에 영향을 미쳤고, 공격자는 수많은 시스템을 공격할 수 있었습니다.

6. 결론

블록체인은 공급망의 투명성과 추적성을 크게 향상시키는 기술입니다.

특히 불변성과 분산 원장 기술은 위조 방지, 감사 증적 확보에 강점이 있습니다. 

하지만 블록체인 자체가 안전한 해법은 아니었습니다.

소프트웨어 공급망의 취약점은 다양한 계층에서 발생하며 실제 공격 사례들로 한 지점에서의 실패가 공급망 전체로 확산된다는 것을 알 수 있었습니다.

이름 그대로 체인처럼 연쇄적으로 공격될 수 있다는 점이 매우 위험하다는 것을 느꼈고, 항상 취약점 스캔 등의 대비가 필요한 것 같습니다.

관심 있는 분야에 대해 사례부터 취약점까지 조사하다 보니 재밌었습니다.


참고자료

https://www.wepin.io/ko/blog/blockchain-logistics

https://www.koreascience.kr/article/JAKO202514239607361.page

http://www.itdaily.kr/news/articleView.html?idxno=235587

https://www.enki.co.kr/media-center/blog/cyber-security-supply-chain-attack

https://scienceon.kisti.re.kr/commons/util/originalView.do?cn=JAKO202412754006497&oCn=JAKO202412754006497&dbt=JAKO&journal=NJOU00548795

https://www.cio.com/article/3501277/%EC%82%AC%EB%A1%80%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B3%B5%EA%B8%89%EB%A7%9D-%EA%B3%B5%EA%B2%A9-%EC%9C%A0%ED%98%95-6%EA%B0%80%EC%A7%80.html