497. 행정안전부/KISA 소프트웨어 개발 보안 가이드 (47개 보안 약점)
핵심 인사이트 (3줄 요약)
- 본질: 행안부/KISA 개발 보안 가이드는 외국의 추상적인 족보(CWE, OWASP)를 대한민국 공공기관과 금융권의 현실적인 자바(Java), C 언어 개발 현장에 맞게 씹어서 떠먹여 주는 **'47개의 필수 시큐어 코딩(Secure Coding) 절대 법전이자 한국형 보안 약점 체크리스트'**다.
- 가치: "안전하게 짜라"는 모호한 훈수를 버리고, 47개의 항목마다 **"안전하지 않은 쓰레기 코드 예시 ➡ 완벽하게 수정된 정답 코드 예시(Java 기준)"**를 1:1로 정확하게 꽂아준다. 대한민국 국가 정보화 프로젝트(전자정부 등)를 수주하려면 이 47개 시험(SAST 기계 검사)을 무조건 100점(결함 0건) 맞아야만 배포가 허가되는 무자비한 법적 강제성을 지닌다.
- 융합: 앞서 배운 글로벌 족보인 **CWE(공통 약점 사전)**와 완벽하게 1:1 매핑되어 융합되며, SAST(정적 분석 스캐너 - Sparrow, SonarQube 등) 봇들의 뇌(Rule-set) 속에 칩처럼 이식되어, 개발자의 키보드 타이핑을 감시하고 CI/CD 빌드를 1초 만에 박살 내는 기계적 수문장으로 군림한다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: 한국인터넷진흥원(KISA)과 행정안전부가 배포한 시큐어 코딩(Secure Coding) 공문서다. 해킹당하는 가장 뻔한 원인(입력값 미검증, 암호화 실수 등) 47가지를 7개의 거대한 덩어리로 묶어놓고, "공공기관 프로그램 짤 때 이 47개 코드 검사를 통과 못 하면 런칭 안 시켜준다!"라고 못을 박은 대한민국 소프트웨어 검수 규격서다.
-
필요성: 2010년대 초반, 농협 전산망 마비부터 각종 공공기관 홈페이지가 중국 해커의 SQL 인젝션과 디도스 한 방에 뻥뻥 뚫리며 국민 개인정보 수천만 건이 털렸다. 원인은 간단했다. SI 외주 개발자들이 밤샘 야근을 하며 쿼리를 문자열(
+)로 대충 덧붙여서 복붙 코딩을 했기 때문이다. 해킹을 밖에서 방화벽으로 막는 데는 한계가 왔다. **국가 차원에서 아예 "건물(코드)을 지을 때부터 불량 시멘트(취약한 함수)를 쓰면 건축 허가를 취소해버리겠다"는 물리적이고 강압적인 철퇴(법제화)**가 필요했고, 개발자 멱살을 잡고 코딩 습관을 뜯어고치기 위해 이 가이드가 탄생했다. -
💡 비유: KISA 47개 가이드는 대한민국 도로 교통의 **'자동차 안전검사 47개 컷오프(Cut-off) 항목'**과 같습니다. 옛날에는 바퀴가 굴러가기만 하면(기능 테스트 통과) 고속도로(인터넷)로 내보냈다가 브레이크 파열로 수십 명이 죽었습니다. 이제 국토부는 브레이크 두께, 전조등 밝기, 배기가스량 등 정확히 47개 항목을 기계 위에 올려놓고 측정(정적 스캐너)합니다. 단 한 개라도 미달(에러 1건)이면 빨간불을 켜고 자동차 번호판(배포 허가)을 절대 발급해주지 않는 피도 눈물도 없는 국가 필수 안전 검문소입니다.
-
등장 배경 및 발전 과정:
- 사후 약방문의 대참사 시대: 뚫리고 나서 외양간(패치)을 고쳤지만, 국가 기반 시설(정부24, 금융망)이 털리는 빈도가 도를 넘었다.
- 시큐어 코딩 법제화 (2012): 행안부가 칼을 뽑았다. 43개(초기)의 보안 약점 리스트를 만들어, 일정 규모(50억 이상) 이상의 모든 공공 정보화 사업에 시큐어 코딩 적용과 감리(SAST 툴 검사)를 법적으로 의무화해 버렸다.
- 47개 항목으로의 고도화 (현재): 클라우드, 모바일, API 통신이 고도화되며 43개가 47개로 촘촘히 튜닝되었다. 이제 공공기관뿐만 아니라 카카오, 네이버 같은 민간 대기업 IT 심사에서도 이 47개 항목의 정적 분석(SAST) 통과 리포트를 최소한의 Baseline(안전 마지노선)으로 요구하는 국가 헌법이 되었다.
-
📢 섹션 요약 비유: 외국의 글로벌 해킹 족보(OWASP, CWE)가 대학생들이 보는 **'두꺼운 영어 원서 전공 서적'**이라면, KISA 47개 가이드는 그 원서에서 시험에 100% 출제되는 기출문제만 핀셋으로 뽑아내어, 한국 개발자들이 10분 만에 베껴 쓸 수 있도록 한글 정답(Java 코드)까지 예쁘게 형광펜으로 칠해놓은 **'대한민국 맞춤형 수능 족집게 요약 노트'**입니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
1. KISA 보안 약점 7대 카테고리 뼈대 (47개 항목의 지도)
단순히 47개를 1열로 늘어놓은 게 아니다. 해커가 뚫고 들어오는 '맥락'에 따라 7개의 거대한 성벽으로 분류했다.
- 입력 데이터 검증 및 표현 💥 (가장 중요, 17개 항목)
- 타겟: SQL 인젝션, XSS(크로스 사이트 스크립팅), 경로 조작(Directory Traversal).
- 방어: 밖에서 날아오는 모든 문자(Input)는 독극물이다. 무조건 화이트리스트 필터링하고 바인딩(
?) 쳐라! (다음 장 498번)
- 보안 기능 (15개 항목)
- 타겟: 암호화 약점(MD5 사용), 하드코딩된 패스워드, 취약한 난수 사용(
Math.random()). - 방어: 강력한 해시(
SHA-256,Bcrypt)를 쓰고 인증서 검증 똑바로 해라. (A02 암호화 실패 융합)
- 타겟: 암호화 약점(MD5 사용), 하드코딩된 패스워드, 취약한 난수 사용(
- 시간 및 상태 (2개 항목)
- 타겟: TOCTOU (검사 시점과 사용 시점의 레이스 컨디션 동시성 문제), 종료되지 않는 재귀 함수.
- 방어: 멀티스레드 환경에서 한 스레드가 검사 통과 후 락(Lock)을 안 걸어서 다른 놈이 털어먹는 스위칭 꼼수를 막아라.
- 에러 처리 (3개 항목)
- 타겟: 에러 메시지에 민감한 정보(스택 트레이스, 톰캣 경로) 화면 출력, 오류 처리 안 함.
- 방어: 사용자 화면에는 무조건 "알 수 없는 오류 발생"이라고 포커페이스 유지(
GlobalExceptionHandler)해라.
- 코드 오류 (5개 항목)
- 타겟: Null 포인터 역참조(NPE), 해제되지 않은 자원(
Connection.close()안 함 = 메모리 누수). - 방어:
try-with-resources써서 자원 꼭 닫고, 널 체크 로직 꼼꼼히 짜라.
- 타겟: Null 포인터 역참조(NPE), 해제되지 않은 자원(
- 캡슐화 (3개 항목)
- 타겟:
public배열 반환, 중요 데이터를private으로 안 감춤. - 방어:
private제어자를 엄격히 쓰고,clone()방어 복사를 통해 메모리 주소 노출 막아라.
- 타겟:
- API 오용 (2개 항목)
- 타겟:
System.exit()쌩 호출(서버 자살), 취약한 위험 함수(strcpy등) 사용. - 방어: OS 쉘(Shell) 명령어 직접 때리지 말고 프레임워크가 제공하는 안전한 우회 API 써라.
- 타겟:
2. 실무 개발자를 위한 정답 족보 아키텍처 (Before & After)
KISA 가이드의 핵심은 "지적"이 아니라 "교정(Remediation)"이다. 47개 항목에는 완벽한 수술법이 딸려 있다.
[ 약점명: 크로스 사이트 스크립팅 (XSS) / CWE-79 ]
-
안전하지 않은 코드 (AS-IS):
<%= request.getParameter("name") %>(해커가<script>넣으면 화면에서 해킹 코드 그대로 실행됨) -
안전한 코드 (TO-BE):
<%= name.replaceAll("<", "<").replaceAll(">", ">") %>또는<c:out value="${name}"/>(JSTL이나 XSS Filter를 통해 위험한 꺾쇠를 무해한 문자열 치환-HTML Escaping 처리) -
📢 섹션 요약 비유: 이 가이드북은 이케아(LEGO) **'조립 설명서 뒷장의 경고문'**과 똑같습니다. "1. 부품을 삼키지 마세요(XSS 방어), 2. 불 가까이 두지 마세요(인젝션 방어)." 말로만 경고하는 게 아니라, 아이가 부품을 삼켰을 때 뱉어내게 하는 하임리히 구급법(정답 Java 코드) 그림까지 아주 친절하고 직관적으로 박아놓아서 바보 개발자도 복붙(Copy & Paste)으로 1초 만에 살아남을 수 있게 해주는 마법의 치트키입니다.
Ⅲ. 융합 비교 및 다각도 분석
1. 글로벌 족보 vs 한국형 가이드 3대장 스펙 비교
보안 엔지니어들이 밥 먹듯이 헷갈리는 3가지 문서의 권력 관계.
| 척도 | CWE (Common Weakness Enumeration) | OWASP Top 10 | 행안부/KISA 47개 항목 |
|---|---|---|---|
| 소속/성격 | 미국(MITRE) / 전 우주 소프트웨어 결함 대백과사전 (1,000개) | 비영리 단체 / 최근 웹에서 가장 많이 터지는 해킹 순위표 (10개) | 대한민국 정부 / 한국 공공 SI 사업의 법적 채점 기준표 (47개) |
| 특징 및 포커스 | CWE-89 처럼 고유 일련번호(바코드)를 매겨 기계(스캐너) 통일을 이룸. | "설계가 문제다(Insecure Design)!" 등 아키텍처와 트렌드의 거시적 흐름. | "자바/C 코드 이렇게 짰으면 불합격!" 철저한 텍스트 문법/로직 교정용 족집게. |
| 활용 무대 | 스캐너 봇(SAST)들의 내부 엔진 데이터베이스. | 아키텍트의 위협 모델링 및 보안 예산 결재용 명분. | 감리단(심사위원)이 도장 찍어주는 법적 엑스레이 검사지. |
과목 융합 관점
-
소프트웨어 공학 (SAST 정적 분석 자동화): 대한민국에서 47개 항목을 인간의 눈으로 읽고 채점하는 감리관은 이제 없다. 공공기관 배포 전, 젠킨스(CI)에 국산 보안 스캐너인 **Sparrow(스패로우)**나 **Fasoo(파수)**를 물린다. 이 국산 스캐너들의 뇌 속에는 외국산(SonarQube)과 달리 KISA 47개 룰셋이 한국형 플러그인으로 100% 매핑(Mapping)되어 있다. 빌드를 돌리면 "3번 시간/상태 카테고리 1건, 1번 입력 데이터 검증 5건 ➡ 총 6건 KISA 위반! 배포 불가!"라고 KISA 포맷의 엑셀 리포트를 10초 만에 완벽하게 뿜어내어 국가 감사 제출용 서류를 100% 기계적으로 자동화(DevSecOps) 해버렸다.
-
아키텍처 (프레임워크의 방어 융합): 과거엔 KISA 가이드를 보며 개발자가 10,000줄의 코드마다
replace("<", "<")(XSS 방어)를 일일이 손으로 쳤다(노가다의 극치). 현대 스프링(Spring) 아키텍트는 이런 미친 짓을 하지 않는다. 아키텍트가 프로젝트 뼈대를 잡을 때, **Naver Lucy XSS Filter나Global HttpMessageConverter**를 스프링의 서블릿 필터(Filter) 단 한 곳(중앙 병목점)에 툭 꽂아 넣는다. 그러면 개발자들이 뒤에서 아무리 똥 코드를 짜더라도, 밖에서 들어오는 모든 JSON 데이터의 특수문자를 중앙 필터가 0.01초 만에 싹 소독(Escaping)해 버려, KISA 47개 중 XSS 관련 조항을 개발자 100명의 타자 한 번 안 치고 100% 올 패스(Pass) 시켜버리는 위대한 공학적 게으름(프레임워크의 권력)을 달성했다. -
📢 섹션 요약 비유: CWE가 지구상의 모든 범죄자 이름을 모아놓은 '국제 인터폴 수배자 명단(1,000명)'이라면, KISA 47개 항목은 대한민국 경찰청이 그 명단 중에서 한국(Java/C)에 제일 자주 밀입국하는 악질 조선족 보이스피싱범(주요 취약점) 딱 47명만 추려내서 몽타주와 방검복 입는 법까지 그려서 한국말(Java 코드 예시)로 동네 파출소에 쫙 깔아버린 **'한국형 맞춤 실전 범죄 예방 지침서'**입니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오
-
시나리오 — 난수(Random) 생성의 비극, KISA 2번 '보안 기능' 룰의 철퇴: 공공기관 회원가입 시 '이메일 인증 번호 6자리'를 쏘는 로직을 짰다. 주니어 개발자가
java.util.Random()이나Math.random()을 써서 6자리를 잘 뽑아냈다. 눈으로 보면 아주 훌륭한 난수다. 그런데 배포 전 KISA 진단 툴(Sparrow)을 돌리자 시뻘건 에러가 떴다. "취약한 난수 생성기 사용! 불합격!" 주니어는 억울했다.- 아키텍트의 해결책: 의사 난수(Pseudo Random)의 패턴 노출을 경고하는 KISA '보안 기능' 약점의 정석적 방어다. 일반
Random클래스는 씨앗(Seed, 보통 시간값)만 알면 해커가 슈퍼컴퓨터로 다음 6자리 숫자를 1초 만에 완벽하게 예측(역연산)해 버린다(세션 하이재킹). 아키텍트는 이 코드를 지우고, KISA 가이드의 정답지대로 운영체제의 미세한 노이즈(키보드 딜레이 등)를 긁어모아 절대 패턴 유추가 불가능한java.security.SecureRandom암호학적 난수 생성기를 무조건 강제 사용하도록 가이드하여, 로직을 수학적으로 무결하게 수술해 냈다.
- 아키텍트의 해결책: 의사 난수(Pseudo Random)의 패턴 노출을 경고하는 KISA '보안 기능' 약점의 정석적 방어다. 일반
-
시나리오 — "오탐(False Positive) 때문에 일정이 1달 밀렸어요!" (지옥의 예외 처리): 차세대 프로젝트 오픈 1주일 전, 스캐너 봇이 소스코드를 읽고 "SQL 인젝션 (KISA 1번 룰) 5,000개 위반!" 알람을 터뜨렸다. PM이 기절할 뻔했다. 아키텍트가 코드를 까봤다. 이 5,000개의 쿼리 문자열은 외부 인터넷 사용자(해커)가 입력한 더러운 값이 섞인 게 아니라, 사내 스케줄러(Batch)가 DB에서 꺼내온 아주 순결하고 안전한 상수(Constant)값을 문자열로 더하는 중이었다. 하지만 멍청한 기계(SAST)는
+기호만 보고 무지성으로 인젝션이라고 울부짖은 것이다.- 아키텍트의 해결책: 정적 스캐너(SAST)의 필연적 한계와 아키텍트의 Triage(선별/예외) 권력 발동이다. 스캐너는 데이터가 '외부(Tainted)'에서 온 건지 '안전한 사내 로직'에서 온 건지 맥락(Context)을 100% 모른다. 아키텍트는 5,000개를 고치라며 개발팀을 채찍질하는 멍청한 짓을 멈춰야 한다. 감리관(KISA 심사역)을 회의실로 불러, "이 5,000건은 외부 공격 표면(Attack Surface)과 단절된 내부 로직이므로 해킹 가능성이 0%인 오탐(False Positive)입니다"라고 논리적으로 증명하고, 서명과 함께 **'예외 처리(Exception / Ignore) 승인서'**를 받아 기계의 에러를 합법적으로 덮어버리는(Suppress) 담력과 타협의 정치력이 실전 시큐어 코딩의 꽃이다.
도입 체크리스트
- 비즈니스적: 우리가 짠 코드가 아니라 '프레임워크(Spring) 자체'의 구멍은 누가 책임지는가? 개발자가 KISA 47개를 100% 완벽하게 지켜서 짰다. 그런데 앱을 돌리는 톰캣(Tomcat) 서버 자체가 구버전이라
Log4Shell같은 취약점이 떴다. KISA 47개 항목은 철저하게 '개발자가 타이핑한 소스 코드'만을 채점하는 잣대다. 인프라나 오픈소스 버전 폭탄(A06)은 이 47개 돋보기로는 영원히 못 잡는다. 아키텍트는 KISA 47개 통과(SAST)에 만족하지 말고, 무조건 **SCA(오픈소스 스캐너)**를 파이프라인에 듀얼(Dual)로 장착하여 코드 밖의 지뢰까지 커버해야 진정한 면역 체계를 완성할 수 있다. - 기술적: 에러 처리(KISA 4번 룰)를 개발자 각자에게 방임하고 있는가?
try-catch안에서 에러 났다고e.printStackTrace()를 치면 KISA 룰에 정면으로 걸려 배포가 빠꾸 먹는다. 시스템의 모든 에러 스택(파일 경로 등)이 고객 브라우저로 쏟아져 해커에게 지도를 바치기 때문이다. 아키텍트는 개발자들에게 "catch 문 안에서 절대 에러 찍지 마!"라고 소리칠 게 아니라, 스프링의 **@ControllerAdvice(전역 에러 핸들러)**를 1개 짜두어, 프로젝트 어디서 무슨 미친 500 에러가 터지든 고객 화면에는 무조건{"msg": "알 수 없는 오류 (코드: 918)"}이라는 획일적이고 무해한 가짜 마스크(포커페이스)만 던지도록 아키텍처 중앙 집중 필터링을 박아놔야 개발자 100명의 실수를 커버할 수 있다.
안티패턴
-
마법의 눈가림 "블랙리스트(Blacklist) 치환" 꼼수: KISA XSS 룰을 통과하겠다고 꼼수를 부리는 안티패턴. 개발자가 입력값에
<script>글자가 들어오면replaceAll("<script>", "")로 지워버리게 짰다. 1차 스캐너는 통과했다. 며칠 뒤 해커가 대소문자를 섞어서<sCriPt>나 띄어쓰기를 섞어<scri pt>라고 날렸더니 멍청한 블랙리스트 필터를 유유히 뚫고 들어가 관리자 세션을 털었다. "나쁜 놈(블랙리스트)을 찾아 지우는 헛짓거리를 멈춰라. 문자열이 들어오면 무조건 정해진 안전한 문자(화이트리스트)가 아니면 100% 튕겨버리거나,<기호를<로 무지성 치환(HTML Escaping)하는 것만이 KISA가 요구하는 정답이다." -
📢 섹션 요약 비유: 블랙리스트로 방어하는 건 파티장 입구에 **'호랑이 털옷 입은 사람 출입 금지'**라고 팻말을 붙이는 겁니다. 해커(사자)가 사자 털옷을 입고 오면 그냥 통과합니다(우회 해킹). KISA가 요구하는 화이트리스트 방어는 **'초대장 명단에 있는 사람 100명 말고는 전 우주의 모든 동식물 출입 100% 차단(Default Deny)'**이라는 깐깐하고 독단적인 폐쇄성입니다. 이 폐쇄성만이 수백만 가지의 변종 해킹을 단 1줄의 코드로 막아내는 절대 진리입니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과
| 구분 | 개발자 자율 타이핑에 맡긴 무방비 프로젝트 (AS-IS) | KISA 47개 룰 기반 SAST 강제 컷오프(Cut-off) (TO-BE) | 개선 효과 |
|---|---|---|---|
| 정량 | 공공기관 보안 감리 시 결함 5,000개 발견, 1달 오픈 지연 | 개발 중 IDE 린터 + CI 스캔으로 감리 한 방에 0건 통과 | 공공/금융 인프라 보안 심사(Compliance) 통과 기간 90% 압축 |
| 정량 | 런타임 환경에서 SQLi, XSS로 인한 개인정보 연 5회 유출 | 입력값 검증(17개 룰) 내재화로 런타임 문법 해킹 원천 차단 | OWASP Top 10에 빛나는 기본적 코드 취약점(Bug) 100% 소멸 |
| 정성 | "해킹 안 당하게 잘 짜주세요"라는 뜬구름 잡는 보안 지시 | "CWE-79, 89를 이 프레임워크 필터로 막아라" 명확한 코딩 룰 | 개발자의 시큐어 코딩 역량 상향 평준화(Standardization) |
미래 전망
- LLM(거대 언어 모델)의 KISA 47개 족집게 과외: 지금은 스캐너(SAST)가 "KISA 4번 룰 위반!" 빨간불만 띄운다. 앞으로 코파일럿(Copilot) 같은 AI가 이 에러를 낚아채어, "아! 한국 KISA 가이드 4번에 따르면 이걸
try-with-resources로 감싸야 해. 내가 네 코드를 KISA 공무원들이 환장하는 가장 모범적인 자바 정답 코드 스타일로 1초 만에 다 뜯어고쳐 줄 테니까 엔터만 쳐!" 라며, 에러 탐지를 넘어 기계가 '합법적이고 안전한 정답 코드 덮어쓰기(Auto-Remediation)'를 스스로 수행하는 1타 강사형 자율 코딩 시대가 완성될 것이다. - 클라우드 서버리스(Serverless) 시대의 47항목 무용론?: 이 47개 가이드는 너무 옛날 자바(Java), C언어, 온프레미스 시대에 만들어진 냄새가 짙다. 미래의 서버리스(AWS Lambda) 함수 10줄짜리 코드 환경이나, 인프라 자체가 코드가 되는 IaC(테라폼) 환경에서는 이 낡은 코드 문법 잣대 47개가 전혀 먹히지 않는 사각지대가 뻥뻥 뚫리고 있다. 머지않아 국가 기관도 "코드가 아니라 클라우드 뼈대 설정(IAM, S3)의 허점을 잡아내는 KISA 차세대 클라우드 네이티브 50대 보안 약점"으로 거대한 패러다임 메이저 업데이트를 단행해야만 살아남을 수 있을 것이다.
참고 표준
- KISA 소프트웨어 보안약점 진단가이드: 국정원과 한국인터넷진흥원이 만든, 공공기관 프로젝트의 생사여탈권을 쥔 대한민국 절대 권력의 빨간펜 채점표. 해외의 CWE 리스트를 한국 실정에 맞게 영리하게 압축한 엑기스 도서.
- OWASP Top 10 & CWE Top 25: KISA 47개 항목이 뜬금없이 창조된 게 아니라, 전 세계에서 가장 무서운 놈들만 모아놓은 이 글로벌 족보 두 개를 이리저리 교배(Mapping)하여 만들어낸 지극히 합리적이고 글로벌 스탠다드에 부합하는 K-보안의 자랑.
행정안전부/KISA 소프트웨어 개발 보안 47개 항목은 대한민국 개발자들에게 씌워진 **'가장 합법적이고도 훌륭한 안전띠(Seatbelt)'**다. 코딩을 예술이라고 착각하는 낭만파 개발자들은 문자를 마음대로 합치고 쪼개며 자유를 누리려 하지만, 그 자유의 대가는 5,000만 국민의 개인정보가 중국 다크웹에 1달러에 굴러다니는 참혹한 대재앙이었다. 기술사는 개발자의 얄팍한 창의성보다 기계적이고 획일적인 '규격(Standard)'의 위대함을 믿어야 한다. 코드의 유려함을 뽐내기 전에, 파이프라인 정중앙에 47개의 날카로운 칼날(스캐너)을 꽂아두고, 단 1개의 취약한 함수(strcpy)나 문자열 더하기(+) 꼼수조차 살아남아 배포되지 못하도록, 피도 눈물도 없는 전체주의적 시큐어 코딩 통제 제국을 완성하는 것. 그것만이 1조 원짜리 국가 인프라 시스템의 심장을 해커의 주사기(Injection)로부터 영원토록 굳건하게 지켜내는 진정한 아키텍트의 숭고한 통제술이다.
- 📢 섹션 요약 비유: KISA 47개 가이드 라인은 고속도로 톨게이트의 **'화물차 과적 단속 센서'**와 같습니다. 화물차(소스코드) 기사는 빨리 가려고 짐(위험한 로직)을 마음대로 싣고 고속도로로 진입하려 합니다(배포). 옛날엔 톨게이트 직원(수동 테스트)이 대충 보고 통과시켰다가 다리가 무너졌습니다(해킹 대참사). 지금은 바닥에 47개의 정밀 무게/크기 센서(스캐너 봇)를 깔아두었습니다. 짐이 1kg(특수문자 필터링 누락)이라도 삐져나오면 사이렌이 울리고 톨게이트 바리케이드가 절대 안 열립니다. 기사는 차를 돌려 짐을 똑바로 고쳐 매고(시큐어 코딩) 다시 와야만 비로소 세상(인터넷) 밖으로 나갈 수 있는 무자비한 강제 방어막입니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| CWE (보안 약점 사전) | KISA 47개 항목의 '친아빠'. 미국(MITRE)이 만든 1,000개짜리 대백과사전(CWE) 중에서, 한국 현실에서 젤 잘 터지는 놈들 딱 47개만 뽑아서 번역한 한국형 다이제스트(요약본)가 KISA 가이드다. (이전 장 488번) |
| SAST (정적 분석 도구) | KISA 47개 룰이 적힌 종이를 '뇌'에 이식받아 24시간 잠도 안 자고 눈에 불을 켜고 코드를 스캔해 주는 기계 로봇. 한국 공공기관용 스캐너(파수, 스패로우)는 이 KISA 뇌 장착이 100% 필수 요건이다. (이전 장 491번) |
| 입력 데이터 검증 (Input Validation) | KISA 47개 항목 중 압도적 1번 타자이자 무려 17개 항목을 독식하는 거대 군단. 밖에서 들어오는 모든 문자(Input)를 화이트리스트로 쳐내는 방패. (다음 장 498번) |
| 인젝션 (Injection) | KISA 가이드북 1페이지 1번 항목을 차지하는 만악의 근원. 문자열 합치기(+) 꼼수로 DB를 폭파시키는 해킹이며, 이를 막기 위한 PreparedStatement 정답 코드가 KISA 가이드의 핵심 상징. (이전 장 480번) |
| 시프트 레프트 (Shift-Left) | KISA 가이드의 근본 철학. 다 치고 나서 해커한테 털리지 말고, 애초에 개발자가 키보드를 칠 때 이 47개 정답 코드 모양대로(왼쪽에서) 짜게 습관을 개조하자는 원초적 예방 주사. (이전 장 466번) |
👶 어린이를 위한 3줄 비유 설명
- 동네 목수 아저씨들이 각자 맘대로 집을 지으니까, 비가 오면 지붕이 새고(버그) 바람이 불면 벽이 무너져서(해킹) 마을 사람들이 맨날 다쳤어요.
- 화가 난 촌장님(나라)이 훌륭한 건축가들을 모아서 "1.벽돌엔 본드를 꼭 바른다. 2.기둥은 강철만 쓴다. (총 47가지 규칙)" 이라는 절대 집 짓기 설명서를 벽에 대문짝만하게 붙였어요!
- 이 설명서 47개를 100% 안 지키면 아예 집 짓는 허락 도장을 안 찍어줘서, 반드시 엄청나게 튼튼하고 안전한 집만 만들어지게 강제하는 무서운 대한민국 47개 규칙을 **'KISA 소프트웨어 개발 보안 가이드'**라고 부른답니다!