15일(현지 시간) 마이크로소프트(MS)의 소셜 코딩 플랫폼인 깃허브(Github)는 코드 내 정보 유출을 방지하는 자체 스캔 도구 ‘시크릿 스캐닝(Secret Scanning)’을 무료로 출시했다.
깃허브에 코드 내용을 게시하는 과정에서 개발자들은 빈번히 내부 데이터를 유출했다. 특히 서버 인증 토큰이나 회사 기밀 정보, 개인 정보 등 코드에 직접 대입한 후 올릴 때 지우지 않은 채로 게시하는 경우가 많았다. 기업 기밀 정보의 유출 사고 원인으로도 자주 꼽힌다. 올해 초부터 깃허브는 총 170만 건이 넘는 정보 유출 사례를 발견했다고 밝혔다.
코드에 데이터를 직접 대입하는 것을 ‘하드 코딩(Hard Coding)’이라고 한다. 코드에 값을 고정시켰다는 의미를 지닌다. 하드 코딩하면 코드 안에 데이터가 직접 들어간 만큼 코드가 직관적이고 이해하기도 쉽다. 한마디로 코드의 가독성이 살아난다. 하드 코딩은 프로그램 처리 속도도 더 빠르게 만든다. 특히, 개발 시간이 충분하지 않을 때 효율적인 작업을 가능하게 한다. 일반적으로 테스트 단계에서 이뤄진다.
하드 코딩에 사용되는 데이터는 주로 아이피(IP) 주소나 내부 시스템을 포함해 각종 비밀번호, 인증 토큰, 파일 경로, 문자열 출력과 같이 중요 정보들이다.
개발자는 소스 코드를 배포하거나 프로그램으로 출시하는 등 외부에 소스 코드 내용을 공유할 때 직접 넣었던 데이터들을 모두 지워야 한다. 데이터를 코드에 직접적으로 적는 방식은 소프트웨어(SW) 개발 보안 가이드라인에 적합하지 않다.
개발자의 소스 코드가 한두 줄로 그치는 경우는 드물다. 소스 코드 내용이 길어지면 개발자도 하드 코딩한 부분을 단번에 찾기 어렵고 심한 경우 그러한 사실조차 잊은 채 외부와 공유하게 된다. 개발 과정이 길어질수록 이러한 위험이 발생할 확률은 더욱더 높아진다.
하드 코딩된 소스 코드가 노출되면 해커들은 보안 취약점으로 삼아 내부 시스템에 공격을 가할 수 있다. 또한 소스 코드를 손에 넣은 공격자는 시스템, 서버, 하드웨어 등 내부에 존재하는 모든 기능을 작동하는 일이 가능해진다.
이번에 출시한 시크릿 스캐닝은 예상치 못한 정보 유출을 탐지하기 위해 코드 내용을 추가로 검색하도록 활성화하는 보안 옵션이다. 해당 도구는 깃허브와 협업 중인 회사가 제공하는 유출 패턴이나 개발 팀에서 정의한 패턴을 소스 코드 내용과 비교하는 방식으로 작동한다. 그리고 200개 이상의 토큰 형식이 소스 코드에 담겨 있는지 스캔한다. 토큰 형식은 △API 키 △인증 토큰 △접근 토큰 △관리 인증서 △자격 증명 △개인 키 △비밀 키 등으로 구성된다.
깃허브는 깃허브 고급 보안(Github Advanced Security)에 비용을 지불하고 라이센스를 취득한 기업 사용자에게만 시크릿 스캐닝 서비스를 제공해 왔다. 우버(Uber) 자회사 포스트메이츠(Postmates)의 보안 엔지니어 데이비드 로스(David Ross)는 시크릿 스캐닝 서비스를 통해 해결해야 할 중요한 코드 문제들을 다수 발견했다고 말했다.
시크릿 스캐닝을 사용하면 소스 코드 내 유출된 데이터를 개발자에게 자동으로 통보한다. 따라서 개발 조직에서 보다 유출된 내용을 쉽게 추적하고, 데이터 유출 원인을 빠른 시간 내로 식별 가능하다. 실수로 정보가 유출됐을 때 추가 악용을 방지하기 위한 조치를 신속하게 취할 수 있다.
시크릿 스캐닝은 깃허브를 사용하는 개발 조직이 소스 코드 공급망 보안을 강화하고, 실수로 정보를 유출하는 것으로부터 보호하기 위한 각종 조치들 중 가장 쉬운 방법이다. 일반적으로 다른 보안 회사들의 제품은 기업을 대상으로 하지만 깃허브 시크릿 스캐닝은 일반 사용자도 깃허브 사이트에 소스 코드 내용을 포스팅하면 이용 가능한 점에서 더욱 유용할 것으로 보인다.
한편 지난 15일, 깃허브 담당자 마리암 술라키안(Mariam Sulakian)과 자인 말리크(Zain Malik)는 모든 깃허브 커뮤니티에 시크릿 스캐닝 기능을 무료로 배포하기 시작했다고 말했다.
현재 국내에서도 시크릿 스캐닝 섹션이 생긴 것을 확인할 수 있다. 시크릿 스캐닝 섹션은 ‘코드 보안과 분석(Code security and analysis)’ 탭에 존재하는데, 이는 깃허브 사이트에 접속한 뒤 설정 버튼을 클릭하면 나온다. 시크릿 스캐닝 섹션에 ‘Enable’이 떠 있으면 클릭해서 활성화 상태로 바꾸면 해당 기능이 켜진다. 만약 ‘Disable’ 버튼이 나온다면 해당 기능이 이미 활성화된 상태인 것이다. 구체적인 정보와 시크릿 스캐닝을 활성화하는 방법은 깃허브 공식 사이트 ‘https://docs.github.com/ko/enterprise-cloud@latest/code-security/secret-scanning/about-secret-scanning’에서 제공 중이다.
시크릿 스캐닝 기능은 점진적으로 출시하고, 내년 1월 말까지 모든 사용자가 이용 가능할 예정이다.
테크플러스 에디터 박효정
tech-plus@naver.com