시스템 보안위협·악성코드·SQL 인젝션
관리적·기술적 위협과 악성코드 유형을 구분하고 SQL 인젝션의 원인·영향·기본 대응을 이해합니다.
1. 기본 용어를 구분한다
| 용어 | 의미 |
|---|---|
| 위협 | 자산에 해를 줄 수 있는 상황·사건·주체 |
| 취약점 | 위협이 이용할 수 있는 약점 |
| 오설정 | 목적과 정책에 맞지 않아 위험을 만드는 설정 |
| 공격 | 통제를 우회하거나 보안정책을 위반하려는 의도적 행위 |
| 이벤트 | 시스템에서 관찰된 상태 변화나 기록 |
| 사고 | 보안정책 위반 또는 기밀성·무결성·가용성 훼손이 발생한 사건 |
| 위험 | 발생 가능성과 영향의 결합 |
로그인 성공이나 파일 변경 같은 이벤트 하나만으로 사고를 확정하지 않는다. 반대로 로그가 없다고 사고가 없다고 단정해서도 안 된다.
2. 관리적 위협과 기술적 위협
관리적 보안위협
- 보안설정 오류
- 과도한 계정·파일·서비스 권한
- 휴면·퇴직·공용 계정 방치
- 역할 분리와 승인 절차 부족
- 내부자의 고의 또는 부주의
- 로그·백업·자산 관리 미흡
기술적 보안위협
- 소프트웨어 취약점 악용
- 비인가 프로세스와 악성코드 실행
- 통신 도청과 인증정보 탈취
- 파일·설정·데이터 변조
- 비인가 접근과 권한 확대
- 자원 고갈과 서비스 거부
실제 사고에서는 두 범주가 함께 나타나는 경우가 많다. 예를 들어 관리자 권한으로 실행되는 서비스의 파일 권한이 잘못돼 있고 공격자가 이를 변조했다면, 관리적 약점과 기술적 행위가 연결된 것이다.
3. 오설정과 과도한 권한
오설정은 기능이 고장 난 상태가 아니라 정상 기능이 위험한 범위로 열려 있는 상태일 수 있다.
| 오설정 예 | 가능한 결과 |
|---|---|
| 관리자 화면 인터넷 공개 | 계정 공격·비인가 설정 변경 |
| 모든 사용자에게 공유폴더 쓰기·삭제 허용 | 변조·삭제·악성 파일 배치 |
| 서비스가 관리자 권한으로 실행 | 침해 후 영향 범위 확대 |
| 감사·로그 전송 비활성화 | 탐지와 원인 추적 실패 |
| 운영 계정이 백업도 삭제 가능 | 원본과 복구본 동시 손상 |
최소권한은 계정 이름이 아니라 실제 권한을 기준으로 판단한다. 일반 계정도 관리자 그룹에 속하거나 높은 권한의 작업 파일을 수정할 수 있다면 위험하다.
4. 내부자 위협
내부자는 조직의 시스템·정보·시설에 승인된 접근을 가진 주체다. 내부자 위협은 악의적 직원뿐 아니라 부주의한 사용자와 협력사도 포함할 수 있다.
- 고의적 반출·변조·삭제
- 잘못된 수신자에게 중요정보 전송
- 퇴직 전 대량 자료 복사
- 승인 없이 관리자 기능 사용
- 비밀번호·장치·문서를 부주의하게 노출
외부 공격자가 탈취한 내부 계정을 사용한 경우에는 계정 자체가 내부 계정이라는 이유만으로 내부자라고 단정하지 않는다. 실제 행위 주체와 계정 침해 여부를 조사한다.
5. 보안 영향은 CIA와 연결한다
| 영향 | 의미 | 예시 |
|---|---|---|
| 기밀성 훼손 | 허가되지 않은 정보 열람·전송 | 도청, DB 유출, 백업 반출 |
| 무결성 훼손 | 데이터·설정·코드가 비인가 변경 | 거래정보 변조, 실행파일 교체 |
| 가용성 훼손 | 필요한 서비스·데이터를 사용할 수 없음 | 자원 고갈, 삭제, 암호화, 장애 |
하나의 공격이 여러 속성을 동시에 훼손할 수 있다. 랜섬웨어가 데이터를 훔친 뒤 암호화했다면 기밀성과 가용성이 함께 영향을 받는다.
6. 악성코드의 기본 구분
악성코드는 시스템에서 비인가 행위를 수행하거나 피해를 주도록 설계된 코드다.
| 종류 | 핵심 특징 |
|---|---|
| 바이러스 | 다른 파일·프로그램에 붙어 실행·전파 |
| 웜 | 독립 실행하며 네트워크 등으로 자기 전파 가능 |
| 트로이목마 | 정상·유용한 프로그램처럼 위장해 악성 기능 수행 |
| 스파이웨어 | 사용자·시스템 정보를 몰래 수집 |
| 랜섬웨어 | 데이터·시스템 사용을 방해하고 금전을 요구 |
| 루트킷 | 악성 행위와 존재를 숨기거나 높은 권한을 유지 |
| 백도어 | 정상 인증·접근통제를 우회하는 은밀한 접근 경로 |
| 봇 | 외부 명령을 받아 자동화된 악성 행위 수행 |
| 논리폭탄 | 특정 조건이나 시점에 악성 기능 실행 |
하나의 악성코드에 여러 특성이 동시에 적용될 수 있다. 예를 들어 트로이목마로 유입되어 백도어를 만들고 스파이웨어 기능을 수행할 수 있다.
7. SQL Injection의 정의와 시스템 영향
SQL Injection(SQL 인젝션)은 외부 입력이 SQL 문의 데이터가 아니라 명령 구조의 일부로 해석되도록 만들어 의도하지 않은 DB 질의를 수행하게 하는 공격기법이다.
성립 조건은 대체로 다음과 같다.
- 응용프로그램이 사용자 입력을 SQL 문에 안전하지 않게 결합한다.
- DB가 변형된 SQL 문을 실행한다.
- DB 계정이 해당 조회·변경 작업을 수행할 권한을 가진다.
가능한 영향은 다음과 같다.
- 로그인·인증 우회
- 중요 데이터 조회와 유출
- 데이터 삽입·수정·삭제
- DB 계정 권한에 따른 추가 시스템 영향
- 오류 메시지를 통한 DB 구조 정보 노출
대표적인 근본 대응은 Prepared Statement 또는 매개변수화 질의를 사용해 SQL 구조와 입력 데이터를 분리하는 것이다. 입력 검증, 최소권한 DB 계정, 오류정보 제한, 감사 로그도 함께 적용한다.
SQL Injection의 상세 취약 코드와 우회 문자열은 애플리케이션 보안 영역에서 더 깊게 다룬다. 시스템 보안에서는 정의·성립 조건·시스템 영향과 기본 대응을 구분할 수 있으면 된다.
개념 확인 문제
문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.
01바이러스와 웜의 대표 차이는?
바이러스는 다른 파일·프로그램에 붙어 전파되는 형태이고, 웜은 독립 실행하며 스스로 전파할 수 있다. 하나의 악성코드가 여러 기능을 함께 가질 수도 있다.
02SQL 인젝션에 매개변수화 질의를 사용하는 이유는?
SQL 명령 구조와 외부 입력 데이터를 분리하기 위해서다. 입력을 문자열로 이어 붙여 명령으로 해석하게 만드는 원인을 줄이고, DB 최소권한도 함께 적용한다.