블로그

Coders Conquer Security Infrastructure as Code 시리즈: 비활성화된 보안 기능

May 4, 2020
마티아스 마두(Matias Madou) 박사
주먹을 쥐고 웃고 있는 여성과 'Coders Conquer Security Share and Learn Series'라는 문구가 적힌 배지.

오늘날 사이버 보안 위협은 어디에나 존재하며 끊임없이 이어지고 있습니다. 우리 삶의 많은 부분이 디지털화될수록 사이버 범죄자가 노리는 위험은 더욱 커집니다. 보호해야 할 코드는 너무 많고, 개인 데이터는 매우 가치 있기 때문입니다. 게다가 프로그램이 배포된 후 공격 표면의 모든 측면을 파악하고 방어하는 것은 거의 불가능에 가깝습니다.

이러한 문제를 완화할 수 있는 접근 방식이 있으며, 그중 하나는 현명한 조직이 IaC(Infrastructure as Code) 개념을 도입할 때 나타납니다. 물론 모든 개발 과정과 마찬가지로 해결해야 할 보안상의 함정이 존재합니다. 애플리케이션을 호스팅하는 핵심 인프라를 생성하는 코드를 개발자가 직접 다루기 때문에, 모든 단계에서 보안 인식을 갖추는 것이 매우 중요합니다.

그렇다면 클라우드 서버 환경을 처음 접하는 개발자는 어떻게 기술을 습득하고, 업무를 익히며, 보안 인식을 높여 구축에 접근할 수 있을까요?저희는 일반적인 IaC 취약점을 해결하기 위해 새로운 'Coders Conquer Security' 시리즈를 준비했습니다.앞으로 이어질 블로그 게시물에서는 개발자인 여러분이 조직 내에서 안전한 인프라를 코드로 배포하기 위해 취할 수 있는 단계들을 집중적으로 다룰 예정입니다.

시작해 보겠습니다.

미국 서부 개척 시대에는 강도가 자신의 농장을 습격할까 봐 편집증적으로 걱정하던 한 남자에 관한 우화가 있습니다. 그는 대비책으로 아주 튼튼한 현관문을 설치하고, 모든 창문을 판자로 막고, 손이 닿기 쉬운 곳에 총을 여러 자루 두는 등 온갖 보안 조치를 취했습니다. 하지만 그는 옆문을 잠그는 것을 깜빡했기 때문에 결국 잠든 사이에 강도를 당하고 말았습니다. 강도들은 단순히 보안이 허술한 곳을 찾아내어 그 상황을 즉시 악용했을 뿐입니다.

인프라에서 보안 기능을 비활성화하는 것도 이와 비슷합니다. 네트워크에 강력한 보안 인프라가 구축되어 있더라도, 일부 요소가 비활성화되어 있다면 거의 아무런 소용이 없습니다.

본격적으로 시작하기 전에 한 가지 도전 과제를 드립니다.

위 링크를 방문하면 게임화된 교육 플랫폼으로 이동하게 되며, 여기서 비활성화된 보안 기능 취약점을 지금 바로 해결해 볼 수 있습니다. (참고: Kubernetes에서 열리지만, 드롭다운 메뉴를 사용하면 Docker, CloudFormation, Terraform, Ansible 중에서 선택할 수 있습니다.).

결과는 어떠셨나요? 아직 보완할 점이 있다면 계속 읽어보세요.

보안 기능이 비활성화되는 이유는 다양합니다. 일부 애플리케이션이나 프레임워크에서는 기본적으로 비활성화되어 있어 기능을 사용하려면 먼저 켜야 할 수도 있습니다. 또한 관리자가 지속적인 확인이나 차단 없이 특정 작업을 더 쉽게 수행하기 위해(예: AWS S3 버킷을 공개로 설정) 보안 기능을 의도적으로 비활성화하는 경우도 있습니다. 작업을 마친 후 비활성화된 기능을 다시 활성화하는 것을 잊어버리거나, 향후 업무 편의를 위해 그대로 꺼두는 것을 선호할 수도 있습니다.

보안 기능 비활성화가 위험한 이유

하나 이상의 보안 기능이 비활성화되어 있으면 몇 가지 이유로 위험합니다. 우선, 보안 기능은 알려진 공격, 위협 또는 취약점으로부터 보호하기 위해 인프라 리소스에 적용된 것입니다. 이것이 비활성화되면 리소스를 보호할 수 없게 됩니다.

공격자는 항상 쉽게 악용할 수 있는 취약점을 먼저 찾으려 하며, 스크립트를 사용해 일반적인 약점을 훑어보기도 합니다. 이는 마치 도둑이 길가에 주차된 차들의 문이 잠겨 있는지 확인하는 것과 비슷합니다. 창문을 깨는 것보다 훨씬 쉬운 방법이기 때문입니다. 해커들은 일반적인 보안 방어 체계가 작동하지 않는 것을 발견하고 놀랄 수도 있지만, 일단 그런 상황이 발생하면 이를 악용하는 데는 그리 오랜 시간이 걸리지 않습니다.

둘째, 보안을 잘 갖춰놓고 나중에 비활성화하면 잘못된 안전 의식을 갖게 됩니다. 관리자는 누군가 방어 체계를 비활성화했다는 사실을 모르면, 자신들이 일반적인 위협으로부터 보호받고 있다고 착각할 수 있습니다.

공격자가 비활성화된 보안 기능을 어떻게 악용할 수 있는지에 대한 예로, AWS S3의 '퍼블릭 액세스 차단(Block Public Access)' 기능을 생각해 봅시다. Amazon S3 퍼블릭 액세스 차단을 사용하면 계정 관리자와 버킷 소유자는 중앙 집중식 제어를 통해 Amazon S3 리소스에 대한 퍼블릭 액세스를 쉽게 제한할 수 있습니다. 그러나 일부 관리자는 S3 버킷에 액세스하는 과정에서 문제가 발생하면 작업을 신속하게 완료하기 위해 버킷을 공개로 설정하기로 결정합니다. 만약 그 보안 기능을 다시 활성화하는 것을 잊어버리면, 공격자는 해당 S3 버킷에 저장된 정보에 완전히 접근할 수 있게 됩니다. 이는 정보 유출뿐만 아니라 데이터 전송 비용으로 인한 추가적인 금전적 손실까지 초래할 수 있습니다.

실제 코드를 비교해 보겠습니다. 다음 CloudFormation 코드 조각을 확인해 보세요.

취약한 코드:

CorporateBucket:
   Type: AWS::S3::Bucket
   Properties:
     PublicAccessBlockConfiguration:
       BlockPublicAcls: false
       BlockPublicPolicy: false
       IgnorePublicAcls: false
       RestrictPublicBuckets: false
     VersioningConfiguration:
       Status: Enabled
     BucketEncryption:
       ServerSideEncryptionConfiguration:
         - ServerSideEncryptionByDefault:
             SSEAlgorithm: "AES256"

안전한 코드:

CorporateBucket:
   Type: AWS::S3::Bucket
   Properties:
     PublicAccessBlockConfiguration:
       BlockPublicAcls: true
       BlockPublicPolicy: true
       IgnorePublicAcls: true
       RestrictPublicBuckets: true
     VersioningConfiguration:
       Status: Enabled
     BucketEncryption:
       ServerSideEncryptionConfiguration:
         - ServerSideEncryptionByDefault:
             SSEAlgorithm: "AES256"

비활성화된 보안 기능 방지

비활성화된 보안 기능으로 인해 조직이 피해를 입지 않도록 하려면 정책과 실무 모두가 중요합니다. 보안 기능은 매우 특수한 상황에서만 비활성화해야 한다는 확고한 정책이 마련되어야 합니다. 문제 해결이나 애플리케이션 업데이트를 위해 기능을 일시적으로 비활성화해야 하는 경우 이를 기록해야 합니다. 필요한 작업이 완료된 후에는 해당 기능이 완전히 다시 활성화되었는지 확인해야 합니다.

운영 효율화를 위해 보안 기능을 영구적으로 비활성화해야 한다면, 기본 보호 기능이 없는 상태에서도 해커가 데이터에 접근하지 못하도록 다른 보호 조치를 마련해야 합니다. 필요한 보안 기능이 비활성화되면 공격자가 열린 문을 찾아 상황을 악용하는 것은 시간문제입니다.

더 알아보고 도전해 보세요:

Secure Code Warrior 블로그에서 이 취약점에 대한 더 깊은 통찰력을 얻고, 다른 보안 결함 및 취약점으로부터 조직과 고객을 보호하는 방법을 확인해 보세요.

게시물을 읽고 취약점을 찾아서 해결할 준비가 되셨나요? Secure Code Warrior 플랫폼에서 IaC 게임화 보안 챌린지에 참여하여 사이버 보안 기술을 꾸준히 연마하고 최신 상태로 유지해 보세요.

본 시리즈는 매주 8가지 주요 IaC(Infrastructure as Code) 취약점을 다룹니다. 다음 주에도 확인해 보세요!

태그라인

배포 전 AI 기반 개발 거버넌스 확보

AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.

데모 예약하기
리소스 라이브러리

더 많은 블로그 살펴보기

보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.

전체 보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

더 알아보기
사례 연구
필터 라벨
div 블록 내부의 텍스트입니다.

하나의 보안 문화: Sage는 어떻게 챔피언 프로그램을 구축했는가

Sage가 유연하고 관계 중심적인 접근 방식을 통해 보안을 강화하고, 200명 이상의 보안 챔피언을 양성하며 실질적인 위험 감소를 달성한 사례를 확인해 보세요.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

2026년 사이버 보안 인식의 달: 기업 방어의 핵심, AI 보안 이해하기

주요 AI 기업 대부분이 안전 가이드라인이 마련될 때까지 AI 개발 속도를 전 세계적으로 늦춰야 한다고 공개적으로 촉구하는 시점에 이르렀지만, 사실 심각한 보안 문제는 이미 현실화되었습니다. 이로 인해 AI 도입에 따른 금전적 비용과 위험 부담이 계속 쌓이면서 수많은 보안 책임자와 경영진이 절박한 상황에 놓였습니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

인에이블러 8: 프로그램 브랜딩

성공적인 보안 코딩 프로그램을 위해서는 훌륭한 콘텐츠 그 이상의 것이 필요합니다. 인에이블러 8에서는 브랜딩을 통해 참여를 누구나 선망하는 위상 중심의 경험으로 바꾸는 방법을 알아봅니다.

더 알아보기
블로그
필터 라벨
div 블록 내부의 텍스트입니다.

이제 모든 직원이 AI 사이버 보안의 최전선에 있습니다

엔터프라이즈 기술 환경은 너무 늦기 전까지는 아무도 예상하지 못한 속도로 변화하고 있습니다. 우리는 공식적으로 사람이 직접 작성한 코드와 기본적인 코파일럿 지원의 시대를 지나 '에이전트 기반 개발 수명 주기(ADLC)'의 시대로 진입했습니다. 자율형 AI 에이전트는 여러 기능 전반에 걸쳐 전례 없는 효율성을 약속하지만, 동시에 완전히 새로운 차원의 보안 및 규제 위험을 야기합니다.

더 알아보기

배포 전 AI 기반 개발 보안 확보

소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.

데모 예약하기
항목이 없습니다.