소프트웨어 개발 보안
flex 소프트웨어 개발 라이프사이클은 소프트웨어 기능을 구현하는 코드 개발 과정에서 보안 위험을 최소화할 수 있도록 설계 되었습니다.
flex의 애플리케이션 개발팀은 엄격한 프로세스에 따라 Open Web Application Security Project 의 CLASP(Comprehensive, Lightweight Application Security Process) 를 준수합니다. 기능 요청, 버그 및 코드 개선은 위협 모델링과 위험 분석을 위해 별도로 분류되어 처리됩니다. 개발된 코드는 동료와 보안팀의 보안성검토를 거쳐 최종 커밋 및 품질 보증(“QA”) 검증을 받습니다. 개발된 모든 코드에는 테스트 릴리스를 목적으로 개발된 유닛 테스트 코드가 포함됩니다. flex의 QA 팀은 자동 테스트를 통해 유닛 테스트, 회귀 테스트, 성능 테스트 그리고 보안팀은 웹/모바일 애플리케이션에 대한 침투 테스트를 검증합니다.
또한, CI(Continuous Integration) / CD(Continuous Delivery) 파이프라인 구간에 보안이 적용된 DAST(Dynamic Application Security Testing), SAST(Static Application Security Testing), IAST(Interactive Application Security Testing) 및 SCA(Software Composition Analysis) 를 통과하지 못하면 배포가 불가능한 형태로 DevSecOps 파이프라인이 구현되어 있습니다.
개발 실무
flex는 개발자를 대상으로 Secure Coding Awareness를 지속적으로 교육합니다. 개발자는 기본 보안 교육 외에도 다음과 같은 교육을 받습니다.
Secure Coding 교육 세션을 통해 애플리케이션 보안 기술에 대해 지속적으로 학습니다.
보안팀이 제공하는 SAST 솔루션은 개발자툴에 통합되어 shift left 개념이 적용되어 있으며, 전체 코드에 대한 점검결과에 결함과 취약점이 발견되면 알럿을 받도록 구현되어 있습니다.
개발자 보안 교육은 아래와 같이 다양한 유형의 잠재적 공격을 적절히 예방할 수 있는 최신 기술을 포함하고 있습니다.
A01
Broken Access Control (접근 권한 취약점)
액세스 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행합니다. 만약 액세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있습니다.
A02
Cryptographic Failures (암호화 오류)
적절한 암호화가 이루어지지 않으면 민감 데이터가 노출될 수 있습니다.
A03
Injection (인젝션)
SQL, NoSQL, OS 명령, ORM(Object Relational Mapping), LDAP, EL(Expression Language) 또는 OGNL(Object Graph Navigation Library) 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로서, 인터프리터로 보내질 때 취약점이 발생합니다.
A04
Insecure Design (안전하지 않은 설계)
Insecure Design는 누락되거나 비효율적인 제어 설계로 표현되는 다양한 취약점을 나타내는 카테고리 입니다. 안전하지 않은 설계와 안전하지 않은 구현에는 차이가 있지만, 안전하지 않은 설계에서 취약점으로 이어지는 구현 결함이 있을 수 있습니다.
A05
Security Misconfiguration (보안설정오류)
애플리케이션 스택의 적절한 보안 강화가 누락되었거나 클라우드 서비스에 대한 권한이 적절하지 않게 구성되었을 때, 불필요한 기능이 활성화 되거나 설치되었을 때, 기본계정 및 암호화가 변경되지 않았을 때, 지나치게 상세한 오류 메시지를 노출할 때, 최신 보안기능이 비활성화 되거나 안전하지 않게 구성되었을 때 발생합니다.
A06
Vulnerable and Outdated Components (취약하고 오래된 요소)
취약하고 오래된 요소는 지원이 종료되었거나 오래된 버전을 사용할 때 발생합니다. 이는 애플리케이션 뿐만 아니라, DBMS, API 및 모든 구성요소 들이 포함됩니다.
A07
Identification and Authentication Failures (식별 및 인증 오류)
Broken Authentication(취약한 인증)으로 알려졌던 해당 취약점은 identification failures(식별 실패)까지 포함하여 더 넓은 범위를 포함할 수 있도록 변경되었습니다. 사용자의 신원확인, 인증 및 세션관리가 적절히 되지 않을 때 취약점이 발생할 수 있습니다.
A08
Software and Data Integrity Failures(소프트웨어 및 데이터 무결성 오류)
무결성을 확인하지 않고 소프트웨어 업데이트, 중요 데이터 및 CI/CD 파이프라인과 관련된 가정을 하는데 중점을 둡니다.
A09
Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
로깅 및 모니터링 없이는 공격활동을 인지할 수 없습니다. 이 카테고리는 진행중인 공격을 감지 및 대응하는데 도움이 됩니다.
A10
Server-Side Request Forgery (서버 측 요청 위조)
SSRF 결함은 웹 애플리케이션이 사용자가 제공한 URL의 유효성을 검사하지 않고 원격 리소스를 가져올 때마다 발생합니다. 이를 통해 공격자는 방화벽, VPN 또는 다른 유형의 네트워크 ACL(액세스 제어 목록)에 의해 보호되는 경우에도 응용 프로그램이 조작된 요청을 예기치 않은 대상으로 보내도록 강제할 수 있습니다.
소프트웨어 개발 라이프사이클
flex 소프트웨어 개발 라이프사이클은 애자일/스크럼 프레임워크를 사용해 다음과 같은 반복적인 개발 접근법을 따릅니다.
애자일/스크럼 반복 소프트웨어 개발 라이프사이클
이러한 반복 접근법은 새로운 버전의 소프트웨어를 점차 짧은 주기로 반복해서 개발하는 데 중점을 두고 있습니다. 이프로세스는 각 단계마다 수차례 짧은 주기로 반복 됩니다.(애자일 방식에서는 “스프린트”로 지칭하고 있습니다).
결과적으로 짧은 주기로 릴리스되며, 각 릴리스는 이전 기능을 기반으로 개선 됩니다. 각 릴리스는 소프트웨어 품질을 유지하기 위해 철저히 테스트 됩니다. 애자일 방식에서는 개발 및 테스트가 매 사이클마다 동일하게 반복 수행됩니다. 소프트웨어 릴리스가 반복될 때마다 업데이트가 되므로 사용자는 항상 새로운 소프트웨어 릴리스를 사용할수 있으며 보안 취약점도 제거됩니다. flex는 소프트웨어 개발 라이프사이클에 포함된 모든 단계에 보안을 적용합니다.
비즈니스 기획 단계 보안
이 단계에서는 제품팀이 새로운 서비스 기능을 계획하여 우선순위를 정합니다. 비즈니스 요건에서는 다음과 같은 사항을 보안과 함께 고려합니다.
새로운 서비스가 고객에게 전달하는 가치
새로운 서비스와 그 서비스에 저장되는 정보의 중요성
시스템 운영 시 따라야 할 법률, 규제 및 계약 환경
제품팀과 보안팀은 협력하여 새로운 기능 및 서비스의 개인정보 및 데이터 라이프사이클에 따라 정보를 저장하고 처리하기 위해 따라야 할 보안 및 컴플라이언스 요건을 식별합니다. 식별된 보안 요건은 기능 설계, 개발, 테스트, 구축 및 유지보수 단계 전반에 걸쳐 적용됩니다.
시스템 설계
설계 단계에서는 기획 단계에서 식별된 보안 및 컴플라이언스 요건에 대한 보안성 검토를 수행합니다.
개발
개발 단계에서는 각 개발자에게 안전한 개발 환경이 제공됩니다. 여기에는 IT 부서에서 제공하는 물리적 PC 구성과 개발에 필요한 코딩 환경도 포함됩니다. Device Trust 솔루션을 통해 인증된 단말에서만 개발 환경에 접속할수 있으며, 모든 시스템 접속은 MFA 가 적용되어 있습니다. 또한, 필수적으로 생체인증을 포함하고 있습니다.
개발자는 코드를 통합 브랜치에 병합할 준비를 마친 후 Code Review를 받아야 합니다. 다른 개발자들이 코드의 컴플라이언스, 보안, 성능 및 논리적 정확성 여부를 평가합니다. 이때 보안 취약점이 발견되면 보안 팀의 DevSecOps 프로세스를 통과해야지만 다음 단계로 진행이 가능합니다.
그 밖에도 보안팀은 예정된 코드 릴리스에 대해서 보안성검토를 수행합니다. 위험에 따라 다르지만 자동 코드 분석에서부터 심층적인 보안 로직 테스트, 침투 테스트에 이르기까지 다양합니다.
테스트
소프트웨어 애플리케이션의 라이프사이클에서 유닛 테스트, 기능 테스트, 보안 테스트 등 여러 유형의 테스트가 수행됩니다. 테스트 프로세스에는 아래의 테스트가 포함됩니다.
새로운 코드를 작성, 테스트, 구축할 수 있는 지속적인 통합(CI) 테스트
여러 환경과 브라우저에서 수행하는 적합성 테스트
유닛 및 기능 테스트
모든 변경 사항에 대해 의무적으로 수행해야 하는 peer review
분기별 전체 Application 보안 심사
여기에, flex는 가상의 테스트 데이터를 생성하여 보안성을 높이고 있습니다.
릴리스
코드 Freezing 이후, 매주 스테이징 환경에서 다음 배포에 해당하는 릴리스 코드에 대한 컴파일을 실행합니다. 이렇게 정해진 배포 예정 릴리스는 보안 스캐너를 사용해 자동으로 테스트됩니다. 스캐너 프로필은 OWASP 공격과 같은 특정 취약점이 발견되는지 테스트합니다. 여기에는 모든 아티팩트에 대한 안티바이러스 스캔 실행도 포함됩니다.
테스트 결과는 보고서로 작성되며 보안팀이 검토하여 문제가 발견되면 해결될 때까지 릴리스가 보류됩니다.
Compliance Program
보안 클라우드
컴퓨팅 & 인적 보안
애플리케이션
플랫폼
flex 무료 체험
대표 : 장해남

주소 : 경기도 성남시 분당구 황새울로 359번길 11 7, 8층
(서현동, 미래에셋플레이스)

사업자등록번호 : 460-81-01544
통신판매업 신고번호 : 2020-성남분당A-1757