일반적인 소프트웨어 공급망 위험과 이를 완화하는 방법

A에 따라 Gartner 보고서, 45년까지 전 세계 조직 중 최대 2025%가 소프트웨어 공급망에 대한 공격을 경험했을 것입니다. 요즘 소프트웨어 제품 구축 방식의 변화로 인해 이러한 유형의 공격이 빈번해지고 있으며 처리하기가 어려워지고 있습니다.

오늘날 소프트웨어 엔지니어는 처음부터 애플리케이션을 구축할 필요가 없습니다. 만큼 앱의 90% 타사 코드, 개별 라이브러리 및 오픈 소스 소프트웨어를 사용하여 구축할 수 있습니다. 소프트웨어 개발에 대한 이러한 접근 방식은 앱 구축 프로세스를 단순화하고 상당한 시간을 절약하는 데 도움이 되지만, 악성 패키지가 타사 코드 및 소프트웨어를 통해 전달될 수 있으므로 위협과 보안 취약성도 증가합니다.

결국, 그것은 점점 어려워지는 소프트웨어 공급망의 무결성을 유지합니다. 최근 소프트웨어 공급망 위험의 증가와 이로 인한 세간의 이목을 끄는 침해 사고는 공급망의 취약점 문제가 얼마나 심각한지 보여줍니다.

이러한 추세에 맞춰 조직에서는 소프트웨어의 무결성과 보안을 보장하기 위한 조치를 취하는 것이 필수적입니다. 이 게시물에서는 일반적인 소프트웨어 공급망 위험과 조직이 이러한 취약점을 완화하고 공격으로부터 소프트웨어를 보호할 수 있는 다양한 방법을 살펴보겠습니다.

소프트웨어 공급망의 알려진 취약점

타사 소프트웨어는 소프트웨어 공급망에 여러 가지 위협을 가할 수 있습니다. 공격자는 이러한 타사 소프트웨어에 의존하는 시스템의 취약점을 악용하기 위해 다양한 방법을 사용할 수 있습니다. 이러한 공격 방법에는 소프트웨어에 악성 코드 도입, 종속성 혼란, 타이포스쿼팅 등이 포함됩니다.

그러나 소프트웨어 개발의 복잡성과 오늘날 경쟁이 치열한 디지털 시장에서 새로운 앱을 제공해야 하는 속도로 인해 소프트웨어 엔지니어는 가능한 한 빨리 애플리케이션을 만들기 위해 타사 도구 및 외부 라이브러리에 의존할 수밖에 없습니다. .

다음과 같은 결과로 애플리케이션에 취약점이 발생할 수 있습니다.

 

  • 귀하가 작성하는 코드: 귀하가 직접 작성한 사용자 정의 코드의 열악한 보안 관행
  • 구축 대상: 앱 구축에 사용되는 소프트웨어 개발 도구가 손상되어 소프트웨어가 보안 취약성에 노출될 수 있습니다.
  • 구매 제품: 앱 개발에 사용되는 일부 상용 SaaS(Software-as-a-Service) 애플리케이션에는 취약점이 포함될 수 있습니다.
  • 사용하는 것: 많은 응용 프로그램은 공급망에서 약한 연결 고리 역할을 할 수 있는 타사 오픈 소스 라이브러리에 의존합니다.

 

모든 소프트웨어 공급망에 존재하는 수많은 잠재적 취약 고리를 고려할 때 조직은 이를 예방하고 해결하기 위해 적극적으로 나서야 합니다. 소프트웨어 공급망 취약점. 이를 위해 소프트웨어 엔지니어는 소프트웨어 프로젝트가 잠재적으로 직면할 수 있는 잠재적인 위험이나 위협을 이해해야 합니다. 이러한 위협 중 일부는 다음과 같습니다.

내장된 악성코드 패키지

소프트웨어 공급망 공격에서 공격자가 수행하는 작업 중 하나는 영향을 받는 엔드포인트를 악성 소프트웨어로 감염시키는 것입니다. 이 악성 코드는 영향을 받는 소프트웨어와 컴퓨터 시스템에 큰 피해를 줄 수 있는 바이러스, 랜섬웨어, 트로이 목마 또는 스파이웨어일 수 있습니다.

공격자는 시스템이 사용자 장치에 대해 높은 수준의 권한을 갖고 있는 대상을 선택하는 경우가 많습니다. 이와 같은 공격의 주목할만한 예는 2021년에 발생한 사이버 공격입니다. 카세 야, 관리형 서비스 제공업체(Managed Service Provider) 및 엔터프라이즈 클라이언트를 포함한 IT 솔루션 개발자입니다.

Kaseya가 제공하는 주요 IT 솔루션 중 하나는 통합 원격 모니터링 및 관리 도구인 VSA입니다. VSA 서버는 고객 장치에서 높은 신뢰도를 얻었으며 공격자는 VSA 서버에 침투하여 연결된 클라이언트의 인증 제어를 우회할 수 있었습니다. 이렇게 하면 방해 없이 악성 페이로드를 업로드할 수 있습니다. Kaseya 공격은 다음과 유사합니다. SolarWinds 보안 실패공격자는 수천 명의 고객에게 악성 업데이트를 푸시하여 추가적인 보안 취약점에 노출될 수 있었습니다.

민감한 데이터 유출

데이터 도난이 목적인 모든 공격은 데이터 유출 공격으로 분류될 수 있습니다. 데이터 유출은 악의적인 행위자가 대상 시스템에서 다른 위치로 중요한 데이터를 무단으로 전송할 때 발생한다고 합니다. 공급망 공격으로 인해 발생한 데이터 유출 공격의 주목할만한 예는 다음과 같습니다. 2013년 XNUMX월 Target 공격, 미국 최대의 소매 회사 중 하나입니다.

공격자는 제41자 공급업체로부터 훔친 자격 증명을 사용하여 Target의 시스템에 침입했습니다. 이 공격으로 인해 그들은 Target의 고객 서비스 데이터베이스에 대한 무단 액세스를 허용하여 고객의 이름, 전화번호, 이메일 주소, 결제 카드 정보 및 기타 민감한 데이터를 캡처할 수 있었습니다. 60만 명의 대상 고객의 결제 카드 정보가 공격자의 서버로 유출되었으며, XNUMX만 명 이상의 고객의 연락처 정보가 노출되었습니다.

원격 코드 실행

원격 코드 실행(임의 코드 실행이라고도 함)은 공격자가 장치나 컴퓨터의 작동을 원격으로 명령하기 위해 액세스 권한을 얻는 일종의 사이버 공격입니다. 일반적으로 공격자는 피해자가 시스템에서 실행하려는 파일, 문자열 또는 전체 패키지에 악성 코드를 삽입합니다. 이를 통해 공격자는 전체 웹 앱이나 웹 서버를 손상시킬 수 있는 전면적인 공격을 시작할 수 있습니다. 소프트웨어 공급망 공격에서 원격 코드 실행 공격이 발생할 수 있는 두 가지 일반적인 방법은 Typosquatting 및 종속성 혼란을 통해 발생합니다.

오타 스쿼팅

이러한 유형의 공격을 실행하기 위해 악의적인 행위자는 일반적으로 설치하려는 종속성과 동일한 손상된 패키지를 만듭니다. 일반적으로 악성 패키지의 철자는 약간 다릅니다. 이는 설치 명령을 잘못 입력할 수 있는 점을 활용하는 것입니다. 악성 패키지는 일반적으로 엔지니어가 설치하려고 했던 종속성과 동일하게 작동하지만 동시에 내장된 악성 코드도 실행합니다.

의존성 혼란

종속성 혼란은 공격자가 소프트웨어 공급망 공격에서 원격 코드 실행을 시작하기 위해 사용하는 또 다른 접근 방식입니다. 이러한 유형의 공격을 통해 악의적인 행위자는 내부 종속성 패키지와 동일한 이름을 사용하여 외부 라이브러리에 패키지를 생성합니다. 두 종속 항목의 이름이 동일하므로 패키지 관리자가 대신 악성 코드를 설치할 수 있습니다. 이를 통해 공격자는 개발 중인 소프트웨어 애플리케이션의 CI/CD(지속적 통합/지속적 배포) 환경에 침투할 수 있습니다.

소프트웨어 공급망의 위험을 완화하는 방법은 무엇입니까?

지난 몇 년 동안 소프트웨어 공급망 공격은 전 세계 조직이 직면한 가장 큰 사이버 위협 중 하나가 되었습니다. 이와 같은 공격의 위험을 완화하는 것은 모든 조직, 특히 타사 소프트웨어에 의존하는 조직 전반에 걸쳐 사이버 보안 및 위험 관리의 중요한 부분이 되었습니다. 타사 플랫폼과 공개 저장소를 맹목적으로 신뢰하는 것보다 예방 조치를 취하고 시스템으로 가져오는 항목에 대해 필요한 검사를 수행하는 것이 좋습니다. 소프트웨어 공급망 위험 관리 계획을 수립할 때 다음 방법을 사용하여 소프트웨어 공급망 공격의 위험을 완화할 수 있습니다.

 

소프트웨어 감사

공급망 공격을 대응하기 어렵게 만드는 이유는 위험이 자체 시스템 범위를 넘어서기 때문입니다. 이러한 공격의 위험을 완화하려면 경계를 보호하는 것 이상의 조치를 취해야 합니다. 대신, 귀하의 전략은 귀하의 시스템에 연결된 외부 소프트웨어 시스템의 보안을 보장하는 데 더 중점을 두어야 합니다.

그러나 연결된 외부 시스템이나 애플리케이션 내에서 사용되는 코드 종속성에 대한 정보가 충분하지 않은 경우 특히 이를 달성하기 어려운 경우가 많습니다. 공급망 공격 위험을 완화하는 첫 번째 단계는 소프트웨어 공급망에 대한 포괄적인 감사를 수행하는 것입니다.

최근에는 여러 미국 정부 기관에 영향을 미친 2020 SolarWinds 공격 이후 미국 연방 정부는 소프트웨어 감사를 법적 요구 사항으로 만들었습니다. 미국 정부 기관에 소프트웨어를 판매하는 모든 회사에 적용됩니다. 모든 시스템에 대해서도 동일한 작업을 수행해야 합니다. 모든 소프트웨어 종속성을 명확하게 기록하는 것이 시스템이 공급망 공격의 위험에 노출되어 있는지 알 수 있는 유일한 방법입니다.

소프트웨어 종속성을 즉시 감사하는 것 외에도 소프트웨어의 새 릴리스가 나올 때마다 시스템을 다시 감사해야 합니다. 일시적인 종속성을 포함하여 모든 유형의 종속성을 식별할 수 있는 보다 철저한 감사를 수행하여 수동 감사를 넘어서야 할 수도 있습니다.

자동화된 감사

시스템을 수동으로 감사하는 것 외에도 자동 조종 장치에서 감사를 설정해야 할 수도 있습니다. 자동화는 소프트웨어의 모든 부분에서 취약점을 찾아내는 데 중요한 역할을 합니다. 자동화된 스캔은 소프트웨어 코드의 취약점을 신속하게 발견하여 코드가 프로덕션에 푸시되기 전에 해결할 수 있도록 도와줍니다. 소프트웨어 개발에서 제3자 코드의 사용은 계속해서 증가할 것이며 악의적인 행위자는 이러한 시스템을 가치 사슬의 소프트웨어에 대한 공격을 시작하기 위한 약한 연결 고리로 지속적으로 표적으로 삼을 것입니다. 이를 막는 유일한 방법은 지속적으로 시스템을 감사하여 시스템의 안전성을 지속적으로 파악하는 것입니다.

소프트웨어 BOM 준비

소프트웨어 BOM (SBOM)은 소프트웨어 보안을 보장하고 공급망 위험을 완화하는 주요 방법 중 하나가 되었습니다. 이 문서는 소프트웨어 패키지의 모든 콘텐츠를 식별하도록 설계된 형식적이고 기계가 읽을 수 있는 메타데이터입니다. 또한 소프트웨어 제품을 만드는 데 사용되는 모든 구성 요소의 라이센스 데이터 및 저작권과 같은 기타 중요한 정보도 자세히 설명합니다.

BOM을 준비하는 개념은 완전히 새로운 개념은 아닙니다. 역사적으로 그것은 제조업의 세계에서 유래되었습니다. 여기에서 제조된 모든 제품은 해당 제품의 제조 프로세스에 포함된 모든 항목의 목록 역할을 하는 BOM을 받습니다.

SBOM의 이미지

 

소프트웨어 공급망 위험 관리에도 동일한 원칙이 적용될 수 있습니다. SBOM은 처음부터 구축한 애플리케이션 부분을 자세히 설명하는 동시에 타사 공급업체로부터 얻은 모든 부분도 나열합니다. 이렇게 하면 취약점이 발견되면 그 소스를 쉽게 추적할 수 있습니다.

SBOM은 소프트웨어 구성 요소를 사용하는 다양한 조직에서 공유되도록 만들어졌습니다. 이는 소프트웨어 공급망의 모든 사람이 사용하는 모든 구성 요소에 대한 투명성을 제공합니다. 소프트웨어 보안에 관심이 있는 조직이라면 SBOM을 최우선 과제로 삼아야 합니다. 소프트웨어 제품에 구성 요소를 추가하기 전에 공급업체로부터 BOM을 받는 것이 도움이 됩니다. 이를 통해 문제와 보안 취약점에 더 쉽게 대응할 수 있습니다.

위험 관리 프레임워크 개발

소프트웨어 공급망 공격의 위험을 완화하려면 공격이 발생할 때까지 기다리는 것보다 사전 예방적인 접근 방식을 취하는 것이 항상 더 좋습니다. 가능한 공격 시나리오를 미리 요약하면 향후 공격 시나리오에 대처할 준비가 되어 있는지 확인할 수 있습니다.

소프트웨어 공급망 위험 관리 노력의 일환으로 공격자가 시스템을 손상시킬 가능성을 평가하는 방법을 개발해야 합니다. 이러한 방식으로 이러한 위험을 제한하기 위해 채택해야 하는 예방 전략은 물론 위험을 해결하기 위해 마련해야 하는 비상 계획을 결정할 수 있습니다.

공급망 공격에 대응하는 방법에 대해 조직의 모든 사람을 교육하는 것은 위험 관리 프레임워크의 또 다른 필수 부분입니다. 이를 통해 모든 사람은 그러한 공격을 예측하고 공격이 발생할 경우 적절하게 대응할 수 있도록 경계할 수 있습니다.

결론

소프트웨어 공급망 공격은 계속해서 조직을 다양한 형태의 위험에 노출시킬 것입니다. 따라서 엔지니어는 더 이상 소프트웨어 애플리케이션을 구축, 배포 및 유지 관리하는 데 사용하는 타사 패키지가 안전하고 적절하게 유지 관리된다고 가정할 수 없습니다. 실제로 소프트웨어 공급망 공격이 이전보다 더 일반화되는 주요 이유 중 하나는 소프트웨어 앱 구축 시 타사 코드에 대한 의존도가 높아졌기 때문입니다. 이러한 위험을 완화하려면 소프트웨어 공급망의 목록을 작성하고 심각한 위반 및 그에 따른 결과를 방지하기 위해 시스템에 대한 이러한 위협의 영향을 최소화하기 위한 조치를 취해야 합니다.