코드에 숨겨진 위협: 직접 및 전이 종속성 보안
오픈 소스(OSS) 종속성은 오늘날 애플리케이션에서 코드의 80% 이상을 차지합니다. 이러한 종속성에는 개발자가 명시적으로 선택한 종속성과 고유한 종속성 관리 전략이 필요한 전이적 종속성이 모두 포함됩니다.
프로젝트를 개발할 때 프로그래머는 작업을 간소화하기 위해 타사 종속성을 통합하는 경우가 많습니다. 이러한 직접 종속성 는 프로젝트 내에서 명시적으로 선언되며, 종종 Maven이나 Gradle과 같은 도구를 사용합니다.
그러나 이러한 라이브러리는 종속성을 사용하여 다음과 같이 생성할 수도 있습니다. 전이적 종속성 를 생성하여 프로젝트에 직접 가져오지 않고 다른 종속성을 통해 가져올 수도 있습니다. 이러한 중첩된 종속성 구조는 소프트웨어 개발의 상호 연결된 특성과 외부 코드에 대한 의존성을 강조합니다.
공격자는 취약점이 악용될 수 있는지 여부에만 관심이 있지, 취약점이 직접 또는 전이적 종속성에 존재하는지 여부에는 관심이 없습니다. 또한 퍼스트 파티 코드는 전이적 종속성에서 메서드를 직접 호출하여 코드와 해당 종속성의 코드 간에 직접적인 관계를 설정하는 경우가 많습니다.
전이적 종속성으로 인해 공격 표면이 확장되어 시스템이 여러 가지 방식으로 악용될 수 있습니다. 알아야 할 몇 가지 일반적인 공격 벡터가 있습니다:
종속성 혼동 은 심각한 보안 위험을 초래할 수 있습니다. 보안 연구원 알렉스 버산의 2020년 익스플로잇에서 알 수 있듯이 말이죠. Birsan은 기업들이 공개 리포지토리에서 실수로 내부 패키지 이름을 사용하는 경우가 많다는 사실을 발견했습니다. 그는 동일한 이름과 더 높은 버전 번호를 가진 악성 패키지를 공개 리포지토리에 업로드하여 종속성 관리자를 속여 코드를 다운로드하고 실행하도록 하여 주요 조직에 영향을 미쳤습니다. 이는 그의 의도가 악의적이었다면 데이터 유출과 막대한 재정적, 평판적 피해가 발생할 수 있다는 점을 강조했습니다.
악성 패키지 인젝션 는 공격자가 기존의 신뢰할 수 있는 패키지를 손상시키는 또 다른 위협입니다. 공격자는 관리자의 계정을 장악하거나 유해한 업데이트를 도입함으로써 의심을 불러일으키지 않고 악성 코드를 삽입할 수 있습니다. 최근의 한 사례는 자동화된 종속성 관리 도구인 GitHub의 Dependabot을 악용한 것입니다. 공격자는 무단으로 액세스하여 합법적인 Dependabot 기여로 위장한 가짜 풀 리퀘스트를 제출했습니다. '보안 수정' 또는 '패치'로 표시된 이러한 일상적인 업데이트는 개발자를 속여 병합하도록 유도하여 공격자가 민감한 데이터를 수집하고 오용할 수 있도록 했습니다.
무시된 종속성 악용 은 주의해야 할 또 다른 공격 벡터입니다. 개발자가 간과하는 경우가 많은 유지 관리되지 않는 라이브러리는 쉬운 공격 대상이 됩니다. Apache Log4j의 2021 Log4Shell 취약점은 이러한 위험을 잘 보여줍니다. 이 취약점은 원격 코드 실행을 허용했지만 수많은 시스템에서 Log4j가 전이적 종속성으로 널리 퍼져 있기 때문에 광범위한 영향을 미쳤습니다. 공격자들은 이 결함을 신속하게 악용했고, 조직은 복잡한 종속성 구조 내에서 숨겨진 라이브러리를 찾아 업데이트하기 위해 분주하게 움직였습니다.
TuxCare는 직접 종속성이 있는 Java Spring 프로젝트와 전이적 종속성이 포함된 Java 에코시스템 프로젝트에 대한 보안 패치를 모두 제공합니다.
우리의 Spring에 대한 엔드투엔드 수명 주기 지원(ELS) 는 수명이 다한 Spring 프로젝트에 대해 지속적인 보안 업데이트를 제공하므로, 필요한 기간 동안 지원되지 않는 Spring 버전을 안전하게 사용할 수 있습니다.
Spring 애플리케이션을 보호해야 하나요? 여기에서 견적을 받거나 Spring용 ELS에 대해 문의하세요.

