기타내용

시큐어코딩 Secure Coding (1)

k9e4h 2022. 5. 10. 10:35

해킹 시도의 70% 이상이 웹을 통해 시도된다.

 

웹 기반의 공격 유형

1. 외부 공격

- 웹 서버를 통한 웹 서버 해킹 / SQL 인젝션, FIle Upload 등..

- 인터넷을 통한 내부 사용자 PC 해킹 / 악성코드 감염 등..

1-2. 각 계층별 보안 솔루션

네트워크 보안

시스템 보안

웹 어플리케이션 보안

1-3. 해킹 시도 예시

- Url 파라미터 조작 : 체크박스, 셀렉느박스, 링크 Url에 대한 변조를 고려하여 입력값에 대한 검증을 수행해야함

- 보안 번호 입력 횟수 제한 필요 / 사용자 편의성과 trade off 가 있기 때문에 충분히 고려하여 설계해야함

 

보안 약점과 보안 취약점

1. 보안 약점(Weaknesses)

- CWE : 보안 약점 목록 / SANS Top 25

2. 보안 취약점(Vulnerabilities)

- 보안 약점 중 실제 침해 사고의 원인이 되즞 것

- CVE

3. 참고할 수 있는 시큐어 코딩 기준

- 행정안전부 소프트웨어 개발보안가이드 보안약점 / SW 개발 보안 의무제 / 21년 개정 https://www.kisa.or.kr/2060204/form?postSeq=5&lang_type=KO&page=1#fnPostAttachDownload 

- SANS Top 25 

- 등등

4. 행정안전부 개발 보안 가이드 47가지(2019년 기준) / 21년 개정에는 49가지

4-1. 입력데이터 검증 및 표현(17개)

4-2. 보안 기능(16개)

4-3. 시간 및 상태(2개)

4-4. 에러처리(3개)

4-5. 코드 오류(5개)

4-6. 캡슐화(4개)

4-7. API 오용(2개)

 

시큐어코딩 : 구현단계에서 소스코드 등에 존재할 수 있는 잠재적인 보안약점을 제거하는 활동

 

개발 방법론 1) MS-SDL(Microsoft Security Development Lifecycle)

- secure by design, secure by default, secure in development, communications

1. 교육

2. 계획/분석

3. 설계

- 공격 영역 분석, 위협 모델링

4. 구현

- 코딩단계에서 식별해야하는 보안약점을 제거

- 보안 검사 목록, 취약한 함수 제거 등을 검사하기 위해서 정적분석 수행

5. 시험/검증

- 이전 단계에서 설정한 보안과 프라이버시를 지키는지 확인

- 동적/퍼징 테스팅

- 공격 영역/위협 모델 검증( 설계 단계에서의 위협 모델링)

6. 배포/운영

- 사고 대응 계획

- 최종 보안 검토

- 기록 보관

7. 대응

 

개발 방법론 2) Seven Touch Points

위협모델링

위협 : Threat / 

1. 위협모델이란?

- 제품에 존재하는 가장 위험한 위협이 무엇이며, 공격자가 이를 어떻게 이용할 수 있는가를 분석하는 것

- 대응해야할 위협을 파악하고, 어떻게 대응할 수 있는지를 결정하기 위한 체계적인 방법을 제공

2. 위협모델링

- 어플리케이션 분해 : DFD(Data flow Diagram)을 이용하여 주요 구성요소로 분해

- 이러한 구성요소나 자산을 위협 목표라고 부름

3. 위협 분류

MS의 위협 분류 STRIDE(스트라이드)

- 신분 위장(Spoofing identity)

- 데이터 변조(Tampering with data) 

- 부인(Repudiation)

- 정보 유출(Information disclosure)

- 서비스 거부(Denial of service, Dos)

- 권한 상승(Elevation of privilege)

4. 위협트리

- root node : 위협

- leaf : 위협의 원인(위협을 실현하기 위해 필요한 단계)

5. 위험도 계산

MS에서의 위험도 계산 DREAD, 각 항목은 0-10점에서 평균을 냄

- 예상 피해(Damage potential) : 피해가 얼마나 클 것인가?

- 재현 확률(Reproducibility) : 공격이 성공할 확률은?

- 공격 용이도(Exploitability) : 공격을 위해 얼마나 많은 노력과 기술이 필요한가?

- 영향을 받는 사용자(Affected users) : 공격이 이뤄졌을때 얼마나 많은 사람이 영향을 받는가?

- 발견 용이성(Discoverability) : 얼마나 쉽게 취약성이 발견되는가?

6. 위협 대응 기법

6-1. 위협완화

- 공격자가 위협을 통해 이익을 보기 어렵게 만드는 작업

6-2. 위협제거

- 기능 제거

- ex) 관리자 기능은 지정된 IP와 디바이스에서만 접근 가능함

6-3. 위협전가

- 다른 사람이나 사물이 위협을 처리하게한다.

- ex) SQL Injection의 경우 웹 방화벽이 신뢰경계 역할을 하게 함

6-4. 위험수용

- 위협에 대한 조치를 하지 않는 것

7. 대응 기술

 

참고)
1. Public 메소드부터 반환된 Private 배열

https://shanepark.tistory.com/323

 

Java) 컬렉션이나 배열같은 참조 변수의 캡슐화

Intro 행정안전부 소프트웨어 개발보안 가이드 https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do;jsessionid=TjAX2IwVk6hpONx8dKSZ4VTj.node10?bbsId=BBSMSTR_000000000015&nttId=88956 지난..

shanepark.tistory.com

 

웹어플리케이션 보안을 위한 기본 지식

HTTP

http : 하나의 연결에 request와 response를 송수신하고 연결을 종료한다. (stateless protocal)

하지만 우리가 사용하는 웹에서는 연결이 계속해서 이어지는 것 처럼 보임. 그렇게 보이게하기 위해서 session, cookie등의 기술을 사용함

 

request message 구조

- request line, header, blank line, body

 

response message 구조

- status line, header, blank line, body

 

* blank line : header와 body를 구분하기 위한 공백 라인

 

인코딩이란?

정보의 형태나 형식을 표준화, 보안, 처리속도향상, 저장공간 절약등을 위해 다른 형태나 형식으로 변환하는 처리

내용에는 변화가 없으며, 암호화로는 사용이 불가능하며, ASCII, URL, HTML, Base64, MS Script 인코딩등이 있다.

 

클라이언트 사이드에서 URL 인코딩 횟수와 서버사이드에서 디코딩 횟수가 동일해야함

 

Base64 인코딩 : 모든 바이너리 데이터들을 출력가능한 ASCII 문자들을 통해서만 안전하게 나타낼수있게한다.

이메일 첨부파일을 인코딩해서 SMTP를 통해 안전하게 전송하거나 HTTP 승인을 할 경우 사용자 인증서를 인코딩할 때 사용한다.

jdk에서는 decoding method 제공하지 않아서 아파치 등의 라이브러리를 사용해야한다.

 

정규식

정규식 종류 : https://k9e4h.tistory.com/40

- 한 문자를 표현하는 정규식

- 한 문자의 반복 횟수를 지정하는 정규식

- 문자열의 시작과 끝을 지정하는 정규식

- 단어를 표현하기 위한 그룹 지정 정규식

- 순환 반복을 지정하기 위한 그룹 지정 정규식

- 이스케이프 문자 표현 정규식

 

 

반응형