개인정보가 새지 않는 모바일 앱을 개발하려면 어떻게 해야 할까요?
최근 스타트업을 넘어 대기업과 금융기관에서 모바일 앱 개인정보 유출사고가 잇따르고 있습니다. 대기업과 금융기관은 자체 정보보안 인력으로 보안체계를 세워 개발하며 모바일 앱 보안에 노력을 쏟고 있지만, 중소기업이나 스타트업은 역량 부족으로 개발자의 개인 보안역량에 의존하는 경우가 많습니다.
신규 서비스를 개발하는 ABC컴퍼니의 사례를 보며, 우리 회사의 보안 강도를 높여봅시다.
ABC 컴퍼니는 개인정보를 활용한 신규 서비스 런칭을 기획하던 중, 운영 중인 모바일 앱 개인정보 노출 사고로 KISA(한국인터넷진흥원)에 신고돼 곤혹을 치뤘습니다. 나잘난 대표는 신규 서비스의 보안을 기획 단계부터 고려하기로 했습니다.
[신규 서비스 개발 회의]
나잘난 대표: 최개발 상무님, 이번에 기획 중인 서비스는 준비에 차질이 없을까요? 보안은 고려하고 있나요?
최개발 상무: 네, 대표님. 서비스는 문제가 없는데, 보안은 쉽지 않습니다. 정보보안 담당 인력도 없고, 개발자도 정보보안에 대한 이해가 부족해서…
나잘난 대표: 제가 방법을 알아보죠.
나잘난 대표는 고민 끝에 최근 알게 된 ‘탤런트뱅크’에서 ‘정보보호 전문가’에게 자문 받기로 결정했습니다. 여러 지원자 중에 H 정보보호 전문가와 계약을 체결해서 ‘개발 단계의 보안’을 자문 받았습니다.
[1차 자문 미팅]
나잘난 대표: H 전문가님, 신규 개발 중인 모바일 앱 보안을 지키려면 주의할 사항이 있을까요? 있다면 어떤 것부터 시작해야 할까요?
H전문가: 대표님, 혹시 개발보안 지침을 보유하셨나요? CTO/개발자의 정보보안 역량도 궁금합니다. 임직원의 정보보안 이해도는 얼마나 높나요?
[개발 기획 시 사전 준비사항]
- 개발보안과 관련된 규정을 수립합니다.
ABC컴퍼니는 정보보호 규정이 수립돼 있지 않습니다. 전자 정보보호 정책/지침을 세워야겠지만, 현재는 개발보안이 시급하므로 개발보안 및 운영 지침부터 수립합니다.
정보보호 규정이 없는 기업은ABC 컴퍼니처럼 외부 정보보호 전문가로부터 도움을 받거나, 정보보호 컨설팅을 받거나, 개발자가 자체적으로 지침을(일부 미흡하더라도) 정합니다. 개발 보안 및 운영 지침에 포함돼야 할 내용은 아래와 같습니다:
- 개발과 운영환경의 분리
- 보안요구사항 분석과 정보보안 요건 정의
- 설계 시 보안원칙(최소 권한의 원칙, 사용자 ID/패스워드 설계, 사용자 인증 설계 등)
- 안전한 프로그래밍, 프로그램의 테스트
- 운영 이관, 변경관리/긴급 변경관리
- 공개 웹사이트 관리
- 암호화/암호화 키 관리
- 개발 시 보안요건을 정의합니다.
대부분의 스타트업에서 개발하는 모바일 앱은 ‘개인정보 활용’을 기본으로 합니다. 개발 과정에서 법적 요건을 준수하도록 사전에 필요한 요건을 정의합니다. 보안요건 중 주요 사항 위주로 작성하며, 내부 규정을 고려해 자체 보안요건을 정의합니다.
- 계정 및 패스워드 관리: 패스워드 하드코딩 금지, 패스워드 입력 시 마스킹, 패스워드 오류 시 비활성화, 패스워드 분실 시 재설정 등
- 인증 및 권한 관리: Two-factor 인증 적용, 중요정보 권한관리 등
- 세션 관리: 세션 토큰관리, 쿠키 설정, 세션 종료 등
- 암호화: 암호화 적용, 전송구간 암호화, 메모리 상의 중요정보 보호, E2E 암호화 등
- 설계 관련 문서에 보안 요건 정의가 반영됐는지 확인합니다.
새로운 어플리케이션을 개발할 경우, 개발계획서, 화면정의서, DB테이블 명세서, ERD 등 다양한 개발 산출물을 개발 생명주기 절차(SDLC)에 따라 생성합니다. 2번에서 정의한 개발 보안요건을 기획단계에서 작성되는 개발 산출물에 반영해야 합니다. 예를 들어, 화면정의서에는 로그인 화면에서 다음과 같은 요건이 반영되도록 해야 합니다.
1) 비밀번호 입력 시 마스킹 처리
2) 비밀번호 전송 시 전송구간 암호화
3) 비밀번호 일정횟수(5회) 오류 시 일시 잠금
4) 특정 시간 입력이 없을 경우 세션 종료
5) 로그인 시 로그인 성공/실패 로그 저장
[코딩 시 적용사항]
H 전문가: 최상무님 신규 개발 기획 중인 모바일앱과 관련해 제공해주신 개발 관련 산출물을 검토했고, 부족한 부분/보완해야 할 사항에 관한 의견을 드렸습니다.
최개발 상무: H 전문가님, 의견을 잘 받았습니다. 개발 기획 단계에서 제공해주신 의견을 반영해 수정하겠습니다. 혹시 개발 중에 주의해야 할 사항이 있을까요?
H 전문가: 네, 개발자에게 개발 언어별 보안가이드를 교육해주시고, 개발 과정에 적용하도록 지속적으로 관리해주시기 바랍니다.
- 개발 언어별 보안가이드를 마련합니다.
모바일 앱 개발에 사용하는 언어는 다양합니다. 전통적으로 JAVA를 활용하기도 하고, Go, C++를 활용해 개발하는 경우도 있습니다. 개발자는 개발 초기 단계부터 보안 요구사항과 오용 사례를 고려해 보안 위협을 최소화해야 합니다. 소프트웨어 취약점은 다음과 같은 상황에서 발견됩니다:
- 보안요구 사항이 정의되지 않음
- 논리적인 오류를 가지는 설계를 수행했거나
- 기술적 취약점을 가지는 코딩 규칙을 적용했거나,
- 발견된 취약점에 대해 이행조치를 하지 않은 경우
또한 개발 언어별 보안가이드는 행정안전부와 한국인터넷진흥원 자료를 참고하시면 됩니다:
- 소프트웨어 개발 보안가이드: https://www.mois.go.kr/cmm/fms/FileDown.do?atchFileId=FILE_00068871pUmb4hR&fileSn=0
- C언어 보안가이드: https://www.mois.go.kr/cmm/fms/FileDown.do?atchFileId=FILE_000000000046959&fileSn=1
- JAVA 보안가이드: https://www.mois.go.kr/cmm/fms/FileDown.do?atchFileId=FILE_000000000046959&fileSn=2
- 파이썬 보안가이드 : https://www.kisa.or.kr/post/fileDownload?menuSeq=2060204&postSeq=13&attachSeq=1&lang_type=KO
- 개발자 보안교육을 실시합니다.
개발보안 및 운영 지침과 개발 언어별 보안가이드를 작성해 내부 검토를 확정했다면, 주기적으로 개발자에게 교육합니다. 촉박한 개발 일정으로 개발자는 보안보다 개발 일정을 우선순위로 둘 수 밖에 없습니다. 따라서CTO 또는 개발책임자는 소속 개발자가 개발 단계별로 필요한 보안 요구사항을 실행하도록 주기적으로 교육합니다.
[테스트 및 운영이관 시 적용사항]
최개발 상무: H 전문가님, 자문하신대로 개발언어 보안가이드를 배포하고 개발자를 교육하며 개발을 진행하고 있습니다. 다음주에 Staging 서버에서 통합 테스트를 진행할 예정입니다. 테스트 단계에서 주의할 사항이 있을까요?
H전문가: 설계할 때 작성된 개발 산출물에 명시된 보안 요구사항대로 개발됐는지 테스트하시고, 최종 이관 전에 소스 약점을 직접 진단하신 뒤 모의해킹으로 안전성을 검증하시면 됩니다.
- 보안요건 구현 여부를 테스트하고 모의해킹으로 검토합니다.
개발생명주기에 따라 단위테스트, 기능테스트, 통합테스트, 인수테스트를 실시하게 됩니다. 각 단계마다 보안요건이 정상적으로 개발됐는지 테스트합니다. 특히, Staging 단계에서 운영으로 이관하기 직전의 어플리케이션은 소스코드 리뷰와 모의해킹으로 발생 가능한 취약점을 분석합니다. 발견된 취약점은 운영으로 이관하기 전에 반드시 조치를 완료한 후 이관해야 하며, 만약 일정상 조치가 불가능하다면 책임자 승인을 받고, 추가적인 보완대책을 수립합니다.
소스 리뷰는 ‘소스 약점 진단툴’을 활용하거나 자체 리뷰를 진행해도 됩니다. 다만, 자체 리뷰는 개발자가 참여하지 않고 제3자인 개발 책임자와 이관 담당자가 검토해야 합니다. 소스 리뷰는 신규 시스템 개발, 대규모 리뉴얼, 단순 변경을 포함한 모든 경우에 검토해야 합니다.
모의해킹은 자체적으로 진행하기 어려우니, 외부 전문가에게 요청해 수행합니다. 모의해킹은 모든 소스 변경사항 발생에 해당하는 방법은 아닙니다. ‘개인정보 처리’와 같이 주요 프로세스가 변경된 경우에 수행합니다.
- 운영 이관 후 주기적인 진단으로 안전하게 관리합니다.
운영으로 이관된 후 기능 개선과 추가 메뉴 개발과 같은 변경사항이 발생합니다. 변경이 발생할 때 개발책임자는 변경에 따른 보안 영향을 검토합니다. 자체 검토가 어렵다면 정보보호 담당자나 외부 정보보호전문가에게 검토를 요청해도 됩니다.
그리고 연 1회 모의해킹으로 운영 중인 모바일 앱 취약점을 점검하고, 발견된 취약점에 적절한 조치를 취합니다. 발견된 취약점은 개발자를 교육해 동일한 취약점이 발견되지 않도록 관리해야 합니다.
[기타 개발 시 고려사항]
최개발 상무: H 전문가님, 전문가님의 자문에 따라 기존보다 훨씬 안전한 어플리케이션을 개발했습니다. 지금까지 이야기하신 내용 외에 추가적으로 고려해야할 사항이 있을까요?
H 전문가: 거의 대부분 이야기해드린 것 같은데요. 추가적으로 형상관리솔루션을 관리해 소스 외부 유출을 예방하고, 지속적으로 외부인력을 관리해야 합니다.
- 형상관리솔루션의 접근 권한과 패스워드 변경 권한을 통제합니다.
소프트웨어 변경사항을 체계적으로 추적하는 ‘형상관리’를 위해서 형상관리솔루션(GitLab, GitHub, Visual SVN 등)을 사용합니다. 기본적으로 형상관리솔루션에 어플리케이션의 모든 소스가 관리되므로 다음과 같은 보안통제 체계를 갖춰야 합니다.
- 주기적인 패스워드 변경: 형상관리솔루션은 사용자가 패스워드를 변경하도록 설정할 수 있습니다. 최소한 반기, 분기별로 패스워드를 변경하도록 설정하고 규정에 따라 패스워드를 설정할 수 있도록 복잡도, 길이, 이전 비밀번호 재사용 정책을 설정해야 합니다. Visual SVN은 사용자가 패스워드를 변경할 수 없고, 관리자가 변경하므로 주의가 필요합니다.
- IP접근제어 설정: 업무망과 개발자망이 분리되지 않았다면, 개발자가 아닌 일반 직원도 동일 네트워크 대역을 사용해 형상관리솔루션 접근을 시도할 수 있습니다. 불필요한 접근을 시도하지 않도록 IP 접근을 통제합니다.
- MFA(Multi-factor Authentication) 설정: IP 접근제어와 패스워드를 설정했더라도 ‘IP 주소 변조’와 ‘패스워드 공유’로 내부 비인가자의 접근시도가 발생할 수 있어, MFA 설정으로 인증을 강화합니다.
- 접근 로그 및 이벤트 로그 검토: 허가되지 않은 저장소 접근 시도 또는 비인가자 접근 시도 등 이상 징후 분석을 위해 저장된 로그를 주기적으로 검토합니다.
- 외부 개발자도 내부 직원과 같이 관리합니다.
내부 개발인력만으로 개발이 어려워 외부 개발자와 함께 작업하는 경우가 있습니다. 외부 개발자가 소속된 업체와 계약할 때는 계약서에 정보보호 또는 개인정보보호와 관련된 특약이 포함된 계약을 체결해야 합니다. 정보보호 서약서를 작성한 뒤, 개발 보안 및 임직원 보안과 관련된 사항을 교육합니다. 외부 개발자가 외부에서 근무할 때는 월별 보안점검으로 관리 감독합니다.
H전문가: 대표님, CTO님, 그동안 자문에 협조해주셔서 성공적으로 마무리했습니다. 향후에 신규 개발 또는 대규모 리뉴얼이 발생하면 자문한 내용을 참고하시면, 보안에 강한 모바일 앱을 개발하실 수 있습니다. 그동안 고생 많으셨습니다.
나잘난 대표: 개발만 잘하면 괜찮을 줄 알았는데, 보안 측면에서 준수해야 할 사항이 많다는 사실을 이번에 느꼈습니다. 자문 내역을 바탕으로 신규 개발과 변경에 반영하겠습니다. 이후에 궁금한 게 있으면 질문을 해도 되겠죠?
H전문가: 물론이죠. 수고하셨습니다.
홍성권 전문가의 또다른 #정보보호 글
중소 공장도 랜섬웨어, 피할 수 있어요!
중소기업 개인정보 보호, 이것만 갖추면 안심!
홍성권
기업 정보보호 강화를 위한 퍼실리테이터(Facilitator)
現) 탤런트뱅크 전문가
前) (주)노르마 컨설팅본부 본부장/이사
前) EY한영회계법인 Advisory본부 Cyber Security 이사
회사의 핵심인 CEO와 임원진은 언제나 제대로 의사결정하고 있는지 고민합니다. ‘원포인트 레슨’은 탤런트뱅크 전문가들이 수십년간 실무를 경험하며 다듬어낸 인사이트를 제공합니다. 의사결정 파트너가 돼줄 전문가들의 핵심조언 한마디를 들어보세요.
기업의 비즈니스 고민, 검증된 전문가가 직접 해결합니다.
기업과 전문가 매칭 플랫폼, 탤런트뱅크