금융 서비스 기관은 사용하는 소프트웨어 코드가 안전한지 확인해야 할 강력한 이유가 있습니다. 물론 가장 분명한 동기는 유출된 개인 정보, 정리 비용, 벌금 및 배상금, 조직의 평판 손상 등의 측면에서 비용이 많이 드는 데이터 침해로부터 데이터를 보호해야 한다는 것입니다. 또 다른 지속적인 이유는 다양한 업계 및 정부 규정을 준수해야 하기 때문입니다.
금융 서비스는 사람들의 돈뿐만 아니라 민감한 개인 및 금융 정보를 매우 많이 다루기 때문에 고도의 규제를 받는 산업입니다. 제공하는 서비스에 따라 기업은 여러 가지 규칙과 요구 사항을 준수해야 합니다.
예를 들어 결제 카드 업계 데이터 보안 표준(PCI DSS)은 카드 소유자 데이터 보호에 관한 규정으로 잘 알려져 있습니다. 사베인스-옥슬리 법의 요건은 금융 기록 관리에 적용됩니다. 국제적으로 사업을 운영하는 기업은 구속력 있는 위험 관리 프레임워크인 디지털 운영 복원력 법 (DORA)과 스위프트라고 하는 세계은행간 금융 통신협회에서 제정한 자금 이체에 대한 글로벌 표준을 잘 알고 있습니다.
또한 캘리포니아 소비자 개인정보 보호법 (CCPA) 및 유럽연합의 일반 데이터 보호 규정 (GDPR)과 같은 법률은 고객의 개인정보 및 개인 정보를 보호하기 위한 요건을 정하고 있습니다. 그 외에도 미국 통화감독청(OCC) 및 유럽중앙은행(ECB)에서 정한 규정 등이 있습니다.
국가 사이버 보안 전략은 무엇보다도 소프트웨어 제조업체가 비효율적인 소프트웨어 보안에 대한 책임을 져야 한다고 명시하고 있습니다. 또한 사이버 보안 및 인프라 보안 기관(CISA)은 17개 미국 및 국제 파트너와 함께 소프트웨어 개발을 위한 보안 설계 원칙에 대한 지침을 발표했습니다.
금융 서비스 회사의 공통점은 보안 코드가 이러한 규정의 목표를 달성하는 데 중요한 요소이며, 이를 통해 규정 준수를 쉽게 입증할 수 있다는 것입니다. 또한 개발자가 개발 프로세스를 시작할 때 코드에 보안을 적용하기 위해 교육과 숙련도를 높여야 하는 이유를 강조합니다.
그 작동 방식의 예로 최신 버전의 PCI DSS를 살펴보겠습니다.
보안 코딩(및 개발자 교육)은 PCI DSS 4.0의 핵심입니다.
2024년 4월 1일부로 의무화된 PCI DSS 4.0에는 PCI DSS 3.2.1에 대한 몇 가지 중요한 업데이트가 포함되어 있으며, 특히 소프트웨어 코드 보안을 위해 개발자의 역할이 강조됩니다.
PCI는 오래전부터 보안 소프트웨어의 중요성을 인식해 왔습니다. 2017년에 발표된 버전 2.0에는 모바일 디바이스에서 안전한 거래를 보장하기 위한 개발자용 지침이 포함되어 있었습니다. 이제 버전 4.0의 지침은 소프트웨어 개발에 보안 모범 사례를 적용하는 것을 강조하며 개발자 교육에 대한 구체적인 지침을 포함하고 있습니다.
요구 사항은 대개 포괄적으로 명시되어 있지만, 기업은 보다 철저한 접근 방식을 구현하고자 할 수도 있습니다.
예를 들어, 버전 4.0의 요구 사항 중 하나는 "보안 시스템 및 소프트웨어를 개발하고 유지 관리하기 위한 프로세스와 메커니즘을 정의하고 이해한다"고 명시하고 있습니다. 이를 보장하는 좋은 방법은 개발자가 사용 중인 프로그래밍 언어와 프레임워크에 대한 정확한 교육을 받아 지식의 공백을 메우는 것입니다.
또 다른 요건은 맞춤형 및 사용자 지정 소프트웨어를 개발하는 개발자는 12개월에 한 번 이상 다음과 같은 내용을 포함한 교육을 받아야 한다고 명시하고 있습니다:
- 직무 및 개발 언어와 관련된 소프트웨어 보안.
- 안전한 소프트웨어 설계 및 코딩 기술.
- 보안 테스트 도구를 사용하여 소프트웨어의 취약점을 탐지하는 방법(사용 중인 경우).
하지만 현실적으로 1년에 한 번은 핵심 보안 문제를 해결하고 잘못된 코딩 습관을 고치기에는 충분하지 않습니다. 교육은 지속적이고 측정 가능한 방식으로 이루어져야 하며, 교육이 제대로 활용되고 있는지 확인하기 위한 기술 검증 프로세스가 필요합니다.
PCI DSS 4.0에는 다양한 유형의 공격 예방 및 완화, 타사 소프트웨어 구성 요소 문서화, 취약성 식별 및 관리, 기타 보안 단계 등의 영역을 다루는 6가지 이상의 요구사항이 포함되어 있습니다. 모든 경우에 조직은 이러한 조치를 철저히 이행하는 것이 현명할 것입니다. 공격 벡터에 대한 교육은 1년에 한 번이 아니라 자주 실시해야 합니다. 종종 취약점의 원인이 되는 타사 구성 요소는 소프트웨어 자재 명세서(SBOM) 프로그램을 통해 신중하게 인벤토리를 작성해야 합니다. 그리고 조직은 취약점 관리를 위한 역할을 명확하게 정의해야 합니다.
또한 새 버전은 인증 제어, 비밀번호 길이, 공유 계정 및 기타 요소에 대한 새로운 요구 사항을 추가하는 동시에 확인란보다는 결과에 중점을 두어 조직이 요구 사항을 유연하게 충족할 수 있도록 합니다.
규정 준수는 SDLC의 시작부터 시작됩니다.
이러한 규정의 공통점은 금융 서비스 업계에서 데이터와 거래를 보호하기 위한 높은 기준을 제시한다는 것입니다. 그리고 최신 PCI DSS 버전의 경우와 마찬가지로 소프트웨어 개발 수명 주기(SDLC) 초기에 보안 코드의 중요성을 점점 더 강조하고 있습니다. 또한 국가 사이버 보안 전략과 CISA의 보안 설계 원칙은 소프트웨어가 출시되기 전에 보안에 대한 책임을 소프트웨어 제조업체에 부여하므로 금융 서비스 규정의 직접적인 적용을 받지 않는 기업도 이를 준수해야 합니다.
조직은 개발 속도에 집중하는 DevOps 팀과 보안을 프로세스에 도입하기 위해 서두르는 AppSec 팀 사이에 존재하는 격차를 해소하기 위해 개발자를 교육하여 보안을 접근 방식에 내재화할 수 있도록 해야 합니다. 그러나 이를 위해서는 복잡한 기술이 필요하며, 1년에 한 번 이상의 교육 세션이나 정체된 표준 교육 프로그램으로는 이를 제공할 수 없습니다. 교육은 지속적이고 민첩해야 하며, 실제 시나리오를 통해 학습자의 참여를 유도하고 업무 일정에 맞게 단기간에 제공되어야 합니다.
금융 서비스 기업은 보안 침해를 방지하고 점점 더 엄격해지는 규정을 준수하기 위해 보안을 확보해야 합니다. 규정 미준수로 인한 비용은 기업의 평판과 금전적 비용에 미치는 영향 측면에서 유출 사고만큼이나 큰 피해를 줄 수 있습니다. 예를 들어, IBM의 2023 데이터 유출 비용 보고서에 따르면 규정 미준수 수준이 높은 조직은 평균적으로 총 505만 달러의 벌금 및 기타 비용을 부담했으며, 이는 실제 데이터 유출로 인한 평균 비용보다 50만 달러 더 많은 금액입니다.
클라우드 기반 환경과 디지털 거래의 지속적인 성장으로 인해 금융 서비스 업계에서 소프트웨어 보안이 가장 중요해졌으며, PCI DSS와 같은 규정에서도 이를 인정하고 있습니다. 소프트웨어 보안을 보장하는 가장 좋은 방법은 SDLC를 시작할 때 시큐어 코딩을 하는 것입니다. 그리고 이를 달성하는 방법은 개발자에게 보안 코딩 방법을 효과적으로 교육하는 것입니다.
시큐어 코딩이 금융 서비스 회사의 성공, 보안 및 수익 보장에 어떻게 도움이 되는지 종합적으로 살펴보려면 새로 출시된 Secure Code Warrior 전자책을 읽어보세요: 금융 서비스의 보안 트렌드에 대한 최고의 가이드입니다.
사이버 보안에 대한 자세한 내용은 Secure Code Warrior 블로그 페이지에서 사이버 보안과 점점 더 위험해지는 위협 환경에 대한 자세한 인사이트를 확인하고 혁신적인 기술과 교육을 활용하여 조직과 고객을 더 잘 보호할 수 있는 방법에 대해 알아보세요.