주니어 기초 코딩공부/시큐어코딩 가이드

시큐어 코딩 시작하기

jju_developer 2023. 3. 14. 16:39
728x90

안녕하세요 jju_developer입니다.

오늘부터 secure coding에 대해 알아보도록 하겠습니다.

 

우선 시큐어 코딩이란, 말 그대로 코딩을 할 때 좀 더 보안성을 높이는 것입니다.

공격에 대한 예방 및 대응을 위한 시큐어 코딩(Secure Coding)의 개요

->시큐어 코딩(Secure Coding)의 개념

- 서비스의 안정성과 신뢰성 확보를 위해 IT 시스템 개발 단계에서 주요 보안 취약점을 고려하여 소스코드 레벨에서

사전에 제거하여 안전한 SW를 개발하는 기법

- 즉, 해킹의 기법들을 시도조차 못하게 만드는 코딩 기법입니다.

 

웹기반 공격유형
해커 침투 과정

대중적인 취약점인 SQL injection을 바탕으로 예시를 들자면

 

1) injection의  개념

injection은 웹 애플리케이션에 대한 입력값 검증을 하지 않은 경우,

공격자가 입력 폼 및 파라미터를 조작하여 정보를 열람하거나 데이터를 조작하는 해킹기술입니다.

DB에서 전달되는 SQL Query를 변경시키기 위해 웹 애플리케이션에서 입력받은 파라미터를 변조하여 삽입함으로써

비정상적인 데이터베이스 접근을 시도하거나 재구성하여 원하는 정보를 열람하는 해킹 기술을 말합니다.

 

2) injection의 특징

- DB에 악성 코드를 대량 삽입

- Post나 HTTP header를 이용한 경우는 로그를 찾기 어려움

- 해킹 기법이 간단, 누구나 사용 가능

- 해킹 기법에 비해 효과가 매우 높고 위협적

 

3) SQL injection에 걸리기 쉬운 코딩

request 값을 검증 없이 바로 파라미터로 받을 때 injection이 발생합니다.

이를 해결하기 위해서는 PreparedStatement를 이용하여 예방합니다.

또는 inejction을 유발할 수 있는 따옴표나 세미콜론 등, SQL에 자주 사용되는 것들을

들어올 수 없게 해야 합니다.

 

4) 기타 SQL injection 방지 노력

-불필요한 권한을 삭제, DROP TABLE 같은 공격을 미연에 방지

- Mubatis framework와 같은 framework 사용 시 별도의 보안 코딩 기법 사용

- 웹 페이지에 직접 SQL injection 공격을 시도하여 확인

- 코드에서 replace를 사용할 경우, 자바스크립트 외에도 back-end 쪽에서도 처리


APT (Advanced Persistent Threat) 공격

- 오랜 기간에 걸친 지속적인 해킹 시도를 통해 개인정보와 같은 중요한 데이터를 유출하는 형태의 공격
- 국내에서 벌어진 게임업체, 은행권, 온라인 쇼핑몰 등의 개인정보 유출 피해 사례의 대부분이 APT 공격과 관련됨
- 2016 년 최악의 악성코드로 등극했던 랜섬웨어도 APT 공격의 형태
- 과거에는 서버를 해킹해 대량으로 악성코드를 유포하는 방식이었다면 , 최근에는 특정 기업을 타깃으로 삼고
의사결정권을 가진 특정인의 PC를 탈취해 악성코드를 배포하는 형태로 진화
- 특정 개인 또는 조직을 타깃으로 삼고 , 정보를 파악한 후 미끼를 던져 침투하는 지능적인 방식

 

APT 공격은 크게 4 단계로 구분

=>
타깃에 대해 파악한 정보를 바탕으로 취약점을 찾아내 '침투’하고 ,
내부 시스템에 대한 정보를 '검색’ 한 후,

서버의 제어권을 획득하여 무력화된 시스템상의 데이터를 ‘수집'
이후 공격자의 근거지로 수집한 데이터를 전송해 ‘유츌'


🔒예방 방법🔒
PC에서는 이메일을 통해 침투하는 경우가 많기 때문에 출처가 명확하지 않은 메일을 열람할 때 주의
또한
윈도와 보안시스템은 주기적으로 업데이트해 최신 버전으로 유지하고 ,
백신프로그램을 통해 주기적으로 검사하는 것도 중요

 

 

앞으로 이렇게 다양한 예시들을 통해

보안성을 높이는 코딩 방법에 대해 알아보도록 하겠습니다.

 

이번 강의는 SW coding12년, IT 기획, 사업 13년, 해외 프로젝트 2년 동안 하신 새로운 강사님과

2주 동안 배우려고 합니다.

 

재밌게 배우면서 배운 내용 공유하도록 하겠습니다.

 

화 이 팅!

728x90