자동화 된 바이너리

마지막 업데이트: 2022년 4월 17일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

UGS 사전 컴파일링된 바이너리

언리얼 게임 싱크 를 사용한 빌드 동기화 및 컴파일링은 언리얼 엔진을 컴파일링할 수 있고 일련의 스크립트를 사용하여 빌드 프로세스를 자동화하는 IDE가 로컬 장치에 있는지에 따라 달라집니다. 그러나 프로젝트의 많은 참여자는 코드 기반으로 작업하지 않거나 IDE에 액세스 권한이 없습니다. 이런 사용자들도 프로젝트의 최신 빌드를 사용할 수 있도록, 언리얼 게임 싱크는 빌드에 대한 사전 컴파일링된 바이너리(Precompiled Binary, PCB) 추가를 지원합니다. PCB는 .zip 파일로 퍼포스에 제출하여 체인지리스트와 연결할 수 있습니다. 그런 후에 언리얼 게임 싱크는 로컬로 컴파일링하는 대신 .zip 파일의 콘텐츠를 동기화 및 추출할 수 있습니다.

이때 로컬로 컴파일링할 때와 같은 유저 인터페이스를 사용하지만, 일치하는 바이너리가 자동화 된 바이너리 없는 변경 사항은 회색으로 표시됩니다. 환경설정이 완료되면 사용자는 옵션(Options) 메뉴 아래 있는 사전 컴파일링된 바이너리 동기화(Sync Precompiled 자동화 된 바이너리 Binaries) 에 체크하여 사전 컴파일링된 바이너리 사용을 허용받을 수 있습니다.

기본 퍼포스 설정

다음 단계는 언리얼 엔진 4 프로젝트에서 사전 컴파일링된 바이너리를 사용하기 위해 사용자에게 필요한 것을 설명합니다. 이 절차는 사용자가 소스 컨트롤로 사용하기 위한 퍼포스 설정 을 이미 완료했다고 가정합니다. 퍼포스 서버의 콘텐츠를 UGS와 함께 사용하도록 설정하려면 여기에 설명된 대로 진행합니다.

사용자는 엔진 소스 코드, 언리얼의 빌드 프로세스로 생성되지 자동화 된 바이너리 않은 종속성 및 프로젝트가 포함된 하나의 스트림이 필요합니다.

필요한 언리얼 엔진 파일이 모두 존재하는지 확인하려면 사용자는 에픽의 기존 퍼포스 릴리스 스트림 중 하나에서 복사해야 합니다.

//UE4/Release-4.xx 명명 규칙에 따른 다른 릴리스 스트림에서 복사해도 됩니다. 개발자가 로컬로 빌드를 시작한 후 스트림 사본에 다른 파일이 추가되지 않도록, .p4ignore.txt 파일이 복사되었는지 반드시 확인합니다.

사용자는 GitHub 소스 빌드 를 사용하여 GitDependencies.exe 를 실행하고 수집한 종속성뿐 아니라 전체 소스를 업로드할 수 있습니다. 에픽의 퍼포스 스트림 중 하나를 복사하는 것은 여전히 권장된 경로이며, 파일의 수집, 생성, 업로드 방법과 상관없이 .p4ignore.txt 파일은 반드시 스트림에서 복사해야 합니다.

퍼포스 내에서 파일을 어떻게 설정하기로 결정하든, 파일 유형과 권한이 설정하는 릴리스의 릴리스 스트림과 일치하도록 합니다. 우리의 스트림에서 쓰기 가능하다고 표시된 파일은 여러분의 스트림에서도 쓰기 가능해야 합니다.

쓰기 가능 항목과 불가능 항목의 불일치로 인해 빌드 또는 런타임 오류가 발생할 수 있습니다. 이러한 권한을 확인하려면 퍼포스 에서 스트림을 열고 자동화 된 바이너리 파일명 오른쪽을 확인합니다.

퍼포스에서 권한 확인

여러분의 스트림에서 파일 유형이나 권한을 변경해야 하는 경우, 편집을 위해 파일을 연 후 우클릭하고 파일 타입 변경(Change Filetype) 을 클릭합니다.

퍼포스에서 파일 타입 변경

이렇게 하면 우리의 릴리스 스트림과 일치하도록 파일 타입과 권한을 편집할 수 있는 메뉴가 열립니다.

빌드 또는 런타임 동안 특정 파일에 액세스 불가(Access Denied) 오류가 발생한다면, 이러한 권한이 제대로 설정되지 않았을 가능성이 큽니다.

UGS와 사용하는 모든 프로젝트는 네이티브 프로젝트여야 하고 언리얼 엔진용 파일과 같은 스트림에 있어야 합니다. 네이티브 프로젝트는 언리얼 디렉터리 구조의 최상위 디렉터리에서 발견되거나 .uprojectidrs 파일에 목록화된 경로의 한 레벨 깊이에서(언리얼 디렉터리 구조의 최상위 부분에서도) 발견할 수 있는 프로젝트입니다.

스트림 설정하기

사용자는 사전 컴파일링된 바이너리 .zip 파일을 보관하기 위해 별도의 스트림을 사용해야 합니다.

하나의 스트림을 사용할 수도 있지만, 첫 번째 스트림에 액세스할 수 있는 사용자라면 모두 액세스할 수 있는 두 번째 개별 스트림을 사용할 것을 강력히 권장합니다. 이렇게 하면 PCB를 사용하지 않는 팀 구성원의 이탈을 피할 수 있습니다.

이를 위해 별도의 워크스페이스를 유지할 필요는 없습니다. 언리얼 게임 싱크는 파일을 동기화하는 데 사용하는 것과 동일한 로그인 크리덴셜을 사용하여 비저장 방식으로 PCB를 가져옵니다.

PCB가 업로드될 스트림은 다음과 같이 구성합니다.

프로젝트의 루트 디렉터리 아래에 Build/UnrealGameSync.ini 를 추가하고 바이너리가 업로드될 퍼포스 위치를 참조합니다. UGS가 퍼포스에서 PCB를 가져올 때 파일을 검색하게 됩니다.

Build\UnrealGameSync.ini 의 예시 항목입니다.

UnrealGameSync.ini가 [Project Root]/Build/* 위치에 있어야 합니다.

ZippedBinariesPath 를 지정할 때 기억해야 할 세부 사항이 있습니다.

//UE4/Dev-Binaries/++UE4+Main-Editor.zip이라는 이름은 아래 업로드 부분에서 언급한 ArchiveStream 실행인자와 일치해야 하며, 여기서 ++UE4+Main은 슬래시가 ‘+' 문자로 이스케이프 처리된 현재 분기의 이름입니다. 실행인자를 사용할 때는 ‘+' 문자 대신 슬래시가 있어야 합니다.

PCB 스트림에 액세스할 수 있는 모든 사용자 계정은 새로운 PCB 세트를 업로드할 수 있지만 이 작업을 수행하는 방법은 사용자에게 달려 있습니다. 이는 스튜디오에서 디플로이하려는 방법에 따라 달라지기 때문입니다. 사용자가 수동으로 업로드를 수행할 수도 있고, 자동화된 빌드 노드가 수행할 수도 있습니다.

사전 컴파일링된 바이너리 생성 및 업로드하기

두 스트림을 설정하고 사용자가 액세스 권한을 받았다면, 이제 PCB를 생성하고 지정된 PCB 스트림에 업로드할 차례입니다.

PCB를 생성하고 업로드하려면 다음에 따릅니다.

메인 스트림 의 콘텐츠를 퍼포스에서 동기화합니다.

[UE Root]/Engine/Build/Graph/Examples/BuildEditorAndTools.xml 에 있는 예제에 기초한 BuildGraph 스크립트를 실행하여, PCB를 생성하고 올바른 퍼포스 위치에 업로드합니다( -ArchiveStream 실행인자로 위치 지정).

다음은 BuildEditorAndTools 를 사용한 명령의 예시입니다.

``` Engine\Build\BatchFiles\RunUAT.bat BuildGraph -Script=Engine/Build/Graph/Examples/BuildEditorAndTools.xml -Target="Submit To Perforce for UGS" -set:EditorTarget=ShooterGameEditor -set:ArchiveStream=//UE4/Dev-Binaries -p4 -submit ``` 이 예제에서 ShooterGame 은 네이티브 프로젝트이고 사용자가 PCB로 업로드하려는 프로젝트는 모두 네이티브여야 합니다.

BuildEditorAndTools.xml 사용에 관한 추가 정보는 파일 시작 시의 코멘트에서 찾을 수 있습니다.

ArchiveStream은 앞에서 지정한 ZippedBinariesPath와 일치해야 하지만, 슬래시를 이스케이프 처리한 ‘+' 자동화 된 바이너리 문자 대신 슬래시를 사용합니다.

이 예제에서는 //UE4/Dev-Binaries/++UE4+Main-Editor.zip에 zip 파일을 제출합니다. 여기서 ++UE4+Main은 슬래시가 ‘+' 문자로 이스케이프 처리된 현재 분기의 이름입니다. UnrealGameSync.ini 에서 ZippedBinariesPath 값도 동일한 경로로 설정해야 합니다.

CL 설명이 올바른 형식인지 확인하세요. UGS는 각각의 CL 설명이 'CL'로 시작하고 그 뒤에 8자리 숫자가 있을 것으로 예상하므로(CL ########) 바이너리와 연결된 체인지리스트를 알 수 있습니다.

이 .zip 파일에는 PDB가 포함되어 있지만 빌드 크기를 줄이기 위해 제거됩니다. 이렇게 하면 충돌로부터 콜스택을 수집할 수는 있지만 온전한 디버깅은 허용되지 않습니다. 팀에 더 좋은 심볼 스토리지가 필요하다면 심볼 서버를 사용하는 것이 좋은데, 이는 IT 및 디플로이 팀이 시행할 일입니다.

UGS에서 사전 컴파일링된 바이너리 사용하기

사전 컴파일링된 바이너리가 성공적으로 생성되어 보조 스트림에 업로드된 후, UGS는 주 스트림에 있는 파일을 사용하여 메인 스트림으로 PCB를 감지하고 사용할 수 있습니다.

사전 컴파일링된 바이너리 동기화(Sync Precompiled Binaries) 옵션을 활성화하고 최신 상태로 동기화합니다. 그림의 예제는 사전 컴파일링된 바이너리가 없는 스트림이지만 이전 단계에서 바이너리를 제대로 구성했다면 해당 옵션을 선택할 수 있을 것입니다.

DBpia

비밀번호를 변경하신 지 90일 이상 지났습니다.
개인정보 보호를 위해 비밀번호를 변경해 주세요.

비밀번호를 변경하신 지 90일 이상 지났습니다.
개인정보 보호를 위해 비밀번호를 변경해 주세요.자동화 된 바이너리

간편 교외 인증 이벤트 응모

표지

  • 한국산학기술학회
  • 한국산학기술학회 논문지
  • 한국산학기술학회논문지 제20권 제6호
  • 2019.06
  • 541 - 547 (7 pages)

내서재 담기 미리보기 이용하기

초록·키워드 목차 오류제보하기

최근 자동화 되는 해킹 및 분석 기술의 발전으로 인하여 수많은 소프트웨어 보안 취약점이 빠르게 발표되고 있다. 대표적인 취약점 데이터베이스인 NVD(National Vulnerability Database)에는 2010년부터 2015년까지 보안취약점(CVE: Common Vulnerability Enumeration) 약 8만 건이 등록되었으며, 최근에도 점차 증가하고 있는 추세이다. 보안 취약점은 빠른 속도로 증가하고 있는 반면, 보안 취약점을 분석하고 대응하는 방법은 전문가의 수동 분석에 의존하고 있어 대응 속도가 느리다. 이런 문제점을 해결하기 위해 자동화된 방법으로 보안 취약점을 탐색하고, 패치하여 악의적인 공격자에게 공격 기회를 줄 수 있는 보안 취약점을 사전에 대응 할 수 있는 기술이 필요하다. 본 논문에서는 복잡도 분석을 통해 취약점 탐색 대상 바이너리의 특징을 추출하고, 특징에 적합한 취약점 탐색 전략을 선정하여 취약점을 자동으로 탐색하는 기술을 제안한다. 제안 기술은 AFL, ANGR, Driller 도구와 자동화 된 바이너리 비교 검증 하였으며 코드 커버리지는 약 6% 향상, 크래시 개수는 약 2.4배 증가, 크래시 발생율 약 11% 향상 효과를 자동화 된 바이너리 볼 수 있었다. #Software Vulnerability #Vulnerability Analysis #Fuzzing #Symbolic Execution #Binary

요약
Abstract
1. 서론
2. 관련 연구
3. 동적 분석 기반 하이브리드 퍼징 기술
4. 성능 실험 결과
5. 결론 및 향후 과제
References

AI기반 취약점 자동탐지

소프트웨어 기업 A사에서 보안 업무를 담당하고 있는 B씨는 KISA로부터 당사의 소프트웨어에 새로운 취약점이 발견되었다는 공지 메일을 받았습니다. 이 취약점을 패치하기도 전에 공격은 이미 시도되었고, 이를 해결하기까지 1년 이상의 시간이 소요되었습니다.

실제로 지난해 발견된 보안 취약점은 2만개에 달하고, 하루에만 50여개의 신규 취약점이 발견되었습니다. 소프트웨어의 취약점을 자동으로 탐지 및 공격, 패치 등을 통해 방어할 수 있는 자동화된 시스템 개발이 시급한 실정입니다.

문제

제공된 SW 바이너리를 기반으로 취약점을 탐지하는 알고리즘과 발견된 취약점을 검증할 수 있는 코드(Exploit code)를 제시하시기 바랍니다.

참가신청

참가신청서 작성 후 [email protected] 로 발송해야 신청이 완료됩니다.

[수정][신청서 및 서약서]AI기반 취약점 자동 탐지

데이터셋(KISA-challenge 2018-Vulnerability) 설명

  • CWE 취약점 목록을 기반으로 개발한 취약점이 포함된 바이너리 데이터셋으로 한 개의 바이너리 자동화 된 바이너리 당 한 개의 취약점을 적용시켜 구성하였습니다.

※ 바이너리는 리눅스 X86 32bit 환경에서 작동됩니다.
※ 참가자는 경연 서버에서 실행중인 바이너리에 접근해 자동화 된 바이너리 취약점을 탐지 및 공격하여 획득한 Key값을 전송합니다.
※ 위의 전송 기능을 프로그램에 적용할 수 있도록 REST API 형태의 API를 제공합니다.

학습(연습) 데이터셋

  • KISA-challenge2018-Vulnerability-1st (학습(연습) 데이터 #1) : 취약점이 포함된 바이너리 15개
  • KISA-challenge2018-Vulnerability-2nd (학습(연습) 데이터 #2) : 취약점이 포함된 바이너리 15개
  • KISA-challenge2018-Vulnerability-3rd (학습(연습) 데이터 #3) : 취약점이 포함된 바이너리 15개

※ 취약점 분석 알고리즘 개발 시 테스트할 수 있도록 학습(연습) 데이터를 제공합니다.
※ 학습(연습) 데이터셋 #1은 참가신청서 확인 후 2~3일 내 순차배포, #2와 #3은 시범대회 당일 배포
※ AI기반 취약점 자동 탐지 트랙은 예선 기간 동안 3회의 시범대회 개최 예정

∨시범대회 결과를 바탕으로 본선 진출팀 선정

∨참가팀이 8팀 이하일 자동화 된 바이너리 경우 별도의 평가 없이 본선 직행

∨시범 대회 참가자들의 의견 및 대회 결과 등을 고려해 본선 규칙 확정 예정

본선 데이터셋

  • KISA-challenge2018-Vulnerability-final-1round : 1라운드 데이터셋, 취약점이 포함된 바이너리 10개
  • KISA-challenge2018-Vulnerability-final-2round : 2라운드 데이터셋, 취약점이 포함된 바이너리 10개
  • KISA-challenge2018-Vulnerability-final-3round : 3라운드 데이터셋, 취약점이 포함된 바이너리 20개

※ 본선 진행 시 학습 데이터와 다른 데이터셋을 라운드 별로 제공합니다. (데이터는 일부 중복될 수 있음)
※ 라운드 진행 시간 및 규칙 등 운영방식은 추후 공지 예정

자동화 된 바이너리

AI 사이버 공격·방어 응용. KAIST,

한국과학기술연구원(KAIST)이 인공지능(AI) 시스템을 이용해 해킹 자동 공격·방어 가능한 '바이너리 분석' 원천 기술 개발에 성공했다. 해당 기술은 소프트웨어(SW)취약점 분석부터 보안패치까지 다양한 분야에 적용 가능하다. 이미 기술 사업화를 원하는 국내 기업 문의가 이어질 정도로 업계 기대가 크다.

12일 차상길 KAIST 전산학부 교수와 연구실 학생은 3년 간 사이버보안연구센터(센터장 김용대)와 AI 활용 바이너리 코드 취약점 분석·탐지 시스템 'B2-R2'를 개발 완료했다고 밝혔다.

B2-R2는 과학기술정보통신부 연구과제 '바이너리 코드 분석을 위한 자동화된 역공학 및 취약점 탐지 기반 기술 개발' 성과다.

바이너리 분석 플랫폼은 SW보안 핵심이다. SW분석 시 취약점, 버그 판별 기초가 된다. 이를 활용해 취약점과 악성코드 분석, 보안 패치 등 안정성 강화해 쓴다. 해킹 자동 방어·공격도 가능하다. 기존 취약점 분석은 화이트박스, 블랙박스, 역공학 분석으로 이뤄졌지만 이들 방법은 소스코드에 의존해 분석에 한계가 있다. 인력 중심으로 비용이 많이 든다.

차상길 KAIST 전산학부 교수는 “보안 분야에 AI를 적용하도록 하는 원천 기술이자 토대”라면서 “미국, 프랑스 등 보안 선진국 기술과 비교해 성능, 다양성 측면에서 월등하다”고 설명했다.

B2-R2 시스템은 미국 카네기멜론대학교(CMU) 'BAP'와 캘리포니아대학교 산타바바라 캠퍼스(UCSB)의 '앵거(Angr)'를 뛰어넘는다. 이들 시스템과 자동화 된 바이너리 비교해 최신 함수형 언어 F#을 사용해 분석 용이성을 극대화 했다. 이를 바탕으로 윈도, 리눅스, 맥, 안드로이드, iOS 등 모든 운용체계에서 사용한다. 분석속도는 기존 플랫폼과 비교해 2배~100배 이른다. 32개 프로그래밍 언어와 연동한다.

이미 해당 기술 사업화를 원하는 기업 문의도 이어진다. 해당 자동화 된 바이너리 기술을 활용해 다양한 보안솔루션 적용 가능한 만큼 성장 가능성이 크기 때문이다.

AI 사이버 공격·방어 응용. KAIST,

김용대 KAIST 사이버보안연구센터장은 “우리나라에서도 세계 최고 수준을 넘어서는 'AI기반의 취약점 자동 탐지 및 대응' 분야 핵심 기술을 확보하게 됐다”면서 “이미 다양한 기업으로 부터 기술이전을 받을 수 있는지 문의가 이어진다”고 말했다.

바이너리 분석 원천 기술개발 후속 과제로 이어지지는 못했다. 현재 개발 완료한 바이너리 원천 기술은 바이너리를 중간언어로 변환하는데 초점을 맞췄다. 이를 사람이 일반적으로 이해하는 언어로 변환하는 기술개발까지 이어져야 한다는 설명이다.

차 교수는 “바이너리를 사람이 확인 가능한 언어로 변환하는 외산 툴이 있지만 라이선스 비용이 인당 수 천 만원을 호가한다”면서 “이를 국산화 하는 토대를 만들었지만 후속과제까지 이어지지 못해 아쉬움이 남는다”고 말했다.

자동화 된 바이너리

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

  • 김종율 기자
  • 승인 2020.06.01 13:10
  • 댓글 0

이스라엘의 사이벨리움이 세계 최초로 출시한 멀티 플랫폼 바이너리 분석 도구인 ‘사이벨리움(Cybellum)’이 국내에 공급된다. 공급업체는 쿤텍이다.

설명에 따르면 스마트카·자율주행 등 자동차와 관련된 신기술이 발전하면서 다양한 유형의 보안 위협이 증가하고 있다. 사이버 위협에 대한 대응방안을 마련하기 위해서는 소프트웨어 실행 파일 자체를 분석하는 바이너리 파일 분석(Binary file Analysis)이 필수적이지만 알려지지 자동화 된 바이너리 않은 취약점과, IoT 산업에서는 소프트웨어가 구동되는 CPU나 OS가 매우 다양하기 때문에 완전한 검증에는 어려움이 따른다.

전 세계 유일의 멀티 플랫폼 바이너리 분석 도구인 ‘사이벨리움(Cybellum)’이 소프트웨어 안전성에 도움을 줄 것으로 기대되는 것은 이 때문이다.

다양한 플랫폼에서 정적/동적 바이너리 분석을 모두 수행할 수 있는 사이벨리움은 탐지된 취약점의 유형을 분석하고 머신러닝(Machine Learning)으로 데이터베이스를 구축하여 독점적 알고리즘으로 취약점과 실제 보안 위협을 탐지하고 검증한다.

자동화된 취약점 탐지 기술로 소프트웨어의 전체 컴포넌트(Component, 독립적 소프트웨어 모듈)에 대한 가시성 및 위험에 대한 평가를 빠르고 정확하게 분석할 수 있어 이 제품은 기존 기술에 비해 시간과 비용을 줄이면서도 검증의 정확도를 높인다는 게 큰 강점이다.

폐쇄형 컴포넌트에 대한 위협을 파악할 수 있는 자동 취약점 탐지 엔진인 ‘사이벨리움 V-Ray’와 배포된 컴포넌트에 대한 정확한 위협 인텔리전스를 제공하고 자동화 된 바이너리 실시간으로 위협을 모니터링할 수 있는 ‘사이벨리움 V-Monitor’로 구성된 사이벨리움은 CVE(정보 보안 취약점 표준 코드)와 보안 정책 등에 대한 능동적인 위험 모니터링 수행이 가능하며, 통합 단계에서 소프트웨어의 오류나 취약점을 평가 및 수정할 수 있어 소프트웨어의 안전성을 효율적으로 확보할 수 있도록 한다.

또한 소스코드에 접근할 수 없는 소프트웨어의 취약점 및 자산 관리, 취약점에 대한 지속적인 모니터링으로 공급망 전체에 걸친 보안 개선 방안을 제공하고 고객이 국제표준을 준수할 수 있도록 지원한다.

특히 자동차 분야의 보안을 강화하고 사이버 보안 위협으로 인한 피해를 줄이기 위해 차량의 전체 라이프사이클과 관련된 사이버 보안 프로세스를 정의하는 국제표준인 ISA/SAE 21434 및 UNECE WP29를 효과적으로 준수할 수 있도록 한다.


0 개 댓글

답장을 남겨주세요