시크릿 탐지는 코드베이스 또는 소프트웨어 개발 환경 내 다른 위치에서 “시크릿”으로 알려진 민감한 데이터를 찾아내고 식별하는 과정입니다. 이 자동화된 방어 계층은 민감한 정보가 소스 코드에 하드코딩되거나 쉽게 읽히거나 암호화되지 않은 형태로 포함되지 않도록 보장하는 데 도움을 줍니다.
시크릿 탐지는 보안을 개발 프로세스 초기 단계로 이동시키는 "시프트 레프트" 접근 방식의 일부로 작동합니다. 시크릿은 코드 외부로 확산될 수 있으며, 이는 보안 사고에 노출될 위험을 증가시킵니다. 시크릿 탐지를 통한 자동화된 보호는 개발자 워크플로를 대규모로 안전하게 유지하는 데 도움을 줄 수 있습니다.
애플리케이션 보안(AppSec)에서 시크릿은 사람 사용자 또는 앱, 장치, 워크로드와 같은 비인간 식별자에 접근 권한을 부여하고, 이들이 통신하거나 작업을 수행할 수 있도록 하는 디지털 정보입니다. 시크릿은 민감한 특성 때문에 반드시 기밀로 유지되어야 합니다.
다음은 일반적인 시크릿 유형입니다.
API 키는 애플리케이션 프로그래밍 인터페이스(API)를 통해 서비스, 소프트웨어 또는 시스템 간 통신을 인증하기 위한 고유 식별자입니다.
생체 인식 데이터는 얼굴 특징, 지문, 음성, 보행 방식과 같은 개인의 신체적·행동적 특성을 포함하며, 신원 확인에 사용될 수 있습니다.
디지털 인증서와 해당 개인 키는 엔드포인트를 인증하고 안전한 통신 채널을 구축하는 데 사용됩니다.
클라우드 공급자 자격 증명은 AWS, Azure, Google Cloud, IBM® Cloud와 같은 클라우드 컴퓨팅 플랫폼에 접근하는 데 사용될 수 있습니다.
연결 문자열은 데이터 소스에 연결하기 위한 지침이 포함된 텍스트 문자열입니다.
데이터베이스 자격 증명은 데이터베이스에 접근하기 위한 사용자 이름과 비밀번호 조합입니다.
서비스 계정 자격 증명은 애플리케이션과 자동화된 워크플로가 운영 체제에 접근하고 상호 작용할 수 있도록 합니다.
SSH(Secure Shell) 키는 서버 및 기타 인프라에 접근하는 엔티티를 인증하는 데 사용됩니다.
사용자 이름과 비밀번호 조합은 사용자의 시스템 접근을 인증하는 문자 문자열로 구성됩니다.
시크릿은 위협 행위자의 주요 표적입니다. 이들은 봇을 활용해 노출된 토큰, 유출된 자격 증명 또는 클라우드 네이티브 환경의 구성 오류를 수집할 수 있습니다. 공격자는 이러한 시크릿을 악용해 애플리케이션과 시스템에 무단으로 접근합니다. 정상적인 자격 증명을 통해 접근이 이루어지기 때문에 탐지가 더 어렵고 오랜 기간 동안 발견되지 않을 수 있습니다.
이로 인해 시크릿 탐지는 기업 사이버 보안 전략의 핵심 요소가 됩니다. 시크릿 탐지는 조직에 다음과 같은 이점을 제공합니다.
계정 탈취 및 권한 상승 방지: 해커는 유출된 자격 증명을 사용해 권한을 상승시킬 수 있습니다. 더 높은 권한을 확보하면 시스템 설정을 변경하고, 서버 및 인프라를 교란하며, 명령을 실행하고, 악성코드를 설치하거나 자산을 장악할 수 있습니다.
Think 뉴스레터를 통해 AI, 사이버 보안, 데이터 및 자동화에 대한 선별된 뉴스를 제공하는 보안 리더들과 함께하세요. 받은 편지함으로 직접 제공되는 전문가 튜토리얼과 설명서를 통해 빠르게 배울 수 있습니다. IBM 개인정보 보호정책을 참고하세요.
이 과정은 시크릿 스캐닝으로 시작되며, 시크릿 탐지 툴은 코드 리포지토리(레포)와 관련 리소스를 검색하여 노출된 시크릿을 찾아냅니다. 이러한 툴은 식별된 시크릿에 대해 시크릿 유형과 위치를 포함한 경고 또는 보고서를 생성합니다. 개발 팀과 보안 팀은 이러한 경고 또는 보고서를 기반으로 시크릿을 시크릿 관리 솔루션으로 이동하는 등의 대응 조치를 수행할 수 있습니다. 이러한 솔루션은 시크릿의 생성, 사용, 교체 및 보호를 자동화하고 중앙화하며 효율화하는 데 도움을 줍니다.
시크릿 탐지는 리포지토리 전반에서 시크릿을 정확하게 식별하기 위해 다양한 방법을 결합합니다.
패턴 매칭
딕셔너리 스캐닝
엔트로피 분석
패턴 매칭 알고리즘은 시크릿의 표준 형식과 일치하는 문자열을 탐색합니다. 또한 문자 시퀀스로 구성된 검색 패턴인 정규 표현식을 사용합니다.
이 방법은 클라우드 서비스의 액세스 토큰이나 API 키와 같이 미리 정의된 형식을 따르는 시크릿에 효과적입니다. 그러나 정규 표현식(Regex)을 사용하는 시크릿 스캐닝은 속도가 느릴 수 있으며, 무작위 형태를 가진 시크릿은 탐지되지 않을 수 있습니다.
시크릿 탐지에서 딕셔너리는 알려진 시크릿을 포함하는 데이터 소스입니다. 이러한 딕셔너리는 시크릿을 검색할 때 참조로 활용됩니다.
딕셔너리 스캐닝은 시크릿이 현재 사용 중인지 여부를 판단하는 데 도움을 줍니다. 그러나 딕셔너리에 포함되지 않은 시크릿은 탐지하지 못할 수 있습니다.
엔트로피는 데이터의 무작위성 또는 예측 불가능성을 측정합니다. 엔트로피가 높을수록 데이터는 더 무작위적이며 예측하기 어려워집니다. 따라서 엔트로피 분석은 문자 시퀀스의 무작위성 특성을 평가합니다.
이 방법은 암호화 키와 같이 알려진 패턴을 따르지 않는 잠재적 시크릿을 발견하는 데 도움을 줍니다. 또한 새로운 시크릿이나 높은 엔트로피를 가진 시크릿을 식별할 수 있습니다.
시크릿 탐지 시스템에는 다양한 선택지가 존재합니다. 적합한 솔루션을 선택할 때 기업은 정확성, 탐지 범위와 깊이, 대규모 코드베이스 및 소프트웨어 개발 수명 주기(SDLC) 전반에서의 확장성, 그리고 기술 스택 및 소프트웨어 개발 워크플로와의 호환성과 통합성을 고려해야 합니다.
다음은 시크릿 탐지를 위한 대표적인 툴입니다.
GitLab은 GitLab 환경에 특화된 시크릿 탐지 분석기를 제공합니다. 다음과 같은 기능을 제공합니다.
시크릿 푸시 보호는 변경 사항이 GitLab에 푸시되기 전에 이를 검사하고, 시크릿이 발견되면 푸시를 차단합니다.
파이프라인 시크릿 탐지는 CI/CD 파이프라인의 구성 요소로 실행되며, 리포지토리의 기본 브랜치로 향하는 머지 요청과 커밋을 검사합니다.
클라이언트 측 시크릿 탐지는 이슈 및 머지 요청의 댓글과 설명을 검사합니다.
GitLab은 특정 유형의 유출된 시크릿에 대해 이를 폐기하는 방식으로 자동 대응할 수 있습니다. 일부 계정 티어에서는 GitLab Duo의 오탐지 감지 기능이 식별된 시크릿을 평가하여 잠재적인 오탐지를 판별합니다.
Vault Radar는 HashiCorp의 시크릿 탐지 제품입니다. 이 제품은 시크릿뿐만 아니라 개인 식별 정보(PII)까지 지속적으로 실시간 스캔하며, 이를 대시보드에서 분류하고 우선순위를 매겨 대응 작업을 지원합니다.
스캔은 코드 커밋, 풀 리퀘스트, 데이터 소스 추가 시에도 수행됩니다. 지원되는 데이터 소스에는 Azure DevOps, Bitbucket, GitHub, GitLab과 같은 리포지토리 및 플랫폼과 Confluence, Jira, Slack과 같은 협업 플랫폼이 포함됩니다.
Vault Radar는 일부 엔터프라이즈 계정을 위해 기본 제공되는 대응 가이드를 제공합니다. 노출된 시크릿은 대응 과정의 일부로 HashiCorp의 시크릿 관리 플랫폼인 Vault로 복사될 수도 있습니다.
시크릿 탐지에 AI를 도입하는 개발 팀은 다음과 같은 이점을 얻을 수 있습니다.
컨텍스트 인식: AI 모델은 코드 주석, 소스 코드 구조, 변수 이름 등을 포함해 시크릿 주변의 컨텍스트를 학습할 수 있습니다. 이러한 의미적 및 컨텍스트 기반 분석을 통해 모델은 실제 시크릿과 샘플 데이터 또는 테스트 값을 보다 정확하게 구분할 수 있습니다. 따라서 컨텍스트 인식은 참양성률을 높이고 오탐지율을 낮추는 데 도움이 됩니다.
실시간 탐지: 일부 AI 기반 시크릿 탐지 툴은 IDE와 원활하게 통합되어 개발자가 코드를 작성하는 동안 하드코딩된 시크릿을 식별하고, 리포지토리에 커밋되거나 푸시되기 전에 이를 탐지합니다.
자동 우선순위 지정 및 대응: AI 기반 시크릿 탐지는 악용 가능성, 영향도, 위치, 심각도와 같은 요소를 기반으로 위험 점수를 부여하여 식별된 시크릿의 우선순위를 자동으로 정할 수 있습니다. 또한 노출된 시크릿을 시크릿 관리 플랫폼 호출로 대체하는 등의 수정 방법을 제안할 수 있습니다.
시크릿 탐지에 AI를 적용하려면 여러 가지 기술이 활용됩니다.
분류: 분류는 머신 러닝 모델이 특정 정보가 실제 시크릿인지 아닌지를 예측할 수 있도록 합니다. 시크릿 탐지를 위한 대표적인 분류 알고리즘에는 로지스틱 회귀, 나이브 베이즈, 서포트 벡터 머신(SVM)이 포함됩니다.
앙상블 학습: 앙상블 학습은 여러 분류기를 결합하여 예측 정확도를 향상시킵니다.
딥러닝: 다층 신경망을 기반으로 하는 딥러닝은 시크릿 탐지를 위한 더욱 강력하고 유연한 방법을 제공합니다. 일반적으로 사용되는 딥러닝 아키텍처에는 합성곱 신경망, 장단기 메모리(LSTM), 트랜스포머 모델이 포함됩니다.
생성형 AI: 대형 언어 모델(LLM)은 시크릿 탐지를 위한 또 다른 방법으로 활용될 수 있습니다. 사전 학습된 LLM과 미세 조정된 소형 언어 모델(SLM) 모두 시크릿을 예측하고 다양한 시크릿 유형으로 분류하는 데 사용할 수 있습니다. 휴먼 인 더 루프 접근 방식은 LLM의 예측 및 분류 정확성을 검증하는 데 여전히 중요합니다.
전통적인 방식과 AI 기반 전략을 결합하면 시크릿 탐지 프로세스를 더욱 강화할 수 있습니다. 패턴 매칭과 엔트로피 분석은 시크릿을 탐색하는 데 사용되고, AI 기반 방법론은 발견된 시크릿을 검증하여 오탐지를 제거합니다.
다음은 AI를 활용하는 시크릿 탐지 솔루션의 예시입니다.
GitGuardian 코드 보안 플랫폼은 Git 리포지토리, CI/CD 파이프라인, Docker 이미지 및 Confluence, Jira, Slack과 같은 협업 시스템을 스캔합니다. 개발자는 프리커밋 훅을 설정하고 IDE에 스캐닝을 통합하거나 GitGuardian의 명령줄 인터페이스 앱을 사용할 수 있습니다.
GitGuardian의 시크릿 탐지 엔진은 두 가지 유형의 패턴 매칭 탐지기로 구성되며, 특정 시크릿 유형을 찾기 위한 전용 탐지기(높은 재현율과 정밀도 제공)와 전용 탐지기가 놓칠 수 있는 항목을 포착하는 범용 탐지기가 포함됩니다. 다양한 머신 러닝 모델은 오탐지 가능성이 높은 시크릿을 필터링하고, 일반적인 시크릿 주변의 컨텍스트를 평가하여 적절한 카테고리와 제공자를 할당하는 등의 기능을 제공합니다.
기타 머신 러닝 기반 기능으로는 컨텍스트 유사성을 가진 시크릿을 그룹화하는 유사 사건 그룹화 기능과, 여러 위험 신호를 기반으로 시크릿의 우선순위를 정하기 위해 서로의 오류를 학습하는 의사결정 트리 앙상블인 XGBoost(eXtreme Gradient Boosting)를 사용하는 위험 점수 산정 기능이 포함됩니다.
GitHub Secret Protection은 GitHub의 자체 시크릿 스캐닝 시스템입니다. 이 시스템은 리포지토리의 모든 브랜치에 대한 전체 Git 히스토리와 이슈 및 풀 리퀘스트의 설명과 댓글을 검사합니다.
푸시 보호 기능은 각 푸시를 실시간으로 검사하여 시크릿이 포함된 커밋을 차단합니다. 또한 발견된 시크릿이 활성 상태인지, 공개적으로 노출되어 있는지 자동으로 검증할 수 있습니다.
GitHub Secret Protection은 GitHub Copilot을 활용해 리포지토리에 커밋된 비정형 시크릿도 탐지합니다.
Bob은 소스 코드 작성, 디버깅, 리팩토링, 코드 리뷰, 문서화를 지원하도록 설계된 IBM의 AI 코딩 어시스턴트입니다. 코드 내 보안 취약점을 정확히 식별할 수 있으며, 내장된 시크릿 탐지 기능과 결합되어 보안 코딩을 지원하고 강화합니다.
Bob은 사용자 정의 에이전틱 모드로 프로그래밍할 수 있으며, 하드코딩된 시크릿을 탐색하고 보안 위험을 설명하며 시크릿을 보호하기 위한 조치를 제안합니다. 또한 HashiCorp의 Vault와 같은 시크릿 관리 플랫폼에 대한 참조로 시크릿을 대체하고, Model Context Protocol(MCP)을 사용해 하드코딩된 시크릿을 Vault로 전송할 수 있습니다.
기업은 무엇을 시크릿으로 간주할지 정의하고, 중요도에 따라 이를 분류하여 대응 프로세스에 반영하는 것부터 시작할 수 있습니다. 또한 전체 소프트웨어 공급망을 감사하여 시크릿 노출 범위를 파악해야 합니다.
시크릿은 코드 관련 소스를 넘어 확산될 수 있습니다. 이는 다음과 같은 시크릿 노출 가능성이 있는 다른 소스도 탐지 대상에 포함해야 함을 의미합니다.
커뮤니케이션, 협업 및 개발자 생산성 툴
구성 파일
컨테이너 및 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼
데이터베이스
문서
코드형 인프라(IaC) 파일
로그
DevOps 팀은 개발자가 코드를 커밋하거나 풀 리퀘스트를 생성하기 전에 시크릿 스캐닝을 필수 단계로 만드는 프리커밋 훅을 구현하고, 하드코딩된 시크릿이 포함된 변경 사항을 차단할 수 있습니다. 또한 툴이 런타임 및 운영 환경에 도달하기 전에 아티팩트, 빌드 로그, 환경 변수에서 노출된 시크릿을 지속적으로 스캔할 수 있는지 반드시 확인해야 합니다.
기업은 노출된 시크릿의 우선순위를 어떻게 정하고 수정할 것인지에 대한 정책을 수립해야 합니다. 분류 정책에는 다양한 시크릿 유형이 초래하는 보안 위험 평가와 해당 분류를 담당할 팀 지정이 포함될 수 있습니다.
대응 정책에는 시크릿 폐기, 교체 또는 시크릿 관리 플랫폼 호출로 대체하는 등의 조치를 명확히 규정해야 합니다. 이러한 수정 작업을 자동화하면 시간을 절약하고 신속한 대응이 가능하지만, 수정 이후 해당 시크릿이 더 이상 탐지되지 않는지 반드시 검증해야 합니다.
조직은 시크릿 탐지를 개발 또는 DevOps 팀의 보안 코딩 교육에 포함해야 합니다. 팀은 하드코딩되거나 노출된 시크릿의 위험성, 이러한 위험을 줄이기 위해 취할 수 있는 조치, 그리고 시크릿 탐지를 위한 필수 툴 사용 방법을 이해해야 합니다.