다섯 살도 알 수 있게 · 보안
코드 스캔이 뭐예요?
코드 스캔(SAST·DAST·시큐어 코딩)을 짓기 전에 도면을 읽고, 지은 뒤에 벽을 두드려 보는 경비 이야기로 풀어봤어요.
도면은 천 장, 벽돌은 만 개예요. 눈으로는 다 못 봐요.목수는 매일 벽돌을 쌓아요. 틈은 벽돌 하나만 해요. 경비 혼자 다 볼 수는 없어요.
고용한 도둑은 일 년에 한 번 와요. 그사이 틈은 열려 있어요.고용한 도둑은 큰 시험이라 가끔만 와요. 그사이에 쌓은 벽돌은 아무도 안 봤어요. 진짜 도둑은 기다려 주지 않아요.
도면도 보고, 벽도 두드려요. 벽돌 하나 쌓을 때마다 자동으로요.짓기 전엔 도면을 읽어서 틈을 찾아요. 지은 뒤엔 벽을 두드려 빈 소리를 들어요. 남이 준 벽돌은 부품 목록표도 봐요.
도면 읽기짓기 전에, 종이 위에서
벽 두드리기지은 뒤에, 진짜 벽을
부품 목록 보기남이 만든 벽돌은 목록표로
벽돌마다 자동사람이 안 기다려요
도면 검사는 깃발이 너무 많고, 두드리기는 늦지만 확실해요.도면 검사는 '혹시' 싶은 곳마다 깃발을 꽂아요. 괜찮은 곳에도요. 두드리기는 진짜 빈 곳만 찾지만, 벽을 다 쌓아야 할 수 있어요.
목수도 배워요. 처음부터 틈 없이 쌓는 법을요.틈 없이 쌓는 법을 배우고, 동료가 옆에서 같이 봐요. 검사는 매일 벽돌마다, 고용한 도둑은 가끔 큰 시험. 역할이 달라요.
한 줄로
코드 스캔 = 짓기 전에 도면을 읽어 틈을 찾고, 지은 뒤에 벽을 두드려 빈 소리를 듣는 일. 벽돌 하나 쌓을 때마다 자동으로.
SAST(정적 분석)는 소스 코드를 실행 없이 읽어 취약한 패턴을 찾고, DAST(동적 분석)는 실행 중인 앱에 요청을 보내 실제 반응을 봐요. SCA는 외부 라이브러리의 알려진 취약점을 확인해요. 시큐어 코딩과 코드 리뷰가 앞단에서 틈을 줄여요.
어른들은 이렇게 불러요
- SAST
SAST - 도면 읽기. 짓기 전에 종이(코드)만 보고 틈을 찾아요. 빠르고 넓지만, 헛소리 깃발도 많아요.
- DAST
DAST - 벽 두드리기. 다 지은 벽(실행 중인 앱)에 부탁을 던져 보고 빈 소리를 들어요. 늦지만 진짜예요.
- SCA
SCA - 부품 목록 검사. 남이 만든 벽돌(라이브러리)에 알려진 틈이 있는지 목록표로 봐요. → 도구에 붙은 부품 목록표
- 시큐어 코딩
Secure coding - 틈 없이 쌓는 법. 처음부터 틈이 안 생기게 쌓는 목수의 버릇. 남이 준 걸 믿지 않기, 열쇠 안 박기. → 도둑 수업
- 오탐 / 미탐
False positive / false negative - 괜찮은 곳의 깃발 / 놓친 틈. 도면 검사는 오탐이 많고, 두드리기는 미탐이 생겨요. 둘을 같이 써서 서로 메워요.
- 코드 리뷰
Code review - 동료가 옆에서 보기. 벽돌 쌓기 전에 다른 목수가 한 번 봐요. 사람 눈은 도구가 못 보는 '왜'를 봐요.
- 인젝션
Injection - 쪽지 속에 숨긴 명령. 손님이 낸 쪽지를 그대로 읽으면 벽이 시키는 대로 움직여요. 도면 검사가 가장 잘 잡는 틈. → 창구 앞 쪽지 검토원
- 펜테스트와의 차이
Versus a pentest - 매일 하는 검사 / 가끔 오는 도둑. 검사는 자동으로 매일, 고용한 도둑은 사람이 가끔 깊게. 서로 대신하지 못해요. → 우리가 고용한 도둑
다음 이야기
경비실의 자동 순서표 기계 →