[Technology Toolkit 2021]
보안 위험은 개발 단계부터 막는 것이 중요하죠!
CAFA+를 믿어 보세요

보안 위험은 개발 단계부터 막는 것이 중요하죠! CAFA+를 믿어 보세요

Technology Toolkit 2021은 삼성SDS 연구소에서 연구개발 중인 주요 기술들을 설명하는 기술 소개서입니다.
AI, Blockchain, Cloud, Security 기술 분야의 총 7개 기술에 대해서 각각 기술 정의, 주요 기능, 차별화 포인트 및 Use Cases를 소개하여 독자 여러분께 인사이트를 제공하고자 합니다.

CAFA+(Code Analyzer for ABAP & HANA Plus)

ABAP 코드 인스펙션 및 보안 취약점 점검도구

문서 다운로드

1. 기술 소개

기술 동향 및 배경

4차 산업혁명의 시대가 도래하고 디지털 트랜스포메이션이 조직과 경영의 선택이 아닌 필수가 된 지금 코로나19 팬데믹 이후 비대면 업무 환경은 더욱 확대되고 있습니다. 또한 디지털 전환이 가속되면서 IT 없는 생활은 상상할 수 없게 되었으나, 이를 이용한 해커들의 공격으로 보안 위험은 커지고 피해 사례가 증가하는 상황입니다. 대부분의 보안 취약점은 애플리케이션 개발 단계 즉, 코딩 중에 발생하므로 설계 및 개발 단계부터 세심한 주의를 기울이는 것이 가장 좋은 예방 방법입니다.

하지만, 최근 서비스 수명이 짧아지면서 개발 기간과 비용의 부담으로 자칫 보안에 소홀해지기 쉬워 개발자 스스로 개발 단계부터 취약점을 파악하고 조치 및 제거할 수 있는 자동화된 DevSecOps(DevOps+Security) 기술에 대한 중요도가 어느 때보다 높아지고 있습니다. 취약점을 분석하고 제거하는 부분을 개발운영 사이클에 삽입하여 자동화하면, 개발자를 개발에 전념하게 하여 생산성을 향상하고 취약점 조치 비용을 크게 절감할 수 있어 글로벌 기업 사이에서 자사 인프라에 통합할 수 있는 툴을 도입하거나 내재화하는 경우를 쉽게 찾을 수 있습니다.

삼성SDS는 프로그램 의미 분석 기술을 바탕으로 자체 개발한 보안 취약점 탐지 툴을 Java 프로그램 점검에 수년간 활용 중이고, 2020년부터 SAP ERP 개발 언어인 ABAP에 확장하여 ABAP 코드 인스펙션 표준 툴인 CAFA에 결합함으로써 코드 품질과 보안 취약점을 동시에 점검할 수 있는 CAFA+를 개발, 현장에 적용하고 있습니다.

기술 정의

CAFA+에 적용된 보안 취약점 점검 기능은 프로그램을 실행하지 않고 분석하는 정적 분석 기술로 정적 분석의 대표적인 분석 기법인 Abstract Interpretation에 기반합니다. 특히, Abstract Interpretation 위에 구현된 Taint Analysis 기능은 데이터의 흐름을 분석하여 데이터의 유입 경로를 추론하는 기술로 불특정 사용자가 입력한 값과 같이 신뢰할 수 없는 근원으로부터 유입된 데이터가 SQL 실행문처럼 민감한 기능에 입력되어 공격자에게 악용될 가능성을 탐지할 수 있습니다. XSS, SQL Injection, Path Traversal 등과 같은 보안 취약점들은 모두 이와 같은 유형의 취약점으로 Taint Analysis를 이용하면 단순한 구문 패턴 검사에 비할 수 없을 만큼 정확한 탐지가 가능합니다. CAFA+는 Value Analysis를 통해 변숫값의 범위와 상수 여부를 예측하여 조건 분기문의 분석 등에 활용함으로써 탐지 정확도를 더욱 높이고 있습니다.

String user =request.getParameter('user'); Statement st = conn.createStatement(); String query ='SELECT*FROM User where userId='+user+''; ResultSet res = st.executeQuery(qyery) - executeQuery: 취약한 함수 - (qyery): 문제를 초래할 수 있는 파라미터

[그림 1] Taint Analysis를 이용한 SQL Injection 취약점 탐지 예

2. 주요 기능

CAFA+는 ERP 개발, 운영에 대한 삼성SDS의 15년 노하우가 집약된 ABAP 코드 품질 및 보안 취약점 점검 툴로서 SAP ABAP 기술 환경 변화에 신속히 대응하며 지속적으로 대응 체계를 갖추어 왔습니다.

신기술 환경 지원(S/4HANA, ABAP 7.5)

SAP ABAP 신기술 환경을 지원하여 HANA DB 환경과 최신 ABAP 7.5 문법을 지원합니다. 이를 바탕으로 HANA DB 환경으로 전환할 수 있는 변경점 추천, ABAP 7.5 신규 구문에 의한 보안 취약점 등을 정확히 분석합니다.

DB : Row-Store DB Oracle, DB2 및 Column store DB인 HANA DB 환경에서 ABAP코드 점검 가능 UI : SAP GUI 환경 코드점검 및 Fiori Web환경의 Backend 영역의 코드품질 점검 Ver : 최신 ABAP 버전인 Netweaver 7.5이상의 신문법 코드 점검 가능

HANA DB 코드검증 사례

1. HANA DB 점검 Rule, 2. 점검대상 HANA DB, 3. Defect 검출

[그림 2] SAP 신기술 환경에서의 코드 품질 점검 지원

ABAP 개발 품질과 성능 점검 지원

삼성SDS는 15년간의 ERP 운영 노하우를 반영하여 150여 개의 코드 인스펙션 룰을 제공하며 계속해서 확장 중입니다. 기본적인 개발 표준 준수 여부를 점검하는 것은 물론 부적절한 모듈화, 높은 코드 복잡도에 의한 유지보수성 저하와 같은 설계 이슈, 부하가 높은 코드를 반복 수행하거나 무한 실행될 가능성이 있는 코드와 같은 성능 저하 이슈, 예외처리 허점 등 비정상 종료 이슈까지 점검하여 개발자에게 제공합니다.

개발표준 : 변수, 오브젝트 명명 규칙, 금지구문 사용, 루프내 금지함수 사용등
설계이슈 : 부적절한 모듈화, 과도한 조건문, 반목문, 코드클론 등
성능이슈: SQL 구문 성능이슈, 반복문 내 고부하 기능, 과도한 중첩 반복문 등
비정상 종료 : 존재하지 않는 모듈 호출, 처리되지 않은 예외, 타입과 맞지않는 처리등
[그림 3] 개발 품질 및 성능 점검

ABAP 보안 취약점 점검 지원

인증 우회, 부정확한 암호 사용, SQL 구문 주입 등 1년간 개발 현장의 의견을 종합하여 발생 빈도와 영향력 높은 보안 취약점을 지원합니다. 탐지 결과만 제공하는 것을 넘어 개발자에게 알기 쉬운 설명과 구체적인 조치 예시까지 제공함으로써 개발자의 시간과 노력을 최소화하면서 품질을 높일 수 있습니다.

보안 취약점 점검을 위한 40여종의 최신 Rule 보유- SAP ABAP secure programming 가이드 준수 - 프로그램 의미분석 기반의 탐지기술로 정확성 제고자체 보안점검 엔진 보유로 신규 취약점 지속적 업데이트 가능

상세 조치가이드 제공- 취약점 설명, 취약한 코드 예시, 조치예시 제공

보안취약점탐지 엔진
취약점 점검기
SQL injection
Command injection
Path Manipulation
의미분석 엔진
데이터 흐름분석
데이터 값 분석
[그림 4] 보안 취약점 점검

3. 차별화 포인트

다음과 같이 CAFA+는 SAP에서 기본으로 제공하는 코드 검증 기능보다 다양한 기능을 고객에게 제공합니다.

첫째, 삼성그룹을 위한 ERP 개발과 운영에 적용 중인 150여 코드 인스펙션 룰과 보안 취약점 점검 기능을 제공합니다. 수년간 현장의 경험이 녹아있는 룰을 통해 고객 코드의 보안을 향상하는 것뿐만 아니라 향상된 유지보수를 제공합니다.

둘째, 개별 점검 결과를 점수화하여 하나의 정량화된 종합품질지수를 제공합니다. 항목별 준수 여부만을 리포팅하는 대부분의 도구와 달리, CAFA+는 하나의 품질 지수로 정량화한 결과를 제공함으로써 품질 게이트로 활용하기 위한 기준을 설정하기에 적합한 지표를 제공합니다.

셋째, 조직과 과제의 특성에 맞게 탐지 항목과 조치 정책을 커스터마이징 할 수 있습니다. CAFA+의 대부분 기능은 ABAP 개발자들에게 익숙한 SAP GUI 환경을 통해 설정할 수 있고, 과제의 성격, 품질 요구 수준, 현장의 상황에 맞게 관리자가 정책을 자유롭게 설정하여 프로젝트의 효율을 높일 수 있습니다.

넷째, SAP 환경에서 벗어날 필요 없이 간편한 메뉴 조작만으로 사용할 수 있기 때문에 개발자가 부담 없이 수시로 실행할 수 있습니다. 함수 하나를 코딩할 때마다 파일 하나를 저장할 때마다 코딩에 이슈가 없는지 확인하며 진행할 수 있어 사용을 거듭하다 보면 어느새 안전한 코딩 습관을 체득할 수 있습니다.

삼성SDS 15년 ERP 개발/운영의 결정체
삼성그룹 ERP 개발/운영에 적용중인 150여 코드인스페션 룰 지원
개발현장 VoE를 반영한 취약점 40여종 지원
종합 코드 품질 점수 제공
개발점검항목 준수여부 외 정향화된 종합코드품질 점수 제공
대규모 ERP 프로젝트의 조직적 품질관리에 적용하기 용이함
설정기증을 통한 고도의 사용자화 지원
조직과 과제 특성에 맞게 사용자화 할 수 있는 기능 제공
점검항목, 조치정책, 종합코드품질점수 산정기준 등 조정 가능
SAP 개발환경내 seamless한 통합 제공
코딩중 SAP 환경 안에서 간단한 메뉴조작으로 실행 가능
빌드 오류를 체크하듯, 수시로 코드 품질 점검 가능
[그림 5] CAFA+ 차별화 포인트

4. Use Case

CAFA+는 SAP 개발 프로젝트의 개발 보안 툴로 활용하는 한편, 운영 과제의 운영 보안 툴로 활용할 수 있습니다. SAP 환경을 벗어나지 않고 클릭 몇 번으로 실행할 수 있기 때문에, 코딩 중인 개발자나 점검 중인 운영자가 품질 점검과 보안 취약점 점검을 원스톱으로 수행하여 실시간으로 품질을 개선할 수 있는 환경을 제공합니다. 점검에 필요한 불필요한 프로세스를 모두 제거함으로써, 점검 시간을 단축하고 생산성을 향상합니다. 또한 QAO 및 보안 담당자는 통합 Batch 점검(Weekly, Monthly) 기능을 활용하여 SW 품질 및 보안 전수 검사를 자동으로 수행하여 업무를 효율화하고 품질 수준 향상을 기대할 수 있습니다.

개발단계 실시간 점검: 개발자
개발/변경된 소스를 대상으로 개발자 자가 점검
전수 통합점검: QAO, 보안 담당자
SAP DB서버(소스코드): Weekly, Monthly 전수 점검
점검 Report: 점검 결과 Report 제공
[그림 6] 실시간 통합 점검 구성

5. 맺음말

삼성SDS는 ERP 사업 착수 단계부터 코드 인스펙션과 튜닝을 고려한 방법론을 시행했으며, 변화하는 SAP 기술 환경에 빠르게 대처하기 위해 최신 ABAP 문법과 HANA DB를 지원하는 CAFA+를 자체 개발하여 적용하고 있습니다. 보안 취약점 점검, 프로그램 구조 분석, 프로그램 성능 예측 그리고 프로그램 성숙도 지수 측정 등 각 분야에 적용 가능한 개별 툴은 많지만, 이들 여러 분야를 묶어서 한 번에 점검할 수 있는 ABAP 통합점검 플랫폼은 CAFA+가 유일합니다.

앞으로의 과제는 여러 가지 언어로 작성된 프로그램의 취약점을 탐지하는 것입니다. 예를 들어, JavaScript 프론트엔드로 유입된 공격 코드가 프론트엔드에서는 전혀 위험한 코드로 분류되지 않더라도 ABAP 백엔드로 넘어간 후 민감한 함수에 유입될 가능성을 분석하는 것입니다. 이와 같이 서로 다른 언어로 작성된 프로그램을 연계하여 분석할 수 있는 기술을 구현하면, JavaScript로 작성된 SAP의 새로운 프론트엔드 환경인 Fiori부터 백엔드 ABAP 프로그램까지 하나의 컨택스트로 점검할 수 있게 되어 숨어있는 취약점을 더욱 정확하게 찾아낼 수 있을 것으로 기대합니다.

ABAP 코드 인스펙션 및 보안 취약점 점검도구 [Technology Toolkit 2021] CAFA+ (Code Analyzer For ABAP & HANA Plus - ABAP 코드 인스펙션 및 보안 취약점 점검도구
동영상 보기

# References
[1] Gartner, “DevSecOps: How to Seamlessly Integrate Security Into DevOps”
[2] Capers Jones, Applied Software Measurements, McGraw-Hill, 1996-2008



▶  해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶  해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


이 글이 좋으셨다면 구독&좋아요

여러분의 “구독”과 “좋아요”는
저자에게 큰 힘이 됩니다.

subscribe

지윤찬
지윤찬 보안 전문가

삼성SDS 연구소 SW보안팀

삼성SDS SW보안전문가(SW보안팀 팀장)로서 악성코드 탐지 및 공격 방어 기술, 보안 취약점 탐지를 위한 프로그램 자동 분석 기술을 연구하고 있습니다.