정보 보안 기초

웹 애플리케이션에서 로그인한 상태의 이용자가 공격자가 준비한 함정 페이지를 열면, 이용자의 브라우저에서 정규 사이트로 이용자가 의도하지 않은 송금이나 설정 변경 요청이 보내지는 취약점이 있다. 이 취약점에 대한 대책으로 적절한 것은?

  1. A중요한 처리의 폼에 세션마다 추측할 수 없는 무작위 값(토큰)을 넣어 두고, 요청을 받았을 때 그 값이 올바른지 확인한다
  2. B비밀번호 입력란의 글자 수 상한을 크게 한다
  3. C웹 서버의 로그를 매일 백업한다
정답과 해설 보기

정답: A. 중요한 처리의 폼에 세션마다 추측할 수 없는 무작위 값(토큰)을 넣어 두고, 요청을 받았을 때 그 값이 올바른지 확인한다

이 취약점은 크로스 사이트 요청 위조(CSRF)라고 합니다. 브라우저는 정규 사이트로 가는 요청에는 어느 페이지에서 보낸 것이든 그 사이트의 Cookie(로그인한 세션 정보)를 자동으로 붙여 보냅니다. 그래서 서버가 Cookie만으로 로그인 중인 이용자의 올바른 조작이라고 판단하고 있으면, 함정 페이지에서 보내게 한 요청도 받아들여 버립니다. 대책의 기본은 정규 폼에만 세션마다 추측할 수 없는 무작위 값(CSRF 토큰)을 넣어 두고, 서버에서 그 값을 확인하는 것입니다. 함정 페이지는 이 값을 알 수 없으므로 올바른 요청을 만들 수 없습니다. 나아가 Cookie의 SameSite 속성으로 다른 사이트에서 보낸 요청에 Cookie를 붙이지 않게 하거나, 송금 같은 중요한 조작 전에 비밀번호를 다시 입력하게 하는 대책도 있습니다. XSS가 사이트에 부정한 스크립트를 삽입하는 것인 데 비해, CSRF는 이용자의 브라우저가 정규로 보이는 요청을 보내게 한다는 점이 다릅니다.

이 분야 연습하기 분야로 돌아가기

정보 보안 기초의 다른 문제

  1. 웹 애플리케이션이 URL 매개변수로 지정된 파일 이름을 공개용 폴더의 이름과 이어 붙여 읽어 들여 표시하고 있다. 파일 이름에 ../를 포함한 값을 지정하면 공개용 폴더 밖에 있는 설정 파일 등을 읽어 낼 수 있게 된다. 이 공격의 이름과 대책의 조합으로 올바른 것은?
  2. 웹 애플리케이션에서 로그인 전과 후에 같은 세션 ID를 계속 사용하면, 공격자가 미리 준비한 세션 ID를 이용자가 사용하게 하고, 이용자가 로그인한 뒤 그 ID로 이용자를 사칭할 우려가 있다. 이 공격에 대한 대책으로 가장 적절한 것은?
  3. DDoS 공격에 대한 설명으로 올바른 것은?
  4. 제로데이 공격에 대한 설명으로 올바른 것은?
  5. 취약점 관리에 사용되는 CVE와 CVSS에 대한 설명의 조합으로 올바른 것은?