Software Security
소프트웨어 보안
- 소프트웨어에 생길 수 있는 결함을 보안 측면에서 다루는 기술들에 대해 논의한다.
- Secure Software Engineering은 소프트웨어가 의도된 대로만 동작하는 것을 목표로 한다.
- 소프트웨어의 결함은 개발자 혹은 사용자가 의도했는지에 따라 아래와 같이 두 가지로 분류할 수 있다.
- Unintentional Program Flaws (의도치 않은 프로그램 결함)
- Buffer Overflow (URL)
- Incomplete Mediation (URL)
- Race Condition (URL)
- Intentional Malicious Software (악의적 소프트웨어; 멀웨어) (URL)
- Viruses
- Worms
- Other Breeds of Malware
* Terminology of Program Flaw (프로그램 결함에 관련된 용어들)
Term | Description |
Error | - 프로그래밍 과정에서 개발자의 실수로 발생하는 것을 의미한다. |
Fault | - Error로 인해, 프로그램이 부정확한 State로 전이된 상황을 의미한다. |
Failure | - Fault로 인해, 시스템이 예상하지 못한 State로 전이된 상황을 의미한다. - 프로그램 외부에서 Failure를 관측할 수 있다. |
- 관례적으로, Error, Fault, Failure를 정확히 구분지어 부르기 보다는, 이들을 통칭하여 Flaw로 부르는 경향이 있다.
Cases of Bad Softwares (불량 소프트웨어의 실제 사례)
- 소프트웨어에는 버그가 내재되어 있을 수 밖에 없으며,
버그를 가진 Bad Software는 어디에나 있을 수 있다.
- NASA Mars Lander
- 화성 탐사를 위해 NASA에서 개발된 탐사선이 화성에 추락하면서 165백만 달러의 손실을 야기했다.
- 사소한 Measuring Metric 차이로 인해 발생된 버그가 주된 원인이었다.
- Denver Airport Baggage Handling System
- 수화물 처리 시스템에 버그가 발견되어 공항 개항이 11개월 지연되었고
이로 인해 지연일 당 1백만 달러의 손실이 발생됐다.
- US Marine MV-22 Osprey Advanced Military Aircraft
- 소프트웨어 결함으로 인해 기체가 추락하며 탑승자 4명 전원이 사망했다.
- 소프트웨어는 본질적으로 높은 Complexity를 가질 수 밖에 없고, 버그를 피할 수 없다.
- Mission Critical Software의 경우,
버그 발생 확률을 줄이고 테스트에 용이하도록 LoC(Lines of Codes)를 최소화하여 개발한다.
Miscellaneous Attacks
- Salami Attack
- Victim이 피해를 Detection하기 어렵도록, 아주 작은 피해를 지속적으로 가하는 공격을 의미한다.
(Salami를 아주 얇게 "Slices Off"하여 공격한다.)
- 시스템 내부자에 의해 행해지는 경우가 많다. - Linearization Attack
- 정상적인 Authentication 과정에서 소요되는 시간을 측정하여 인증 키를 유추해내는 공격 방식이다.
- Auth Space보다 훨씬 작은 Case들만을 계산하여 빠르게 Authentication 과정을 우회해낼 수 있다. - Time Bomb
- 일정 시간이 지난 후에 가동되는 Malware이다.
- 1986년 Donald Gene Burleson이 자신이 다니던 회사에 Time Bomb을 설치하여
중요 데이터를 삭제시키도록 했는데, 이로 인해 회사측으로 부터 고소를 당했고,
이로 인해 컴퓨터 범죄에 대한 최초의 재판을 열게 한 케이스가 되었다.
Metamorphic Software
- Software Clone마다 상이한 특성을 갖게 메커니즘으로,
BOBE를 방지하는데 이용할 수 있다.
- Cloning되는 Software의 특성으로 인해
한 번의 성공적인 공격으로 모든 Software Clone들이 붕괴되는 것을 방지하는 메커니즘이다.
* Software Cloning
- Break Once, Break Everywhere (BOBE)
- 복사본이 유통되는 소프트웨어 특성상, 한 Clone이 Break되면 다른 모든 Clone들도 함께 Break되는 성질이 있다.
- 즉, 같은 공격방법으로 모든 Clone들이 공격받을 수 있기 때문에, 보안에 보다 철저해야 한다.
- Metamorphism Level:
- 모든 Instance마다 Functionality를 Distinct하게 개발하는 방법
- 특정한 경우에 대해서만 가능한 방법이다.
- 모든 Instance가 제공하는 Functionality는 동일하게 유지하되, 내부 구현은 모두 다르게 개발하는 방법
- 모든 경우에 대해서 가능한 방법이다.
- 들판의 모든 식물들이 같은 유전자로 구성되어 있다면, 하나의 질병으로 모두가 피해를 보겠지만,
유전적으로 다양하다면 하나의 질병으로 모두가 피해를 보는 일이 줄어드는 것과 같은 이치이다.
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: Computer Security: Principles and Practice 3rd Edition
(William Stallings, Lawrie Brown, Pearson, 2014)
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님