나머지 5개의 취약점에 대해서 얘기해보자.
취약하고 오래된 요소라는 다소 직관적인 취약점은 생각보다 쉽게 발견된다.
예를 들어, 한 회사가 워드프레스(WordPress)를 긴 기간 동안 업데이트하지 않았고, WPScan같은 도구를 사용해 워드프레스의 버전이 4.6이라는 것을 알아냈다고 가정하자.
워드프레스 4.6버전이 RCE 취약점에 노출된 것을 알게 될 것이며, Exploit-DB에서 만들어진 exploit 코드를 발견할 수 있다.
이처럼 공격자는 거의 손을 쓰지 않고도 잘 알려진 취약점을 이용해 공격을 할 수 있다.
인증은 너무나도 중요한 애플리케이션의 요소이다. 사용자의 신원을 확인하고 접근 권한을 부여한다.
가장 일반적인 인증 방식은 고유한 아이디와 비밀번호 쌍을 사용하는 것인데, 최근에는 인증 방식이 다양하게 발전하고 있다.
사용자 인증이 정상적으로 진행되면 서버는 사용자의 브라우저에 세션 쿠키를 제공하는데, HTTP(S)를 이용해 통신하므로 서버는 누가 어떤 데이터를 보내는지 알 수 있고, 추적할 수 있다.
이 인증을 공격자가 탈취하면 다른 사용자의 계정에 접근할 수 있다. 인증 메커니즘의 결함을 발견했다는 것인데, 아래와 같은 메커니즘의 결함이 있다.
브루트 포스 공격 : 사용자 이름 혹은 아이디와 비밀번호를 여러 번의 시도를 통해서 추측해내는 공격
약한 크리덴셜 사용 : 강한 비밀번호 정책을 설정해야 한다. 추측하기 쉽거나 흔한 비밀번호를 사용하게 되면 공격자는 쉽게 계정을 탈취할 수 있다.
약한 세션 쿠키 : 세션 쿠키가 예측 가능한 값을 포함하면 공격자가 자신만의 세션 쿠키를 설정해 접근할 수 있다.
브루트포스 공격을 피하기 위해서 여러 번의 시도 이후 계정이 잠기도록 하고 비밀번호를 생성하는 규칙에 많은 정책을 강제할 수 있어야 한다.
모바일 기기 인증이나 생체 인증과 같이 다중 요소 인증을 구현하면 공격자는 계정의 비밀번호와 코드를 획득하기 매우 어려울 것이다.
정보통신 보안 핵심 요소 중 하나인 무결성(Integrity)는 어떤 데이터가 수정되지 않았음 확인할 수 있음을 의미한다. 원치 않거나 악의적인 무단 수정으로부터 데이터를 보호하기 위해 매우 필수적이다. 애플리케이션을 업데이트할 때 데이터 전송 중 수정되지 않았거나 전송 오류로 손상되지 않음을 어떻게 확신할까 ?
이를 해결하기 위해 파일과 해시가 함께 전송되는 것을 목격할 수 있다. MD5, SHA1, SHA256 등 다양한 해시 알고리즘이 존재한다.
WinSCP의 Sourceforge저장소에 가면 각 다운로드가 가능한 파일과 일부 해시가 함께 게시된 것을 확인할 수 있다.

미리 계산해놓은 해시값과 다운로드 후 다시 계산한 해시값을 비교해서 무결성을 확인할 수 있다.