[vc_row][vc_column][vc_column_text]오픈 소스 소프트웨어(Open Source Software, OSS)는 오늘날 소프트웨어 개발의 중요한 축을 이루고 있습니다. 전 세계의 개발자들이 협력하여 소스 코드를 공개하고, 누구나 이를 사용, 수정, 배포할 수 있도록 허용하는 오픈 소스 소프트웨어는 혁신과 협업의 상징으로 자리 잡았습니다.
하지만 이렇게 많은 사람이 소스 코드를 볼 수 있고 이용할 수 있는 만큼 그에 따른 위험성도 존재합니다. 보안에 취약점이 발생하여 큰 문제를 일으킬 수 있습니다. 대표적인 사례로 Log4j 사태가 있습니다.
Log4j는 자바 개발 환경에서 로그를 수집하는 기능으로 사용되고 있는 오픈 소스 소프트웨어로 많은 곳에서 사용이 되고 있습니다. 하지만 2021년 12월에 CVE-2021-44228 취약점이 발견되면서 해킹 피해가 발생하기 시작했습니다.

[Log4j 취약점 개요도]
(출처: https://www.kisa.or.kr/20205/form?postSeq=1017&page=1#fnPostAttachDownload)
쉽게 공격할 수 있고 치명적인 문제를 발생시킬 수 있었던 이 취약점은 2013년부터 8년간 공개되지 않았다가 2021년 12월에 공식화되었습니다.
공식화되고 log4j를 사용 중인 여러 곳에서 보안패치를 진행하여 대응하였지만, 취약점이 너무 광범위하여 문제 해결에 상당 기간이 소요되었습니다.

[오픈 소스 소프트웨어 재사용 시 주의할 점]
(출처: https://www.oss.kr/oss_guide/show/44256fef-0e14-425b-9dbd-9195a328fa96)
이렇게 재사용을 하더라도 취약점이 그대로 전파될 가능성이 있으므로 개발 과정에서부터 유지보수까지 관리가 필요합니다.
과학기술정보통신부는 log4j 취약점 사태로 소프트웨어공급망 보안 중요성이 부각되면서 소프트웨어 개발부터 유지관리까지 전반적인 소프트웨어 사용주기에 대한 보안 강화가 필요하다고 진단하였습니다.

[OSS 거버넌스 프레임워크]
(출처: IT위키 공개_소프트웨어_거버넌스)
Log4j 같은 문제가 발생하지 않게 하려면 철저한 Life cycle 관리가 필수적입니다. 오픈 소스 소프트웨어를 사용하더라도 소프트웨어 개발 생명 주기(Software Development Life Cycle, SDLC)에서 충분한 요구 사항 분석 및 변경사항 탐지를 통하여 테스트와 유지보수가 필요합니다.
이번 글에서는 오픈 소스 소프트웨어를 사용할 때 소프트웨어 개발 생명 주기 중에 V-모델을 이용하여 어떤 식으로 개발되고 관리가 되어야 하는지 그리고 소프트웨어 개발 생명 주기 관리 도구에 대해 알아보겠습니다.
소프트웨어 개발 생명 주기
소프트웨어 개발 생명 주기(SDLC)란 시스템 엔지니어링, 정보 시스템, 또는 소프트웨어 공학에서 정보 시스템을 요구분석부터 유지보수까지 전 공정을 체계화한 절차를 의미합니다.

[일반적인 소프트웨어 개발 Life Cycle V-모델]
(출처: https://www.oss.kr/info_test/show/75437834-08e1-4023-8197-6f673075ad43)
V 모델은 소프트웨어 개발 생명 주기에 폭포수 모델이 확장된 형태로 개발 생명 주기의 각 단계와 그에 상응하는 소프트웨어 시험들을 연결지어서 보여주어서 각 개발단계를 진행하면서 검증을 하는 데 초점을 둔 모델입니다.
개발단계를 검증하는 데 초점을 두므로 오류가 발생하는 것을 사전에 방지하여 최소화할 수 있습니다.
소프트웨어 개발 생명 주기를 사용하면서 무엇보다도 중요한 건 관리입니다. 관리가 잘되어야 사전에 문제점을 파악하여 방지할 수 있기 때문입니다. 밑에 나오는 내용은 생명 주기 관리 도구를 사용하는 방법입니다.
소프트웨어 개발 생명 주기 관리
소프트웨어 개발 생명 주기 관리는 소프트웨어의 개념화, 개발, 배포, 유지보수, 폐기에 이르는 모든 단계를 체계적으로 관리하는 것을 의미합니다. 이는 오픈 소스 소프트웨어의 품질을 유지하고, 보안 취약점을 최소화하며, 지속 가능한 개발을 가능하게 합니다.

[ISO 26262 V 모델 및 이를 지원하는 데 사용되는 도구] (출처: LDRA)
LDRA에 Life cycle 단계별로 지원하는 도구들을 이용하여 소프트웨어 요구 사항을 추적 관리하고 분석을 통하여 각 단계에서 발생할 수 있는 잠재적 위험을 사전에 식별하고 대응하여 예기치 않은 문제를 예방하고 보안 취약점을 초기에 파악하여 최소화할 수 있습니다.

[LDRA tool suite의 TBmanager 구성 요소를 사용한 자동화된 양방향 추적성] (출처: LDRA)
LDRA TBmanager 도구는 소프트웨어 개발 생명 주기 전체 단계에 걸쳐 요구 사항, 설계, 소스 코드, 테스트, 분석 등을 관리하고 처리합니다. 이를 통해 요구 사항 추적 매트릭스(Requirement Traceability Matrix, RTM)의 자동 유지 보수, 양방향 추적성, 실시간 영향 분석이 가능합니다.

[LDRA tool suite의 TBmanager 구성 요소를 사용하여 요구 사항 추적 자동화] (출처: LDRA)
TBmanager를 이용하여 요구 사항을 추적 및 분석하여 새로운 또는 변경된 요구 사항에 대한 영향을 평가할 수 있습니다.
또한, 요구 사항, 소스 코드, 시험 데이터의 변경사항을 자동으로 탐지하여 해당 변경이 다른 테스트에 영향을 미치는 정도를 보여줍니다. 검토를 위한 산출물 생성 및 변경사항에 대한 시험을 자동으로 진행하고 이를 통해 예기치 못한 문제나 보안 취약점을 식별할 수 있습니다.
LDRA TBvision 및 TBrun 도구는 정적 분석 및 동적 시험을 통하여 오픈 소스 소프트웨어를 이용한 개발 산출물과 요구 사항을 확인하여 잠재적 결함 검출 및 품질 측정 결과를 제공합니다.

[TBvision에서 정적 분석을 진행한 결과] (출처: LDRA)
TBvision은 정적 분석을 통하여 원본 소스 코드에서 코딩 표준 위반 및 소프트웨어 결함을 시각화하여 보여줄 수 있습니다. 이를 통하여 오픈 소스 소프트웨어를 사용하더라도 결함을 조기에 식별할 수 있습니다.


[TBrun에서 동적 시험 진행하는 과정 및 결과] (출처: LDRA)
TBrun은 단위/통합 테스트 도구로, 소프트웨어 개발 산출물에 대한 제어 및 데이터 흐름 분석을 사용하여 단위 인터페이스, 매개 변수, 전역 변수, 반환 값, 변수 유형, 데이터 사용량 및 프로시저 호출에 대한 세부 정보를 추출하여 구조 분석 및 단위 테스트를 진행합니다.
이를 통하여 오픈 소스 소프트웨어를 사용하더라도 구조 분석과 단위 테스트를 진행하여 보안 취약점 및 결함을 식별할 수 있습니다.
결론
오픈 소스 소프트웨어를 사용하게 되면 편리하고 비용 절감이 되며 유연성과 확장성이 보장되지만, 누구나 소스 코드를 보고 사용할 수 있으므로 그에 따른 보안 취약점 및 문제점이 존재할 수 있기 때문에 무엇보다도 소프트웨어 개발 생명 주기의 관리가 중요합니다.
LDRA 같은 도구를 사용하여 전반적인 Life cycle이 관리가 되면 오픈 소스 소프트웨어를 사용하더라도 요구 사항 및 소스 코드 등에 대해 사전에 문제점 및 보안 취약점을 식별하여 Log4j 같은 사태를 미리 방지할 수 있습니다.
[/vc_column_text][/vc_column][/vc_row]
오픈소스 소프트웨어 취약점 관리 도구 LDRA
LDRA – (주)모아소프트 (moasoftware.co.kr)
관련문의 : 02-6945-2156








