인사이트

인사이트리포트

디지털프렌스포메이션 최신 정보 및 트렌드를 제공합니다.

오픈소스 SW

오피스 빅뱅의 시대, 기업 IT 시스템의 취약점 관리

2024.12.19현지일 프로
다운로드

들어가며

오피스 빅뱅은 마치 빅뱅처럼 급격하게 변화하는 근무 환경과 업무 수행 방식을 의미하는 용어이다. 클라우드와 협업 기술의 발전, 글로벌 팬데믹의 영향은 업무 환경을 고정된 사무실에서 원격근무, 공유오피스 등 다양한 형태로 바꾸고 있다. 외부에서 개인 디바이스로 사내 시스템에 접근하게 되면서 기업 네트워크 전반의 보안 문제가 대두되고 있다. 사이버 위협으로부터 기업의 자산을 보호하기 위한 IT 시스템 전반의 취약점 관리 방법을 제안한다.

 

원격 근무로 기업 IT 시스템의 취약점 관리 필요

기업의 네트워크 보안 방식은 물리적으로 내부에 있는 사용자만 접근하는 폐쇄망 방식을 사용하고 있다. 외부에서 시스템으로의 접근 시도는 위험한 것으로 간주하여 격리하고, 반대로 네트워크 내부 사용자의 접근은 상대적으로 쉽게 허용되었다. 이러한 망 분리 정책은 시스템의 개발부터 운영까지 느슨한 보안 기준을 적용하여 비용과 편의를 챙겼다. 하지만 기업의 네트워크는 변화하는 IT 환경과 생활 방식에 맞춰 빠르게 외부와의 연결을 허용하고 있다.

팬데믹 이후 급격히 증가한 원격근무는 새로운 근무 형태로 자리 잡고 있다. 원격근무 지원을 위한 다양한 원격 접속 방법은 보안 관리 방법과 접근 통제의 복잡도를 많이 증가시키고 있다.

근무 환경 변화에 적응하는 직원들을 사이버 위협의 대상이 되기 쉽다. 강력한 기업의 보안 네트워크를 뚫기보다는, 직원의 디바이스를 겨냥한 공격이 효과적이기 때문이다. 이러한 공격은 대개 직원의 실수를 유도하여 디바이스를 장악하고, 해당 디바이스를 통해 계정 정보를 탈취하거나 네트워크에 접근하는 방식을 사용한다. 피싱, 랜섬웨어 같은 공격 방법이 여기에 해당한다.

복잡한 네트워크 관리 부담과 인적 오류는 심각한 보안 취약이다. 2024 Voice of the CISO Report에 따르면, CISO(Chief Information Security Officer)의 81%가 인적 오류를 최대 보안 취약 요인으로 평가하고 있다. 이는 2023년 34%에 비해 많이 증가한 수치로, IT 환경 변화로 인해 기업들이 직면한 보안 관리의 어려움을 잘 보여준다.

이런 공격에 방어하기 위해서 인증을 어렵게 하고 직원의 디바이스를 모니터링 하려는 많은 기술들이 개발되고 있다. 이러한 방어 기술에도 보안에 취약한 시스템이 원격 근무에서 활용되는 것은 매우 위험하다.

폐쇄망 정책으로 보호되어 보안에 느슨한 상태로 관리되고 있던 시스템이 대비도 없이 외부에서 접속할 수 있게 되면 사이버 사고로 이어질 수 있다. 이런 사고를 막기 위해서 각 시스템의 현재 상태를 파악하고, 안전한 시스템만 외부에 노출될 수 있도록 세심한 관리가 필요하다.

 

 

IT 시스템의 취약점 복원력 분류 체계

취약점은 매일 새로 추가되기 때문에, 어제 안전했던 시스템이 오늘은 취약해 질 수 있다. 그러므로 취약점 관리를 위해서는 현재 취약점의 개수를 관리 하는 것보다, 취약점에 노출된 후 복원할 수 있는 능력을 관리하는 것이 더 중요하다.

취약점 복원력 관리를 위해서는 두 가지만 확인하면 된다.

첫째, ‘시스템에 맞는 취약점 분석 도구가 있는가?’ 둘째, ‘시스템 기술 지원이 가능한가?’ 이다.

시스템에 맞는 취약점 분석 도구가 있어야 취약점을 식별하고 취약점에 대한 지속적인 모니터링 할 수 있다. 이렇게 확인한 취약점을 기술 지원을 통해 제거 할 수 있으면 취약점에 대한 복원력이 있다고 볼 수 있다. 각 확인 사항에 대해 좀 더 자세히 들여다 보겠다.

 

시스템에 맞는 취약점 분석 도구가 있는가?

시스템은 C, JAVA, Python 과 같은 개발 언어로 개발된다. 프레임 워크를 사용하면 이미 만들어진 기능들을 조합하고 연결해서 시스템을 만들 수 있고, 필요한 경우 외부 소프트웨어(오픈소스, 상용 소프트웨어)를 이용하여 기능을 추가할 수 있다. 개발 언어, 프레임워크, 외부 소프트웨어는 취약점 분석의 고려 대상으로 모두 취약점 분석이 필요하다.

시스템에서 사용된 모든 외부 코드(외부 소프트웨어, 프레임워크)는 알려진 취약점을 확인할 수 있다. 소프트웨어 구성 분석 (SCA: Software Composition Analysis) 도구는 소스 코드를 분석하여 빌드시 사용하는 모든 구성 요소와 각각의 버전을 확인하고 알려진 취약점 정보를 제공한다.

자체 개발 코드는 사용한 개발 언어를 지원하는 정적 보안 분석 테스트 (SAST: Static Application Security Testing) 도구를 사용하여 취약점을 확인할 수 있다. 최신 정적 보안 분석에서 취약점 분석을 지원하지 않는 오래된 버전의 개발 언어를 사용하는 시스템의 경우 개발 언어 자체의 취약점으로 시스템이 위험할 수 있다. 이런 경우 소스 코드를 최신 버전의 언어로 업데이트 하고 분석을 해야 한다.

 

 

 

시스템 구성 요소의 기술 지원이 가능한가?

시스템의 취약점은 매일 발생하고 있다. 알려진 소프트웨어의 취약점 데이터베이스인 (NVD: National Vulnerability Database) 에 따르면, 2023년에는 평균적으로 매일 80여 개의 취약점(CVE: Common Vulnerabilities and Exposures)이 등록되었고, 이 중 12개는 공격하기 쉽고 데이터 조작이 가능한 심각(Critical) 상태로 분류되었다. 운영 중인 시스템은 언제든지 새로운 취약점이 발견될 수 있다.

소프트웨어 구성 분석을 통해 확인한 외부 코드의 취약점은 각 소프트웨어 제공 업체의 보안 패치 같은 기술 지원을 통해서 제거 할 수 있다. 소프트웨어 제공 업체는 대개 소프트웨어 버전 별 기술 지원 스케줄을 가지고 있다.

예를 들면, 웹 서비스 개발의 대표적인 프레임 워크인 스프링 프레임 워크는 1년마다 새로운 버전을 내놓고 있으며, 각 버전 별로 2년간 기술 지원을 제공하고 있다. 기술 지원 기간을 지난 버전의 스프링 프레임 워크를 사용하는 시스템은 취약점 발견 시 보안 패치가 제공되지 않아 시스템이 위험에 노출되게 된다.

 

개발 언어 또한 버그 수정 및 보안 패치 같은 기술 지원이 필요하다. 기술 지원이 종료된 언어는 새로운 취약점에 대한 보안 기능이 부족할 수 있다. 언어의 기술 지원 스케줄을 확인하여 기술 지원이 가능한 언어로 시스템을 업데이트 하여야 한다.

앞서 기술한 바와 같이 외부 소프트웨어나 개발 언어의 기술 지원을 유지하기 위해 지속적인 버전 업그레이드가 필요하며 이 과정에서 소스 코드의 수정 및 구조 변경이 필요할 수 있다. 또한 추가 보안 기능 옵션을 제공하는 보안 패치를 올바르게 적용하기 위해서와 정적 보안 분석을 통해 발견한 자체 개발 코드 취약점을 제거 하기 위해서도 소스 코드 수정이 필요하다. 이렇게 지속적으로 기술 지원을 유지하고, 보안 취약점을 올바르게 제거 하기 위해서 시스템을 잘 아는 개발자의 지원이 필요하다.

 

 

소스 코드와 시스템의 일관성을 위한 형상 관리와 배포 통제

시스템의 취약점 복원력 분류 프로세스를 통해 복원력을 갖추게 되면 비로소 시스템의 취약점을 모니터링 할 수 있게 되었다. 하지만 분석 도구가 점검한 소스 코드와 시스템에 적용된 소스 코드가 다르면 정확한 분석 결과를 신뢰할 수 없게 된다. 시스템의 정확한 분석을 위해서 시스템과 소스 코드의 일관성이 유지되어야 하고, 이를 보장하기 위한 형상 관리 와 배포 통제 정책이 필요하다.

형상 관리

소스 코드 저장소는 형상 관리 기능을 사용하여 시스템에서 동작하는 소스 코드에 태그를 붙이고, 태그 된 소스 코드의 취약점 이력을 확인하여 시스템 취약점 모니터링의 정확도를 높일 수 있다. 표준 소스 코드 저장소를 도입하여 흩어져 있는 소스 코드를 중앙에서 관리하여 미확인 코드의 배포를 막고, 표준 분석 도구와의 연계 및 자동 점검을 통해 소스 코드와 시스템의 일관성 유지가 가능하다.

PHP와 같은 스크립트 언어로 개발된 시스템은 시스템에서 직접 코드를 수정하여 기능을 추가할 수 있다. 시스템에서 직접 코드 수정이 일어나면 소스 코드와 시스템의 일관성이 깨지게 된다. 따라서 시스템에서 코드 수정을 제한하고, 형상 관리 도구를 통한 코드 수정만 허용하는 정책을 세워 적용해야 한다. 예를 들면 시스템 코드의 수정 권한을 제거하는 등의 방법을 통해 시스템의 소스 코드 수정을 제한할 수 있다.

배포 통제

표준 CD(Continuous Deployment) 도구는 배포 경로를 일원화 하여 출처를 알 수 없는 소스 코드의 시스템 적용을 막고, 취약점 분석 도구로 검증되지 않은 코드가 배포되지 않도록 통제 한다. 실제 운영 상황에서는 Hotfix 와 같은 형태로 급하게 추가되는 수정 사항이 취약점 분석을 건너뛰고 배포되어 소스 코드와 시스템의 일관성을 깨뜨릴 수 있다. Hotfix라 할지라도 취약점 분석을 통과한 소스 코드만 배포되도록 통제를 강화하거나, Daily 점검을 통해 지연된 일관성을 유지 할 수 있다.

형상 관리와 배포 통제는 시스템과 소스 코드의 일관성을 유지하여 취약점 발생시 문제 원인 분석을 위한 시간을 단축한다. 표준화된 형상 관리, 점검 도구, 배포 도구의 도입은 소스 코드와 시스템의 일관성을 높이고, 동일한 기준으로 취약 시스템의 우선순위를 판단할 수 있는 근거를 제공하여 효과적으로 시스템의 보안 수준을 높일 수 있다.

 

소스 코드 분석을 통한 취약점 관리 항목

모의 해킹 같은 동적 취약점 분석은 외부 코드의 취약점이나, 기능적 취약점을 파고들어 시스템을 공략한다. 이를 통해서 실제 사이버 공격 발생 시 취약한 부분을 판단할 수 있으나 시스템 전체의 취약점을 확인 할 수 없고, 자동화 하기 어렵다. 반면 소스 코드 분석을 통한 정적 취약점 분석 방식은 시스템의 모든 부분의 취약 패턴을 찾을 수 있고, 소스 코드만으로 수행할 수 있어 자동화하여 취약점 현황을 관리하기 좋다. 소스 코드 분석으로 관리할 항목으로는 외부 코드 보안 취약점, 소스 코드 취약점, 소스 코드 내 자격 증명이 있다.

외부 코드 보안 취약점

시스템은 다양한 방식으로 외부 코드를 사용한다. 라이브러리나 프레임워크 혹은 소프트웨어 형태로 존재하는 외부 코드(오픈소스, 상용 소프트웨어)는 시스템 개발자가 활용하는 방법만 알뿐 구조를 알기도 어렵고, 소스 코드를 볼 수 없는 경우도 있다. 이러한 외부 코드의 취약점은 소프트웨어 구성 분석 (SCA: Software Composition Analysis)도구를 활용하여 취약점을 확인 할 수 있다. 외부 코드의 취약점은 매일 추가되고 있으므로 소프트웨어 구성 분석 도구의 취약점 데이터베이스를 매일 업데이트 하여 취약한 시스템을 업데이트 해야 한다.

소스 코드 취약점

개발자가 직접 개발한 코드는 정적 보안 분석 테스트(SAST: Static Application Security Testing) 도구를 활용하여 취약점을 확인 할 수 있다. SAST는 시스템의 전체 영역에 대한 취약 패턴을 찾는 장점이 있는 반면 개발자가 의도한 로직을 취약점으로 판단할 수 있다. 이러한 이유로 SAST은 각 취약 이슈에 대해서 개발자가 확인하는 리뷰 단계를 만들어 두고 있다. 개발자가 보안 지식이 없는 경우 취약점을 정상 코드로 리뷰 할 수 있기 때문에 SAST 도입 시 개발자의 시큐어 코딩 교육을 병행하고, 리뷰 더블 체크 프로세스를 고려해야 한다.

자격 증명

소스코드는 여러 가지 이유로 공개되거나 공유될 수 있다. 이때 코드에 패스 워드나 토큰 같은 자격 증명이 있으면 악용될 수 있다. Credsweeper 같은 자동화된 자격 증명 분석기를 사용해 소스코드 내 자격 증명을 모두 추출하고, 추출한 자격 증명은 소스코드와 분리하여 자격 증명이 쉽게 노출 되지 않도록 관리해야 한다. 자격 증명은 서버 내 암호화된 환경 변수나 설정 파일로 만들어 쉽게 노출 되지 않고, 바로 사용할 수 없도록 관리하는 것이 바람직하다.

위에 열거한 소스코드 분석 도구는 자동화된 분석으로 효과적으로 시스템의 취약점 지표를 제공한다. 앞서 설명한 형상 관리, 배포 통제와 더불어 배포 단계 별 고려 사항을 아래 표로 정리해 보았다.

 

 

마치며

지금까지 기업 IT시스템의 보안 취약점 관리 방법에 대해서 다루었다. 에스코어는 오픈소스 거버넌스 사업을 통해 기업 시스템 보안 취약점 관리의 필요를 이해하고 있다. 오픈소스 거버넌스에 소스코드 관리를 포함한 소스코드 거버넌스로 기업 IT시스템의 효율적인 관리를 지원하고 있다.

체계적인 시스템 분류 방법 및 취약점 현황을 효과적으로 모니터링 하기 위한 표준 도구와 정책은 소스코드 거버넌스의 주요한 관리 요소이다. 이 외에도 기업에서 취약점 관리를 진행하면 고려할 요소들이 있다. 조직의 구성, 외부 코드 관리 방안, 기술 지원 확보 같은 다양한 고려 사항이 있다.

기업 IT시스템의 취약점 관리는 급변하는 IT 환경에서 직원들의 만족 뿐 아니라 고객의 신뢰를 구축할 수 있다. 잘 구성된 IT시스템 취약점 관리 체계를 구축하여 신뢰를 기반으로 한 기업 경쟁력 강화하기를 바란다.

# References

- 2024년 사이버 보안 동향 : 주요 단계, 전략 및 지침
- 2024 사이버 보안 위협 분석과 전망 - 과학기술정보통신부 한국인터넷진흥원
- 2024 Voice of the CISO Report - Proofpoint
- 2024 오픈소스 보안 및 위험 분석 보고서(OSSRA) - 시놉시스 (synopsys.com)

현지일 프로

현지일 프로

소프트웨어사업부 OSS사업팀

에스코어 OSS전략사업그룹 소속으로 소스코드 관리 TF를 운영하고 있습니다.

목록

연관 아티클

  • TCP Wrapper 지원 종료 및 대응 전략
    오픈소스 SW2024.12.10

    TCP Wrapper 지원 종료 및 대응 전략

    자세히 보기
  • 벡터 임베딩 모델의 이해와 활용 : 최적의 임베딩 모델 찾기
    SW 테크놀로지2024.11.13

    벡터 임베딩 모델의 이해와 활용 : 최적의 임베딩 모델 찾기

    자세히 보기
  • JBoss EAP 8 주요 변경사항 가이드
    2024.08.01

    JBoss EAP 8 주요 변경사항 가이드

    자세히 보기