안전한 코드 검토 기법
코드 검토에서 데이터 흐름, 신뢰 경계, 위험한 API 및 누락된 제어를 확인해 보안 문제를 식별합니다.
안전한 코드 검토 기법은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
안전한 코드 검토의 목표
안전한 코드 검토는 배포 전에 소스 코드의 보안 취약점을 식별합니다. 기능 중심의 코드 검토와 달리 정확성이나 스타일이 아니라 신뢰 경계, 데이터 흐름, 위험한 API, 누락된 통제 항목 및 보안 논리 오류에 초점을 맞춥니다.
수동 검토와 자동화된 검토
자동화된 SAST 도구(Semgrep, SonarQube, CodeQL)는 알려진 패턴을 빠르게 찾아내지만 비즈니스 논리 결함, 복잡한 다중 구성 요소 취약점 및 문맥에 따라 달라지는 문제는 놓칩니다. 수동 검토는 자동화가 놓치는 문제를 찾아냅니다. 둘 다 필요합니다.
진입점 분석
보안 검토는 모든 진입점을 파악하는 것부터 시작하십시오. HTTP 엔드포인트, 메시지 큐 처리기, 파일 업로드, 예약 작업, 웹훅 및 CLI 인수가 여기에 포함됩니다. 외부 데이터를 받는 각 진입점은 면밀한 검토가 필요한 잠재적 주입 지점입니다.
데이터 흐름 추적
사용자가 제어하는 데이터가 진입점에서 애플리케이션을 거쳐 최종 사용 지점에 도달할 때까지 추적하십시오. 데이터베이스 질의에 도달하나요? 셸 명령에 도달하나요? HTML 템플릿에 도달하나요? API 호출에 도달하나요? 데이터 흐름을 따라가며 각 변환 및 정제 단계를 확인하십시오.
신뢰 경계 분석
보안 결정은 데이터가 신뢰도가 낮은 문맥(HTTP 요청)에서 신뢰도가 높은 문맥(데이터베이스, OS)으로 이동하는 신뢰 경계에서 이루어집니다. 모든 신뢰 경계를 넘는 데이터는 검증하거나 정제하거나 권한을 확인해야 합니다.
위험한 API 확인 목록
다음의 사용 여부를 표시하십시오: eval(), exec(), system(), shell_exec(), innerHTML, dangerouslySetInnerHTML, deserialize(), pickle.loads(), Runtime.exec(), ProcessBuilder, 엔터티 확장이 비활성화되지 않은 XML 구문 분석기, 그리고 상위 수준 API 대신 직접 사용하는 암호화 기본 요소입니다.
인증 및 권한 부여 검토
확인할 사항: 모든 민감한 엔드포인트가 인증으로 보호되나요? 모든 작업에 대해 서버 측에서 권한을 확인하나요? 사용자가 ID 매개 변수를 변경하여 다른 사용자의 데이터에 접근할 수 있나요(IDOR)? 민감한 작업이 CSRF로부터 보호되나요?
오류 처리 검토
예외를 아무 처리 없이 조용히 삼키는 catch 블록을 찾으십시오. 사용자에게 표시되는 오류 메시지에 내부 경로, 스택 추적 또는 데이터베이스 구조가 드러나지 않는지 확인하십시오. 보안 예외(AuthenticationException)가 기록되고 조용히 무시되지 않는지 검증하십시오.
암호화 검토
다음 항목을 표시하십시오: 비밀번호 해싱에 MD5 또는 SHA-1을 사용하는 경우(bcrypt/Argon2 사용), 하드코딩된 대칭 키 또는 IV, ECB 모드 암호화(GCM 또는 HMAC을 사용하는 CBC 사용), 직접 구현한 암호화, 그리고 암호학적으로 안전하지 않은 난수 생성기입니다.
의존성 및 구성 검토
오래된 의존성이 있는지 package.json/pom.xml을 검토하십시오. 운영 환경에서 디버그 모드가 활성화되어 있는지, 자세한 오류 페이지가 표시되는지, 구성 파일에 관리자 자격 증명이 들어 있는지, 보안 헤더(HSTS, CSP, X-Frame-Options)가 누락되었는지 애플리케이션 구성을 확인하십시오.
도구: Semgrep 및 CodeQL
Semgrep 규칙은 의미를 인식하면서 구문 패턴을 일치시킵니다. 코드베이스에 특화된 패턴을 위한 사용자 지정 규칙을 작성하십시오. CodeQL은 코드를 데이터로 취급합니다. AST에 대한 질의를 작성하여 파일과 함수 호출을 가로질러 출처에서 목적지까지 이어지는 데이터 흐름을 찾을 수 있습니다.
지식 확인
IDOR 취약점이란 무엇이며 코드 검토에서 어디에서 찾아야 하나요?
요약
효과적인 안전한 코드 검토는 진입점 파악, 데이터 흐름 추적, 신뢰 경계 분석, 위험한 API 탐지 및 자동화된 SAST 도구를 결합합니다. 기능 검토에서 놓치는 보안 문제, 특히 비즈니스 논리 결함과 미묘한 권한 부여 누락을 찾아냅니다.
자주 묻는 질문
“안전한 코드 검토 기법” 강의는 무료인가요?
네 — “안전한 코드 검토 기법” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“안전한 코드 검토 기법”에서 뭘 배우나요?
코드 검토에서 데이터 흐름, 신뢰 경계, 위험한 API 및 누락된 제어를 확인해 보안 문제를 식별합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“안전한 코드 검토 기법” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.