자동화 된 바이너리

마지막 업데이트: 2022년 7월 12일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
인사이너리 클래리티는 오픈소스 프레임워크인 바이너리 어낼리시스 툴(BAT)을 기반으로 개발됐다. 아마인 헤멜(사진) 인사이너리 최고기술책임자(CTO)가 10년 전 개발을 시작해 세계적으로 글로벌 IT 시장에서 6년 동안 바이너리 코드에 대한 오픈소스 라이선스 컴플라이언스 검증 도구로 사용돼왔다.

자동화 된 바이너리

잠깐! 현재 Internet Explorer 8이하 버전을 이용중이십니다. 최신 브라우저(Browser) 사용을 권장드립니다!

  • 김선애 기자
  • 승인 2018.12.26 18:17
  • 댓글 0

4차 산업혁명의 파고가 거세지고, 새로운 기술과 트렌드 확산이 빨라지면서 IT 업계는 올해 역시 다사다난한 한 해를 보냈다. 국내 ICT 시장의 활성화는 아직 기대에는 미치지 못했지만 IT 메가트렌드 수용이 점점 속도를 내면서 차세대 시장 개화를 촉진할 발판은 마련했다는 평가다. 어려운 상황 속에서도 의미 있는 행보와 성과를 보인 시장과 기술을 중심으로 올 한해를 짚어보고, 내년 시장을 전망했다. 2019년은 싹을 틔우기 시작한 차세대 열매들을 거둬들일 수 있는 원년이 될지 주목된다.

오픈소스가 새로운 보안홀로 부상하고 있다. 현재 개발되는 소프트웨어의 90% 이상이 오픈소스로 구성되며, 개발과 동시에 배포, 운영하는 클라우드 마이크로 서비스에서는 소프트웨어 모듈의 거의 대부분이 오픈소스로 이뤄진다.

오픈소스는 전 세계 수많은 개발자들이 참여하고 있기 때문에 취약점 발견과 패치가 상용 소프트웨어보다 현격하게 빠르다. 그러나 현재 기업에서 사용하는 소프트웨어 중 취약점이 있는 오픈소스 모듈이 있는지 파악하지 못해 패치하지 못한다는 문제가 있다.

기업이 자체 개발한 소프트웨어는 물론이고 상용 소프트웨어도 취약점이 있으며, 해당 벤더가 패치를 배포할 때 까지는 무방비상태로 방치되는 상황이다.

상용 소프트웨어 개발 시 오픈소스 사용 내역을 공개하도록 되어있기 때문에 공격자는 타깃 기업이 사용하는 소프트웨어만 알고 있으면 여기에 포함된 오픈소스를 파악하고 자동화 된 바이너리 패치가 발표되기 전 공격할 수 있다. 보안에서 오픈소스는 ‘낮게 달려 따기 좋은 과일’이라고 표현하는 것이 이 때문이다.

오픈소스 보안 문제를 해결하는 가장 좋은 방법은 자동화된 취약점 점검 도구를 사용하는 것이다. 여러 오픈소스 커뮤니티와 협력해 새롭게 취약점과 패치가 발표되면, 기업/기관이 사용하는 애플리케이션 전체를 스캔해 해당 취약점을 찾아 자동으로 패치하는 기술을 제공한다. 또한 소스코드 없이 바이너리 형태로 남아있는 오픈소스 모듈도 찾아 패치할 수 있는 기술도 상용화돼 주목받고 있다.

오픈소스 보안은 IoT에서 더욱 빛을 발한다. 라이프사이클이 짧은 IoT 서비스를 위해서는 오픈소스 사용이 더욱 늘어날 것이며, 방대한 규모로 배포되는 오픈소스의 취약점을 자동으로 자동화 된 바이너리 점검하고 패치할 수 있는 보안 솔루션의 수요가 급증할 것으로 예상된다.

[보안뉴스 이상우 기자] 광주그린카진흥원이 바이너리 점검 솔루션 ‘사이벨리움(Cybellum)’의 사이버 디지털 트윈 플랫폼을 통해 자동차 사이버 보안 국제 표준인 UNECE WP.29의 요구사항의 준수를 점검하고, 신속하고 정확하게 각종 사이버 보안 평가 사업을 확대하고 있다고 전했다.

융합 보안 전문 기업 쿤텍(대표 방혁준)은 광주그린카진흥원에 바이너리 검증 기반의 위험 평가 자동화 솔루션인 ‘사이벨리움(Cybellum)’을 공급해 국내 자동차 산업 분야의 사이버 보안 안정성 강화를 지원한다고 밝혔다.

광주그린카진흥원은 커넥티드 카(Connected Car) 보급의 확대로 증가하고 있는 차량 소프트웨어 및 데이터에 대한 보안을 강화하고, 인공지능 기반의 자동차 생태계 조성, 자동차 부품 펌웨어에 대한 보안 강화, 새로운 사이버 보안 규정에 대한 효율적인 준수 점검 등을 위해 사이벨리움의 사이버 디지털 트윈 플랫폼을 도입했다고 밝혔다.

2010년 설립된 광주그린카진흥원은 자동차 부품 및 구성요소와 관련된 각종 시험 및 인증을 수행하는 공공기관으로, 국내 자동차 산업 발전을 위한 다양한 정책 및 기업 지원 프로그램을 운영하는 것은 물론 자동차 부품 개발의 경쟁력 강화 및 미래 자동차 산업의 핵심 기술 보안 강화를 지원한다. 또한, 국내 대규모 OEM 및 Tier 1 공급업체와 협력하고 있는 광주그린카진흥원은 자동차 자동화 된 바이너리 분야의 사이버 보안 강화를 위해 제정된 UNECE WP.29에 대한 각 공급업체의 요구사항 준수 여부를 점검한다.

광주그린카진흥원은 사이벨리움의 사이버 디지털 트윈 플랫폼을 기반으로 고객의 엠베디드 구성요소를 스캔하고, 소스코드에 대한 직접적인 접근 없이도 각 구성요소와 관련된 자동화 된 바이너리 인터페이스, 운영 체제, 암호관련된 각종 메커니즘, API 호출 등을 포함한 상세 정보에 대한 디지털 복제본을 자동으로 생성한다. 이를 기반으로 차량 소프트웨어와 관련된 취약점 및 잠재적인 보안 위협을 식별하며 표준 및 규정에 대한 분석을 토대로 각 고객의 사이버 보안과 관련이 없는 취약점을 자동으로 필터링해 보안 위협 탐지의 정확도를 높인다.

또한, 사이벨리움은 국제 표준, 규정, 조직의 보안 정책과의 격차를 분석해 조직과 관련된 보안 위협의 우선순위를 제공하고 이를 통해 제품의 ‘본 생산(SoP, Start of Production)’이 진행되기 이전에 보안 위협을 완화할 수 있는 적절한 대응방안을 수립할 수 있도록 지원하는 것이 특징이다.

사이벨리움을 국내 공급하는 쿤텍은 단순한 플랫폼 공급에서 그치지 않고 사이벨리움 기반의 교육 서비스를 제공해 자동차 산업 분야의 고객이 UNECE WP.29를 포함한 다양한 자동차 사이버 보안 표준의 요구사항을 심층적으로 확인하고 각 요구사항을 체계적으로 준수하기 위한 운영 지침을 수립할 수 있도록 지원한다.

사이벨리움 마이클 엥스틀러(Michael Engstler) CTO는 “사이벨리움은 자동화 플랫폼을 제공해 다량의 자동차 구성요소 및 해당 구성요소와 관련된 수많은 코드라인에 대한 빠르고 정확한 검증을 수행한다. 또한, 사이벨리움은 자동차 산업의 사이버 보안 강화를 위해 새로운 국제 표준 및 규정이 제정되고 있는 상황에서 OEM과 공급업체는 각종 산업 규정과 요구사항 및 각 조직의 보안 정책의 준수 여부를 점검할 수 있도록 지원한다”며, “사이벨리움의 사이버 디지털 트윈 플랫폼은 광주그린카진흥원이 차량 펌웨어 테스트를 위한 각종 프로세스를 자동화해 자동차 구성요소의 보안성 검증에 대한 정확성과 효율성을 동시에 높일 수 있도록 지원한다”고 말했다.

광주그린카진흥원 김진범 선임연구원은 “광주그린카진흥원은 사이벨리움의 자동화 플랫폼을 기반으로 고객의 사이버 보안 상태를 빠르고 정확하게 검증할 수 있게 되어 각종 평가 및 인증 프로세스에 소요되는 시간을 획기적으로 단축하고 잠재적인 사이버 위협 탐지를 위한 정확성을 높이는 것은 물론 각종 국제 표준 및 규정의 요구사항 준수 여부를 체계적으로 점검해 자동차 산업 자동화 된 바이너리 분야의 전반적인 보안성을 개선할 수 있게 됐다”고 말했다.
[이상우 기자([email protected])]

인사이너리, 바이너리 코드로 오픈소스 보안 자동화 된 바이너리 취약점 검증하는 '클래리티' 발표

국내외 오픈소스 및 보안 전문가들이 올해 6월 설립한 오픈소스 솔루션 전문 벤처기업 인사이너리(Insignary)는 소스코드 없이 0과 1로만 표현되는 바이너리 코드만으로 보안 및 컴플라이언스(규제준수) 문제를 검증하는 소프트웨어 '클래리티(Clarity)'를 4일 발표했다.

인사이너리 클래리티는 공급망에서 바이너리 코드로 공급되는 소프트웨어에 포함된 오픈소스의 보안 취약점과 오픈소스 라이선스의 법적 리스크를 검증하고 확인하는 도구다. 현재 베타 프로그램으로 제공되며, 공식 판매용 제품은 2017년 1월 출시할 예정이다.

인사이너리 클래리티는 오픈소스 프레임워크인 바이너리 어낼리시스 툴(BAT)을 기반으로 개발됐다. 아마인 헤멜(사진) 인사이너리 최고기술책임자(CTO)가 10년 전 개발을 시작해 세계적으로 글로벌 IT 시장에서 6년 동안 바이너리 코드에 대한 오픈소스 라이선스 컴플라이언스 검증 도구로 사용돼왔다.

신제품은 BAT 엔진의 정확도를 향상시키고, 고도의 오픈소스 보안 취약점 정보와 그래픽 유저 인터페이스(GUI)를 추가 제공한다. 또 클라우드에서 동작하거나 서버에서 직접 동작할 수 있도록 옵션을 추가했다. 기업 단위의 대규모 사용이 가능하고, 상용 보안 데이터베이스(DB)를 사용, 젠킨스(Jenkins)와 같은 자동화된 빌드 시스템을 지원한다.

안랩의 연구소장과 CTO를 역임하고 인사이너리 창업 멤버로 합류한 조시행 전무는 "모바일, 임베디드, 사물인터넷(IoT), 자동차 등에서 오픈소스 사용은 필수적이며, 이런 환경에서 오픈소스의 보안 취약점 점검은 그 어느 때보다 중요하다"며 "인사이너리 클래리티는 기업이 외부 코드를 더욱 안전하게 사용하도록 도와준다"고 말했다.

자동화 된 바이너리

CI는 애자일 프로젝트를 수행하는 데 많은 도움이 됩니다.

애자일 방법론에 관해 이야기하기에는 이 글이 너무 길어지기 때문에 여기를 보고 오시면 좋을 것 같습니다.

애자일 개발 방법론은 빠른 배로플 기반으로 하는데, CI는 애자일에서 필요한 속도를 얻는데 도움을 줍니다.

하지만 어떻게 CI가 이 과정에서 도움이 될까요? 간단한 예제를 통해 알아봅시다.

기능을 개발할 떄는 코드를 여러번 수정하게 되는데, 이 과정에서 코드를 반영하고, 버전 관리 시스템에서 변경 사항을

가져오고, 소스코드를 빌드하고, 단위테스트를 진행하고, 통합된 코드를 빌드하고, 이를 묶어 배포하는 등 여러 과정을 수행합니다. CI 환경에서는 젠킨스 같은 도구를 이용해 모든 과정을 빠르게 자동화 된 바이너리 에러 없이 진행할 수 있습니다.

알람을 추가하면 이 과정은 더욱 빨리집니다. 팀원이 빌드, 통합, 배포, 실패를 빨리 알아차릴 수 록 더 빨리 대응할 수 있습니다. CI에서 수행되는 모든 절차는 다음 그림과 같습니다.

저는 webhook을 통해서 Github에서 push하면 Jenkins에서 webhook을 받아서 Gralde을 통해서 테스트-빌드를 수행한 후 깃허브에서 결과를 알람으로 받고, 추가로 Slack를 통해서도 알람을 받도록 하였습니다.

위의 알람을 받는 과정에서는 다음 글에서 설명하도록 하겠습니다.

따라서 즉, 이런 방법을 통해 팀은 기능을 빠르게 개발할 수 있습니다. 즉 애자일 방법론의 기민함은 CI를 통해 달성된다고 볼 수 있습니다.

CI를 통해 이득을 볼 수 있는 프로젝트 종류

최근 거의 모든 제품에는 임베디드 스포트웨어가 탑재되고 있습니다. 이런 것들은 소프트웨어 관련 기능이 포함돼어 있습닏. 따라서 제품의 소프트웨어 기능이 마케팅에 이용되고 있습니다.

새로운 제품을 홍보해야 하는 상황이 늘어남에 따라 제품은 점점 복잡해지고 있습니다. 복잡해짐에 따라 애자일 방법론과 CI가 대중의 관심을 받기 시작했습니다. 웹 기반 프로젝트, 전자상거래 프로젝트, 모바일 애플리케이션 개발 등 거의 모든 종류의 프로젝트에서 CI를 활용할 수 있습니다.

CI와 애자일 방법론은 자바, 닷넷, 루비 온 레일즈 등 현존하는 모든 종류의 프로그래밍 언어를 사용하는 프로젝트에서 사용할 수 있습니다.

CI 절차의 구성 요소

1. 버전 관리 시스템

전 Git을 통해 버전을 관리 하고 있습니다.

전 GIt flow 브렌치 관리 전략을 사용하고 있습니다.

CI 도구는 단순히 지휘자 역할을 합니다. CI 도구는 CI 시스템의 중심에 위채해 버전 자동화 된 바이너리 관리 시스템, 비들 도구, 바이너리 관리도구, 테스트 및 프로덕션 환경, 소스코드 분석 도구 및 자동화 테스트 도구 등을 연결합니다.

대표적으로 Jenkins, GitLab CI, Trvais CI가 있습니다.

  • GitLab CI, Trvais CI는 Jenkins에 비해 플러그인이 적습니다.
  • 또한 Trvais CI 같은 경우에는 유료 서비스를 이용할 경우 가격이 꽤 비쌉니다.
  • 무료입니다.
  • 많은 플러그인을 지원하며, 커스터마이징이 다양합니다.
  • 많은 사용자들을 보유하고 있고, 관련 문서가 많습니다..
  • 호스팅을 직접해야하기 때문에 관련된 모든 부분을 관리할 수 있습니다.

고려해야할 사항이 있습니다. Build Server를 직접 구매 및 운영해야 하기 때문에 발생하는 단점이 있습니다.
하나부터 열까지 전부 환경설정을 구축해야하며, 서버를 관리하는데 발생하는 비용이 낭비가 될 수 있기 때문입니다.

따라서 규모가 자동화 된 바이너리 크지않은 프로젝트거나, 외부 클라우드 서비스를 이용하는 상황등이라면 Jenkins말고 다른 서비스도 고려해볼 가치가 있다고 생각합니다.

하지만 저는 현재 규모가 크고 대용량 트레픽을 고려한 서비스를 만들고 있고, 네이베 클라우드에서 무료로 10만 크레딧을 지원해주기 때문에 저는 Jenkins를 사용하기로 결정했습니다.

개발을 하면서 느끼는 거지만, 모든 일에 정답은 없다고 생각합니다. 상황에 맞게 최선의 방법을 채택하여 가장 높은 효율을 낼 수 있는 방안을 선택하는 것이 중요하다고 생각합니다.

4. 자동으로 시작되는 빌드

빌드 자동화는 코드를 컴파일하고 실행 파일을 만들어내는 여러 단계를 자동화하는 것입니다. 주로 엔트, 메이븐, 그래들 같은 빌드 도구로 자동화합니다. 자동으로 시작되는 빌드는 CI 시스템에서 가장 중요한 부분으로, 다음 두가지 조건이 충족돼야 합니다.

  • 빠른 속도
  • 코드나 통합 이슈를 최대한 빨리 잡아내는 것

빌드가 하루에 100~200번 발생하는 프로젝트도 있는데, 이경우에는 속도가 매우 중요합니다. 빌드를 자동화하면 많은 시간을 절약할 수 있고 빌드를 시작시키는 행위도 자동화되면 변화는 더욱 커집니다.

코드가 변화하면 자동으로 빌드가 시작되게 하는 시스템은 더욱 많은 시간을 절약시켜 줍니다.

빌드가 자주 발생하고 빠르게 수행되면 플임 워크에서는 여러 여러 이슈(빌드 에러, 컴파일 에러, 통합 에러)등을 발견할 확률이 높아지고 발견되는 시점도 빨라집니다.

소프트웨어의 품질을 유지하려면 다양한 테스트 시나리오를 통해 소스를 테스트해야 합니다. 테스트를 간과하면 납기 지연이나 고객 불만족이 야기될 수 있습니다. 테스트는 수작업이고, 오랜 시간이 소요되는 반복적인 일이기 때문에 테스트 과정을 자동화하면 소프트웨어 배포에 걸리는 시간을 대폭 단축시킬 수 있습니다.

테스트를 자동화할 때에는 몇 가지 사항을 고려해야 합니다.

  • 중요하고 구현하기 쉬운 테스트 케이스를 먼저 자동화하는 것이 현명한 방법입니다.
  • 모든 테스트 절차가 동일하지만 다양한 데이터를 통해 테스트 되는 케이스가 좋은 예제 입니다.
  • 또한 소프트웨어의 기능 중 여러 플랫폼에서 테스트 되는 케이스르 자동화하는 것이 좋습니다.
  • 또한 다양한 설정이 적용돼 실행되는 소프트웨어의 테스트를 자동화하는 것이 좋습니다.

6. 바이너리 관리도구

소스코드는 CI를 통해 주기적으로 빌드돼 바이너리 파일로 만들어집니다. 바이너리 관리도구는 바이너리 파일의 버전 관리 시스템입니다.

바이너리 관시 시스템은 .jar, .war, .exe 등의 파일을 관리합니다. 빌드가 수행되고 필요한 검증이 진행된 후, 빌드된 바이너리 파일들이 바이너리 관리 도구로 복사됩니다. 이를 통해 개발자나 테스터가 수동으로 필요한 바이너리를 골라 배포하고 테스트할 수 있씁니다. 자동화된 테스트가 구성돼 있다면 빌드된 바이너리 파일은 자동으로 적합한 테스트 환경에 배포됩니다.

바이너리 관리 도구의 가장 중요한 장점은 결과물이 중앙 서버에 저장돼 필요할 때마다 쉽게 접근 가능해지는 것 입니다. 따라서 우리는 쉽고 간단하게 배포 환경을 만들 수 있습니다.


0 개 댓글

답장을 남겨주세요