본문 바로가기

해킹&보안/웹 & 앱

취약점 (vulnerability)

취약점이란 

컴퓨터에 어떤 명령을 내리고 싶다면 프로그램이 필요하다. 올바르게 만들어진 프로그램이라면 컴퓨터는 의도한 대로 작동하게된다. 프로그램을 잘못 만들었다면 결과물이 다르게 나오거나 도중에 멈추는 등 의도하지 않은 동작을 하게된다. 

 

이렇게 프로그램이 잘못 작동하는 것을 버그(Bug)라고 한다. 의도한 대로 프로그램을 동작시키고 싶다면 프로그램에 있는 버그를 없애야 한다.

 

버그 중에는 이를 악용해 정보를 유출하거나 데이터를 변경하는 등의 피해를 주는 것이 있다. 이렇게 악용 가능한 버그를 일컬어 '취약점'이라고 한다. 우명한 취약점으로 'SQL 인젝션'과 'XSS' 등이 있다.

 

취약점 진단이란

프로그램 버그는 테스트를 통해 발견하고 수정한다. 취약점도 마찬가지다. 취약점을 반견하기 위한 테스트 방법을 '취약점 진단'이라고 한다.

 

취약점 진단에서는 '취약점' 외에도 '보안 기능 미흡'에 대한 것도 찾아낼 수 있다. 보안 기능 미흡이란 보안 수준을 높일 수 있는 기능이 제대로 구현되지 않거나 잘못 사용된느 것을 뜻한다. 이걸은 버그는 아니지만, 제대로 구현돼 있다면 보안성을 높여 특정 공격을 방어할 수 있다. 예를 들면 HTTPS를 통한 암호화 통신을 사용하는 경우나 보안 기능을 가진 HTTP 헤더 필드를 사용하는 경우가 이에 해당한다.

 

보안 기능을 구현할지의 여부는 웹 응용프로그램을 구축할 때의 보안 요건에 달렸지만,가능하면 많은 기능을 구현하는 것이 좋다.


취약점 진단 대상과 대응

플랫폼의 구성 요소

일반적인 웹사이트는 웹 응용프로그램만으로 만들어지는 것은 아니다. 웹 응용프로그램은 웹사이트를 구성하는 요소 중 하나일 뿐이다.

웹사이트는 웹 응용프로그램 외에도 아래와 같은 요소들이 필요하다.

  • 운영체제(리눅스, 윈도우 등)
  • 웹 서버(Apache HTTP Server, Microsoft IIS 등)
  • 데이터베이스 (오라클DB, MS SQL Server 등)
  • 언어 환경(PHP, Java 등)
  • 응용프로그램 서버 (오라클 WebLogic Server, Apache Tomcat등)
  • 프레임워크(루비온레일스,. 아파치 스트릿츠 등)
  • 라이브버비(AngularJS, CGI.pm 등)

그리고 웹사이트는 웹 서버만으로 동작하는 것도 아니다. 웹사이트 운영과 관련된 서비스애는 다음과 같은 것이 있다.

  • 콘텐츠 변경을 위해 사용할 서비스 (FTP, SSH 등)
  • 웹 서버의 OS나 외의 서버 운영과 관련된 프로그램을 유지보수 하기 위해 사용할 서비스 (Telnet, SSH등)
  • 데이터베이스 (오라클 데이터베이스, 마이크로소프트 SQP Server 등)

플랫폼 취약점 대응

알려진 취약점

  • 취약점이 있는 오래된 버전을 사용하는 경우
  • 기술 지원이 종료돼 더 이상 취약점 수정이 되지 않는 경우

설정 미흡

  • 최신 버전을 ㅅ용하더라도 보안과 관련된 설정을 제대로 하지 못해 취약점이 발생하는 경우

플랫폼에 존재하는 취약점을 없애기 위해서는 아래와 같은 방법을 사용한다.

알려진 취약점을 제거

  • 최신 버전으로 업데이트한다.
  • 지원을 받을 수 있는 다른 제품으로 변경한다.

설정 변경

  • 보안과 관련된 설정을 수정한다.
  • 개발 환경과 서비스 환경의 설정을 일치시킨다.

플랫폼에는 취약점 외에도 보안 기능이 부족해서 문제가 발행할 수도 있다.

안전하지 않은 프로토콜 사용

  • 암호화 통신으로 보호되지 않는 프로토콜을 사용

취약한 암호 사용

  • 길이가 짧은 암호를 사용
  • 특수문자, 숫자 등을 포함해서 사용하지 않음
  • 추측하기 쉬운 암호를 사용

이런 문제는 다음과 같이 대응할 수 있다.

안전한 프로토콜 사용

  • 암호화 통신을 사용해 데이터를 보호할 수 있는 프로토콜을 사용

안전한 암호 사용

  • 긴 문자열 사용
  • 특수문자, 숫자를 포함해 암호를 구성
  • 추측하기 어려운 암호를 사용
  • 다른 암호와 번갈아가며 사용하지 않음

암호 외 별도의 인증 방법 사용

  • SSh 공개 키 인증을 사용

이런 취약점에 대응하기 위해서는 네트워크 시스템이나 플랫폼을 진단할 수 있는 보안 스캐너를 활용해 취약점을 확인하고 그 결과를 통해 대책을 마련하는 것이 좋다.

 

'해킹&보안 > 웹 & 앱' 카테고리의 다른 글

SQL Injection  (0) 2024.08.02
OWASP TOP 10  (0) 2024.07.31
XSS  (0) 2024.07.31
쿠키&세션  (0) 2024.07.30
웹 애플리케이션 모의해킹  (0) 2024.05.15