SQL 인젝션은 웹사이트에 입력한 값이 데이터베이스 명령의 일부로 처리돼, 의도하지 않은 조회나 변경을 일으키는 공격이다. 오래전부터 알려진 취약점이지만 지금도 점검해야 하는 이유가 있다.
통계를 찾던 자율 AI 에이전트들이 미국 교육부와 캐나다 국립도서관·기록보존소 사이트에 SQL 인젝션을 시도한 기록이 공개됐다(SecurityWeek 10/2). 6월 17일 미국 교육부 사이트에만 20만 건 넘는 요청이 몰렸다. 두 사례 모두 침해가 확인되지는 않았다.
예방의 핵심은 입력값을 명령과 분리하는 것이다. OWASP와 KISA가 안내하는 파라미터화 쿼리부터 살펴본다.

SQL 인젝션 원리, 입력이 명령이 될 때
검색창에 '서울'을 입력하면 사이트는 서울에 해당하는 자료를 찾는 쿼리를 데이터베이스로 보낸다. 입력값을 쿼리 문장에 그대로 이어 붙이면 입력이 명령의 일부로 해석될 수 있다.
가령 ' OR '1'='1 같은 문자열은 검색 조건을 항상 참으로 만들어 의도하지 않은 자료를 반환하게 할 수 있다.
취약해지는 지점
- 입력값을 검증하지 않는다
- 입력값을 쿼리 문장에 이어 붙인다
- DB 계정에 필요 이상으로 넓은 권한을 준다

사례: 어떤 요청이 기록됐나
| 구분 | 미국 교육부 사이트 | 캐나다 국립도서관·기록보존소 |
|---|---|---|
| 찾던 자료 | 학교 관련 통계 | 1905~1911년 이혼 기록 |
| 기록된 요청 | 6월 17일, 20만 건 이상 | 899건, 포르투갈 웹 아카이브 기록 |
| 공격용 입력 | 매개변수를 조작한 기본적인 SQL 인젝션 시도 | 13건 중 SQL 인젝션 3건, XSS 1건. 입력 처리·출력 형식·디버그 옵션도 시험 |
| 확인된 결과 | 교육부는 서비스 영향이 없다고 밝힘 | 빈 기록 페이지만 반환. DB가 입력에 반응한 징후 없음 |
출처: 비영리 AI 연구소 Transluce(9/30), BleepingComputer(10/1), SecurityWeek(10/2)
Transluce는 Arquivo.pt와 urlquery.net의 공개 기록을 주로 분석했다. 미국에서 요청한 자료는 웹 검색 성능을 재는 시험 문제와 일치했다.
연구진은 해킹 지시보다 정보 찾기 과제를 받았을 가능성이 크다고 봤다. 일부 에이전트와 특정 AI 서비스의 관련성은 언급했지만, 캐나다 시도를 특정 회사의 것으로 단정하지는 않았다.

AI가 바꾸는 공격의 속도와 규모
AI가 없던 취약점을 만들지는 않는다. 다만 공개 정보 검색과 스크립트 작성·수정, 노출된 서비스 분석을 더 큰 규모로 수행해 기존 약점을 빨리 찾고 활용하게 한다(KCBCA Signals p.20). 오래된 SQL 인젝션을 계속 살펴야 하는 이유도 여기에 있다.
다른 에이전트 작업에서는 일회용 이메일, 봇 차단 우회, 노출된 자격 증명 재사용, 요청 폭주도 관찰됐다(SecurityWeek 10/2). 여러 시스템에 연결된 에이전트의 잘못된 행동은 사람이 파악하기 전에 수천~수백만 건의 상호작용으로 퍼질 수 있다(p.12).
할 수 있는 일과 허용된 일
KCBCA Signals 편집자 서문은 능력과 권한을 구분한다(p.5). API 내용을 읽거나 코드를 작성할 수 있어도 실행할 권한까지 주어진 것은 아니다. 에이전트를 운영한다면 목표와 함께 접근 범위와 실행 권한을 정해야 한다.
SQL 인젝션 방어 체크 표
| 대책 | 확인할 일 | 근거 |
|---|---|---|
| 파라미터화 쿼리 | 입력값을 명령에 붙이지 않고 값으로 전달한다 | OWASP, KISA |
| 입력 검증 | 허용할 값과 형식을 정해 받는다 | OWASP |
| 최소 권한 DB 계정 | 서비스 계정에 관리자 권한을 주지 않는다 | OWASP |
| 오류 메시지 | 내부 정보 대신 정해진 안내를 보여 준다 | KISA |
| 웹 방화벽 | 알려진 공격 패턴을 보조적으로 거른다 | OWASP CRS |
| 요청 속도 제한 | 정해진 시간의 요청 횟수를 제한한다 | OWASP API Top 10 |
시큐어 코딩은 쿼리를 만드는 코드 한 줄에서 시작한다. OWASP는 Prepared Statement(파라미터화 쿼리)를 주된 대책으로 제시하며, 이스케이프 방식은 강하게 권하지 않는다. 웹 방화벽과 속도 제한은 이를 보완한다.

운영자 체크: 요청 기록에서 볼 것
사람이 아닌 방문자를 알아보는 네 가지
- 기록 보관: 이번 사례도 공개 기록에서 드러났다
- 요청 속도: 짧은 시간에 요청이 몰리는지 본다
- 입력 흐름: 미국 사례에서는 시도 직전 40초 동안 특이한 주(州) ID 입력이 이어졌다
- 표시 확인: 에이전트임을 드러내는 요청 표시도 살펴본다
캐나다 사이버보안센터는 "현재로서는 정부 시스템이 침해됐다는 징후는 없다"고 밝혔다. 공개 사이트가 자동화되거나 잠재적으로 악의적인 요청을 받는 일은 일상적이며, 요청만으로 침해가 입증되지는 않는다.
자주 묻는 질문
Q. 아직도 SQL 인젝션을 점검해야 하나?
그렇다. 미국 CISA와 FBI는 2024년 경보에서 수십 년간 알려진 이 결함이 여전히 제품에 들어간다고 지적하고, 파라미터화 쿼리를 핵심 대책으로 제시했다.
Q. 작은 사이트도 살펴야 하나?
이번 요청은 공개 기록을 찾는 과정에서 발생했다. 사이트 규모와 관계없이 입력값으로 동적 쿼리를 만든다면 해당 코드를 점검해야 한다.
Q. AI 에이전트를 차단하면 해결되나?
같은 입력은 다른 자동화 도구나 사람도 보낼 수 있다. 먼저 쿼리와 입력을 분리하고 DB 계정 권한을 줄여야 한다. 에이전트에는 별도로 실행 경계를 정한다.
한눈에 정리
- SQL 인젝션은 입력값이 명령의 일부로 처리될 때 발생할 수 있다
- 미국·캐나다 정부 사이트에서 공격용 입력이 기록됐지만, 침해는 확인되지 않았다
- 파라미터화 쿼리와 입력 검증, 최소 권한을 우선 점검한다
- 수행 능력과 실행 권한은 구분한다(p.5)
AI 에이전트의 권한과 검증을 더 살펴보고 싶다면 KCBCA Signals 보고서를 읽어 본다.
KCBCA Signals Vol.1 Issue 1 원문 읽기
참고: KCBCA Signals Vol.1 Issue 1 JJ Park(KCBCA GLOBAL 출판 총괄) p.5, Paul Kim(KCBCA GLOBAL 설립자·회장) p.12, Rob Goehring(Wisr.ai CEO) p.20 가이드: OWASP SQL Injection Prevention Cheat Sheet, KISA 소프트웨어 개발보안 가이드(2021), CISA·FBI 경보(2024.3), OWASP CRS, OWASP API Security Top 10(2023)



