블로그

코더를 위한 보안 정복: 공유 및 학습 시리즈 - 알려진 취약점이 있는 구성 요소 사용하기

April 25, 2019
자프 카란 싱

모든 애플리케이션이 공통으로 가지고 있는 것은 무엇일까요? 바로 구성 요소(컴포넌트)이며, 의존성 또는 라이브러리라고도 불립니다. 세상에 존재하는 코드 중 다른 코드에 전혀 의존하지 않는 코드는 거의 없습니다. 애플리케이션을 만드는 순간부터 이미 수많은 의존성을 안고 시작하게 됩니다!

모든 애플리케이션은 직접 작성하지 않은 구성 요소를 사용하므로, 해당 구성 요소의 취약점은 곧 보안 위험이 될 수 있습니다. 알려진 취약점이 있는 구성 요소를 사용하는 것이 무엇을 의미하는지, 얼마나 위험한지, 그리고 이를 어떻게 해결해야 하는지 알아보겠습니다.

알려진 취약점이 있는 구성 요소 사용에 대한 이해

모든 복잡한 소프트웨어에는 취약점이 존재합니다. 이는 소프트웨어의 본질적인 특성입니다. 따라서 구성 요소가 100% 안전할 수는 없습니다. 하지만 구성 요소에서 취약점이 발견되었을 때, 여러분은 이를 인지하고 계신가요? 이에 대비하고 계신가요?

문제는 구성 요소의 유효 기간이 지났거나 취약점이 발견된 후에도 계속 사용할 때 가장 많이 발생합니다. 대부분의 구성 요소와 라이브러리는 보안 취약점이 발표되는 시점이나 그 이전에 패치를 배포합니다. 따라서 구성 요소의 취약점이 발견되어 공개되면, 가능한 한 빨리 해당 구성 요소를 업데이트하는 것이 무엇보다 중요합니다. 취약한 소프트웨어를 운영 환경에 방치하지 마십시오.

구성 요소는 여러 경로를 통해 유입됩니다. 때로는 직접 작성한 코드와 직접 통합되는 타사 공급업체의 제품을 구매하기도 합니다. 이러한 구성 요소는 코드의 일부가 되어 동일한 권한 수준에서 작동합니다. 또 다른 경로는 GitHub와 같은 사이트에서 호스팅되는 오픈 소스 프로젝트입니다. 모든 오픈 소스 라이브러리가 취약점에 대해 철저히 검증되거나 감사받는 것은 아니므로 오픈 소스 사용은 위험할 수 있습니다.

공격자는 구성 요소의 취약점 정보를 악용합니다. 취약점은 공개적으로 발표되기 때문에 공격자도 여러분과 동시에 해당 취약점을 알게 됩니다. 또한 공격자는 여러분이 어떤 구성 요소를 사용하고 있는지 파악하는 기술을 가지고 있습니다. 일단 이 정보를 알게 되면, 패치되지 않은 애플리케이션을 어떻게 공격해야 할지 정확히 파악하게 됩니다.

취약한 구성 요소가 위험한 이유 파악하기

취약한 구성 요소를 사용하는 것이 얼마나 위험한지에 대한 증거를 찾고 있다면, 2017년 에퀴팩스(Equifax) 데이터 유출 사고를 살펴보면 됩니다.

2017년 7월, 미국의 신용평가기관인 에퀴팩스(Equifax)는 1억 4,700만 명 이상의 개인 식별 정보가 유출된 대규모 데이터 유출 사고를 발견했습니다. 이 데이터 유출의 규모와 영향은 전례가 없는 수준이었습니다. 최근에는 에퀴팩스의 허술한 보안 관행에 대한 뉴스가 보도되기도 했습니다.

그 허술한 관행 중 하나는 패치 관리였습니다. 에퀴팩스는 적절한 패치 관리 관행을 갖추지 못했고, 이로 인해 구성 요소가 패치 없이 장기간 방치되었습니다. 이것이 바로 이번 유출 사고의 직접적인 원인이었습니다.

에퀴팩스 웹사이트는 아파치 스트럿츠(Apache Struts) 웹 프레임워크를 사용하고 있었습니다. 공격자들이 네트워크를 해킹하기 몇 달 전, 스트럿츠 프레임워크에서 취약점인 Apache Struts CVE-2017-5638이 발견되었습니다. 그러나 에퀴팩스는 이 취약점을 패치하지 않았습니다. 공격자들은 이 취약점을 이용해 에퀴팩스 네트워크에 침입했고, 그곳에서 방대한 개인 정보에 접근할 수 있었습니다.

많은 웹사이트가 기업이 직접 작성하지 않은 웹 프레임워크를 기반으로 구축됩니다. 필요한 모든 기능을 처음부터 직접 만드는 것은 너무 큰 작업이기 때문에 이는 표준적인 관행입니다. 하지만 프레임워크에 크게 의존하면 취약점에 노출될 수 있습니다. 다음 에퀴팩스 사례의 주인공이 되지 마십시오.

취약한 구성 요소로부터 보호하는 방법

취약한 구성 요소 사용을 방지하는 만능 해결책은 없습니다. 하지만 취약한 구성 요소가 시스템을 위협하는 데 사용될 위험을 완화하기 위해 적용할 수 있는 정책과 통제 수단은 존재합니다.

애플리케이션을 구축할 때 어떤 구성 요소를 어떤 버전으로 사용하고 있는지 파악해야 합니다. OWASP의 Dependency Check와 같은 의존성 관리 도구는 사용 중인 의존성을 파악하는 데 도움을 줍니다. 또한 Dependency Check는 해당 구성 요소 중 공개적으로 알려진 취약점이 있는 것이 있는지 알려줍니다.

패치 관리 방법론 또한 필수적입니다. 취약점이 발견되면 패치를 다운로드하고, 테스트하고, 운영 환경에 원활하게 배포할 수 있는 시스템을 갖추어야 합니다. 소프트웨어를 지속적으로 패치하면 공격자가 수개월 된 취약점을 악용하는 것을 방지할 수 있습니다.

마지막으로 오픈 소스 및 타사 구성 요소 사용에 관한 정책을 마련해야 합니다. 개발자들은 복잡한 절차를 선호하지 않으며, 이는 충분히 이해할 만한 일입니다. 하지만 조직 외부에서 작성된 코드에 대해서는 반드시 검증 과정이 필요합니다. 거창한 절차일 필요는 없지만, 출처가 불분명한 구성 요소가 사용되는 것을 방지하기 위해 필수적입니다. 최소한 사용 중인 구성 요소 목록을 최신 상태로 유지해야 합니다.

타사 구성 요소로 인한 보안 위협을 방지하세요

구성 요소에는 취약점이 존재하기 마련입니다. 비즈니스 애플리케이션은 벤더 제품이든 오픈 소스 라이브러리든 다양한 구성 요소를 사용하게 됩니다. 그렇다고 해서 조직이 반드시 공격에 취약해져야 하는 것은 아닙니다.

공격자들도 취약점 정보를 동시에 알게 되지만, 보안 패치 역시 공개 발표와 동시에 제공되는 경우가 많습니다. 따라서 애플리케이션에서 어떤 구성 요소를 사용하는지 파악하고, 무엇이 취약한지 항상 확인하십시오. 구성 요소를 최신 상태로 유지하는 것이 중요합니다!

취약한 구성 요소를 찾아내고 해결할 준비가 되셨나요? 아레나에서 전투를 시작하세요: [시작하기]

태그라인

배포 전 AI 기반 개발 거버넌스 확보

AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.

데모 예약하기
리소스 라이브러리

더 많은 블로그 살펴보기

보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.

전체 보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

하나의 보안 문화: Sage는 어떻게 챔피언 프로그램을 구축했는가

Sage가 유연하고 관계 중심적인 접근 방식을 통해 보안을 강화하고, 200명 이상의 보안 챔피언을 양성하며 실질적인 위험 감소를 달성한 사례를 확인해 보세요.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

2026년 사이버 보안 인식의 달: 기업 방어의 핵심, AI 보안 이해하기

주요 AI 기업 대부분이 안전 가이드라인이 마련될 때까지 AI 개발 속도를 전 세계적으로 늦춰야 한다고 공개적으로 촉구하는 시점에 이르렀지만, 사실 심각한 보안 문제는 이미 현실화되었습니다. 이로 인해 AI 도입에 따른 금전적 비용과 위험 부담이 계속 쌓이면서 수많은 보안 책임자와 경영진이 절박한 상황에 놓였습니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

인에이블러 8: 프로그램 브랜딩

성공적인 보안 코딩 프로그램을 위해서는 훌륭한 콘텐츠 그 이상의 것이 필요합니다. 인에이블러 8에서는 브랜딩을 통해 참여를 누구나 선망하는 위상 중심의 경험으로 바꾸는 방법을 알아봅니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

이제 모든 직원이 AI 사이버 보안의 최전선에 있습니다

엔터프라이즈 기술 환경은 너무 늦기 전까지는 아무도 예상하지 못한 속도로 변화하고 있습니다. 우리는 공식적으로 사람이 직접 작성한 코드와 기본적인 코파일럿 지원의 시대를 지나 '에이전트 기반 개발 수명 주기(ADLC)'의 시대로 진입했습니다. 자율형 AI 에이전트는 여러 기능 전반에 걸쳐 전례 없는 효율성을 약속하지만, 동시에 완전히 새로운 차원의 보안 및 규제 위험을 야기합니다.

더 알아보기

배포 전 AI 기반 개발 보안 확보

소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.

데모 예약하기
항목이 없습니다.