{{위키데이터 속성 추적}}
{{정보 보안 사이드바}}
'''애플리케이션 보안'''(Application security)은 [[응용 소프트웨어]]의 [[보안 정책]]에서의 결함이나 시스템 개발에서의 눈에 띄지 않는 위약점들 같은, 코드의 생명주기 전체 과정을 아우른다.

애플리케이션은 자신들에게 부여된 자원들만 제어할 수 있다. 결과적으로 애플리케이션 보안을 통해 애플리케이션의 사용자들에 의해 이 자원들의 사용을 결정한다.

== 방법론 ==
patterns & practices ''Improving Web Application Security'' 책에 의하면, 애플리케이션 보안을 위한 원칙에 기반한 접근은 아래와 같다.
* 위협을 인식한다.
* 네트워크, 호스트 그리고 애플리케이션을 보호한다.
* [[소프트웨어 개발 프로세스]]에 종합적인 보호를 넣는다.

== 위협, 공격, 취약점 그리고 대책 ==
patterns & practices ''Improving Web Application Security'' 책에 의하면, 아래의 용어들은 애플리케이션 보안과 관련이 있다.<ref name="patternsbook">[http://msdn2.microsoft.com/en-us/library/ms994920.aspx# Improving Web Application Security: Threats and Countermeasures], published by Microsoft Corporation.</ref>
* '''자산'''. 데이터베이스의 데이터 같은 값의 자원 또는 시스템 자원.
* '''위협'''. 취약점을 공격하여 자산을 습득, 손해, 파괴하는 등의 행위
* '''[[보안 취약점]]'''. 자산에의 비인가 접근을 획득할 수 있는 위협에 사용되는 익스플로잇 같은 약점.
* '''공격''' (또는 익스플로잇). 자산에 위해한 행위.
* '''대책'''. 위협을 완화시키는 위협에 대한 보호 장비.

== 애플리케이션 위협/공격 ==
patterns & practices ''Improving Web Application Security'' 책에 따르면 다음은 애플리케이션에 대한 위협/공격의 분류이다.<ref name="patternsbook"/>
{| class="wikitable cx-highlight" style="margin-bottom: 10px;"

!범주
!위협 / 공격
|-
|''입력 유효성''
| [[버퍼 오버플로]]; [[사이트 간 스크립팅]]; [[SQL 삽입]]; [[정규화]]
|-
|''소프트웨어 부당 변경''
|공격자들은 비인가된 행위를 수행하기 위하여 애플리케이션의 런타임 행위를 수정한다. 이것은 익스플로잇이나 바이너리 패칭, 코드 대체 또는 코드 확장을 통해 가능해진다.
|-
| ''[[인증]]''
|네트워크 도청 ; [[무차별 대입 공격]]; [[사전 공격]]; [[쿠키 리플레이]]
|-
| ''[[허가 (컴퓨터 과학)|인가]]''
|권한 확대; 기밀 자료 폭로; 데이터 부동 변경
|-
| ''[[구성 관리]]''
|관리 인터페이스에 대한 비인가된 접근; 설정 저장소에 대한 비인가된 접근; 텍스트 설정 데이터의 검색; 개개인의 의무의 부족; 과한 권한이 부여된 프로세스와 서비스 계정
|-
|''민감한 정보''
|민감한 코드나 자료에 대한 접근; 네트워크 도청; 코드/데이터 부당 변경
|-
|''세션 관리''
| [[세션 하이재킹]]; [[세션 리플레이]]; [[중간자 공격]]
|-
| ''[[암호학|암호화]]''
|형편없는 키 생성과 키 관리
|-
|''파라미터 조작''
|쿼리 문자열 조작
|-
|''예외 관리''
|정보 공개; [[서비스 거부 공격]]
|-
|''감사와 로깅''
|사용자가 동작의 수행을 거부한다; 공격자가 추적 없이 애플리케이션을 취약점 공격한다

|}

== 모바일 애플리케이션 보안 ==
모바일 장치의 비율은 점차 증가하고 있다. 이러한 모바일 장치의 애플리케이션 보안을 강화하는 여러 가지 전략들이 있다.
* 애플리케이션 화이트 리스팅
* 전송 계층 보안 강화
* 강력한 인증과 인가
* 메모리 쓰기 시 데이터 암호화
* 애플리케이션 샌드박싱
* API 수준 당 애플리케이션 접근 허가
* 사용자 ID와 관련된 프로세스
* 모바일 애플리케이션과 운영체제와의 미리 정의된 상호작용
* 특권이 필요한 접근 시 사용자의 입력 요구
* 적절한 세션 핸들링
2017년 구글은 취약점 보상 프로그램을 확장하여 제3자가 개발하고 구글 플레이 스토어를 통해 이용할 수 있게 했다.<ref>{{웹 인용|url=https://www.theverge.com/2017/10/22/16516670/google-play-security-rewards-program-vulnerabilities-bug-bounty|제목=Google launched a new bug bounty program to root out vulnerabilities in third-party apps on Google Play|성=Liptak|이름=Andrew|날짜=2017-10-22|언어=en|확인날짜=2021-04-03}}</ref> 업계 단체들도 GSM Association과 Open Mobile Terminal Platform(OMTP)을 포함한 권장 사항을 만들었다.<ref>{{웹 인용|url=https://www.omtp.org/Publications/Display.aspx?Id=c4ee46b6-36ae-46ae-95e2-cfb164b758b5|제목=OMTP - Open Mobile Terminal Platform|날짜=2009-03-29|확인날짜=2021-04-03|archive-date=2009-03-29|archive-url=https://web.archive.org/web/20090329231754/https://www.omtp.org/Publications/Display.aspx?Id=c4ee46b6-36ae-46ae-95e2-cfb164b758b5|url-status=}}</ref>

== 애플리케이션을 위한 보안 테스트 ==
보안 테스팅 기법은 취약점이나 보안 결점을 위해 만들어졌다. 취약점들은 애플리케이션을 공격당하게 만든다. 이상적인 보안 테스팅은 전체 [[소프트웨어 개발 프로세스]] (SDLC) 동안에 구현되는 것이다. 하지만 불행하게도 테스팅은 종종 개발의 마지막 부분에서 수행된다.

[[취약점 스캐너]]는 역사적으로 보안 컨설턴트들이 보안 테스트를 자동화하기 위해 사용되어 왔다. 그러나 이것은 실제 소스 코드 검토의 필요성을 대체할 수 없다. 실제 코드 검토는 직접 또는 자동화된 방식으로 달성될 수 있다. 인간의 뇌는 애플리케이션의 모든 경로 확인에 요구되는 데이터 흐름 분석보다는 (특히 프로그램이 큰 경우에), 결과를 거르고 보고하는 것에 더 맞는 편이다.

애플리케이션 취약점 탐지와 관련된 자동화 툴로는 [[모의 해킹]] (Penetration Testing) 툴(종종 [[블랙박스 검사]] 툴로 범주화 된다.)과 [[정적 프로그램 분석]] 툴들이 있다.(종종 [[화이트박스 검사]] 툴로 범주화 된다.)

== 보안 자격증 ==
보안 전문가들이 특정 분야에서 자신의 지식을 입증할 때 쓰이는 많은 자격증들이 있지만, 특히 이것의 유용한 점은 경험 많은 전문가들에게 혼합된 검토를 받는다는 점이다.

== 보안 표준과 규제 ==
* [[사베인스 옥슬리법]] (SOX)

* Health Insurance Portability and Accountability Act (HIPAA)

* IEEE P1074

* ISO/IEC 7064:2003 ''Information technology -- Security techniques -- Check character systems''

* ISO/IEC 9796-2:2002 ''Information technology -- Security techniques -- Digital signature schemes giving message recovery -- Part 2: Integer factorization based mechanisms''
* ISO/IEC 9796-3:2006 ''Information technology -- Security techniques -- Digital signature schemes giving message recovery -- Part 3: Discrete logarithm based mechanisms''

* ISO/IEC 9797-1:1999 ''Information technology -- Security techniques -- Message Authentication Codes (MACs) -- Part 1: Mechanisms using a block cipher''
* ISO/IEC 9797-2:2002 ''Information technology -- Security techniques -- Message Authentication Codes (MACs) -- Part 2: Mechanisms using a dedicated hash-function''

* ISO/IEC 9798-1:1997 ''Information technology -- Security techniques -- Entity authentication -- Part 1: General''
* ISO/IEC 9798-2:1999 ''Information technology -- Security techniques -- Entity authentication -- Part 2: Mechanisms using symmetric encipherment algorithms''
* ISO/IEC 9798-3:1998 ''Information technology -- Security techniques -- Entity authentication -- Part 3: Mechanisms using digital signature techniques''
* ISO/IEC 9798-4:1999 ''Information technology -- Security techniques -- Entity authentication -- Part 4: Mechanisms using a cryptographic check function''
* ISO/IEC 9798-5:2004 ''Information technology -- Security techniques -- Entity authentication -- Part 5: Mechanisms using zero-knowledge techniques''
* ISO/IEC 9798-6:2005 ''Information technology -- Security techniques -- Entity authentication -- Part 6: Mechanisms using manual data transfer''

* ISO/IEC 14888-1:1998 ''Information technology -- Security techniques -- Digital signatures with appendix -- Part 1: General''
* ISO/IEC 14888-2:1999 ''Information technology -- Security techniques -- Digital signatures with appendix -- Part 2: Identity-based mechanisms''
* ISO/IEC 14888-3:2006 ''Information technology -- Security techniques -- Digital signatures with appendix -- Part 3: Discrete logarithm based mechanisms''

* [[ISO/IEC 27001|ISO/IEC 27001:2005]] and ISO/IEC 27001:2013 ''Information technology -- Security techniques -- Information security management systems -- Requirements''

* ISO/IEC 27002:2005 ''Information technology -- Security techniques -- Code of practice for information security management''

* ISO/IEC 24762:2008 ''Information technology -- Security techniques -- Guidelines for information and communications technology disaster recovery services'' - '''now withdrawn'''.

* ISO/IEC 27006:2007 ''Information technology -- Security techniques -- Requirements for bodies providing audit and certification of information security management systems''

* ISO/IEC 27031:2011 ''Information technology -- Security techniques -- Guidelines for ICT readiness for Business Continuity''

* ISO/IEC 27034-1:2011 ''Information technology — Security techniques — Application security -- Part 1: Overview and concepts''
* ISO/IEC TR 24772:2013 ''Information technology — Programming languages — Guidance to avoiding vulnerabilities in programming languages through language selection and use''

* Gramm-Leach-Bliley Act

* PCI Data Security Standarded (PCI DSS)

== 같이 보기 ==
* [[대책]]
* [[데이터 보안]]
* [[데이터베이스 보안]]
* [[HERAS-AF]]
* [[정보 보안]]
* [[웹 애플리케이션]]
* [[웹 애플리케이션 프레임워크]]
* [[XACML]]

== 각주 ==
{{각주|33em}}

== 외부 링크 ==
* [http://www.webappsec.org The Web Application Security Consortium]
* [http://msdn.microsoft.com/en-us/security/cc420639.aspx The Microsoft Security Development Lifecycle (SDL)]
* [http://msdn.microsoft.com/en-gb/library/ms998408.aspx patterns & practices Security Guidance for Applications]
* [http://community.citrix.com/blogs/citrite/sridharg/2008/11/17/Advantages+of+an+integrated+security+solution+for+HTML+and+XML Advantages of an integrated security solution for HTML and XML]{{깨진 링크|url=http://community.citrix.com/blogs/citrite/sridharg/2008/11/17/Advantages+of+an+integrated+security+solution+for+HTML+and+XML }}
* [http://channel9.msdn.com/wiki/default.aspx/SecurityWiki.ApplicationSecurityMethodology patterns & practices Application Security Methodology]
* [http://technet.microsoft.com/en-us/library/cc512651.aspx Understanding the Windows Mobile Security Model], Windows Mobile Security]
* [https://web.archive.org/web/20140309024554/http://www.ixiacom.com/pdfs/library/white_papers/SecurityOverviewWhitePaper.pdf Network Security Testing]

{{전거 통제}}

[[분류:데이터 보안]]
[[분류:모바일 보안]]