CodeAuditAgent
전체 글
  • 보안
  • OWASP
  • 체크리스트

2026년 코드 리뷰에서 꼭 찾아야 할 취약점 Top 10

모든 코드 리뷰에서 확인해야 할 10가지 취약점 유형을 OWASP Top 10 및 CWE와 연결하고, 각각의 수정 방법을 한 줄로 정리한 실전 체크리스트입니다.

· 9분 분량 · Lina Source LLC

대부분의 보안 침해는 여전히 잘 알려진 몇 가지 버그 유형에서 시작됩니다. 프레임워크는 더 안전해졌지만 실수는 자리를 옮겼을 뿐입니다. API 핸들러, 백그라운드 작업, 인프라 코드, 그리고 서비스 사이를 잇는 글루 코드로 말이죠. 아래는 저희가 감사할 때마다 가장 먼저 확인하는 목록이며, CodeAuditAgent 리포트에 표시되는 CWE도 함께 적었습니다.

1. 접근 제어 실패 (CWE-639, CWE-862)

심각한 발견 사항 중 압도적으로 흔한 유형입니다. 엔드포인트가 ID로 레코드를 불러오면서 그 레코드가 호출자의 것인지 확인하지 않는 경우죠. 인증은 상대가 누구인지 알려줄 뿐이며, 인가는 모든 쿼리에서 빠짐없이 이루어져야 합니다.

// Scope every lookup to the owner
const invoice = await db.invoice.findFirst({
  where: { id, userId: session.user.id },
});

2. 인젝션 (CWE-89, CWE-78)

문자열로 조합한 SQL, 셸 명령어, 템플릿 표현식은 여전히 곳곳에 있으며, 대개 누군가 성능 때문에 직접 작성한 쿼리 하나에 숨어 있습니다. 쿼리는 파라미터화하고 인자는 배열로 전달하세요. 입력값을 절대 문자열로 이어 붙이지 마세요.

3. 하드코딩된 시크릿 (CWE-798)

저장소에 커밋된 API 키, 알고 보니 실제로 유효했던 테스트 토큰, 설정 파일 속 개인 키. 이런 값은 환경 변수나 시크릿 매니저로 옮기고, 한 번이라도 커밋된 적이 있다면 모두 교체하세요. 해당 줄을 지워도 히스토리는 지워지지 않습니다.

4. 서버 측 요청 위조 (CWE-918)

웹훅, 링크 미리보기, 가져오기처럼 사용자가 제공한 URL을 요청하는 기능은 내부 네트워크나 클라우드 메타데이터 엔드포인트를 향하도록 악용될 수 있습니다. 호스트를 허용 목록으로 제한하고, 도메인을 해석한 IP를 검사하며, 사설 IP 대역을 차단하세요.

5. 크로스 사이트 스크립팅 (CWE-79)

최신 프레임워크는 기본적으로 이스케이프를 처리하기 때문에, 이제 XSS는 이스케이프를 우회하는 지점에 숨어 있습니다. 원시 HTML을 넣는 props, 마크다운 렌더러, href 속성에 들어가는 URL 등이죠. HTML은 검증된 라이브러리로 새니타이즈하고 javascript: URL은 거부하세요.

6. 안전하지 않은 역직렬화와 eval (CWE-502, CWE-95)

Pickle, YAML load, Java 객체 스트림, 동적 eval은 데이터를 코드로 바꿔 버립니다. 대신 안전한 로더와 스키마로 검증된 JSON을 사용하세요.

7. 취약한 암호화 (CWE-327, CWE-330)

비밀번호에 MD5나 SHA-1 사용, 고정된 IV, 토큰 생성에 Math.random() 사용. 비밀번호에는 이를 위해 설계된 해시(Argon2id, bcrypt, scrypt)를, 난수에는 암호학적으로 안전한 난수 소스를 사용하세요.

8. 오픈 리다이렉트 (CWE-601)

아무 URL이나 받아들이는 next 또는 returnTo 파라미터는 여러분의 도메인을 피싱을 위한 신뢰받는 발판으로 만듭니다. 동일 출처의 상대 경로만 허용하세요.

9. 속도 제한 누락 (CWE-307, CWE-770)

로그인, 비밀번호 재설정, OTP, 그리고 비용이 발생하는 모든 엔드포인트(이메일, SMS, AI 호출)에는 사용자별, IP별 제한이 필요합니다. 제한이 없으면 무차별 대입 공격과 요금 폭탄 공격이 너무나 쉬워집니다.

10. 보안 설정 오류 (CWE-16)

자격 증명을 허용하는 와일드카드 CORS, 프로덕션의 디버그 모드, 지나치게 자세한 스택 트레이스, 과도하게 관대한 버킷 정책. 이런 문제는 설정 파일에 있기 때문에 코드 리뷰에서 버그처럼 보이지 않는 경우가 많습니다. 바로 그렇기 때문에 코드처럼 리뷰해야 합니다.

이 목록을 활용하는 방법

  • 1~3번 유형은 모든 풀 리퀘스트에서 확인하세요. 영향이 가장 크면서 가장 놓치기 쉬운 항목입니다.
  • 인프라와 CI 설정도 리뷰 대상 코드로 취급하세요.
  • 모든 발견 사항에 CWE를 기록해 수정 여부를 추적하고 추세를 측정할 수 있게 하세요.