크로스 사이트 요청 위조란?
크로스 사이트 요청 위조 공격(CSRF: cross site request forgery attack)으로 인해 대규모 사용자 정보가 유출되었다는 뉴스를 본 적이 있을 것입니다. 그렇다면 크로스 사이트 요청 위조란 어떤 공격 방식일까요? 이 글에서 크로스 사이트 요청 위조의 의미와 예시를 확인해 보세요.
크로스 사이트 요청 위조의 의미
뉴스에서 CSRF 토큰, CSRF 에러라는 단어를 본 적이 있으신가요? 크로스 사이트 요청 위조(CSRF)는 인증된 사용자가 웹 애플리케이션에 특정 요청을 보내도록 유도하는 공격 행위를 말합니다. 크로스 사이트 요청 위조는 생성된 요청이 사용자의 동의를 받았는지 확인할 수 없는 웹 애플리케이션의 CSRF 취약점을 이용합니다. 공격자의 요청이 사용자의 요청인 것처럼 속이는 공격 방식이기에 크로스 사이트 요청 위조라는 명칭이 붙었습니다.
크로스 사이트 요청 위조는 사용자가 인증한 세션에서 웹 애플리케이션이 정상적인 요청과 비정상적인 요청을 구분하지 못하는 점을 악용하는 공격 방식으로, 웹 애플리케이션이 사용자의 요청이 실제 사용자가 전송한 것인지 확인하지 않는 경우에 자주 발생합니다.
CSRF 공격 방식
크로스 사이트 요청 위조는 데이터의 값을 변경하는 요청을 대상으로 합니다. 이러한 요청에는 제품 구입, 계정 설정, 기록 삭제, 비밀번호 변경, 문자 전송 등이 있습니다. 공격자는 자금 송금이나 로그인 정보 변경 등 원하는 요청을 위조한 후, 이메일이나 웹사이트에 요청이 삽입된 하이퍼링크를 심어 놓습니다. 사용자가 해당 하이퍼링크를 클릭하면 요청이 자동으로 전송됩니다.
크로스 사이트 요청 위조는 사용자 몰래 자금을 전송하거나 이메일 주소와 비밀번호를 변경하는 등의 무단 행위에 이용되며, 관리자 계정이 크로스 사이트 요청 위조 공격에 당하는 경우에는 공격자가 전체 서버 접근 권한을 탈취해 웹 애플리케이션과 API 등 서비스 전체를 마음대로 통제하게 될 위험이 있습니다.
크로스 사이트 요청 위조 공격은 사용자의 정보 탈취보다는 특정 작업을 무단으로 진행하기 위한 목적으로 이루어지는 경우가 많습니다. 하지만 그렇다고 크로스 사이트 요청 위조 공격으로 사용자의 정보가 유출되지 않는다는 의미는 아닙니다. 크로스 사이트 요청 위조로 인해 권한을 탈취당하게 되면 개인 정보가 그대로 노출되는 것은 다른 사이버 공격과 마찬가지이기 때문입니다.
XSS와 CSRF의 차이
크로스 사이트 스크립팅(XSS)과 크로스 사이트 요청 위조는 사용자의 브라우저를 대상으로 한다는 공통점이 있습니다. 하지만 크로스 사이트 요청 위조는 사용자의 인증된 세션을 악용하는 공격 방식인 반면, 크로스 사이트 스크립팅은 인증된 세션 없이도 공격을 진행할 수 있다는 차이점이 있습니다.
크로스 사이트 스크립팅은 사용자가 특정 사이트를 신뢰한다는 사실을 이용한 공격 방식이지만, 크로스 사이트 요청 위조는 웹 애플리케이션이 인증된 사용자의 요청을 신뢰한다는 사실을 이용한 공격 방식입니다. 또한 크로스 사이트 스크립팅은 사용자에서 스크립트가 실행되지만 크로스 사이트 요청 위조는 서버에서 스크립트가 실행된다는 차이점이 있습니다.
마지막으로 크로스 사이트 스크립팅과 크로스 사이트 요청 위조의 목적에도 차이가 있습니다. 크로스 사이트 스크립팅은 사용자 PC에서 스크립트를 실행해 사용자의 정보를 탈취하는 것을 목적으로 하는 반면, 크로스 사이트 요청 위조는 요청을 위조함으로써 사용자 몰래 송금과 제품 구입 등 특정 행위를 수행하는 것을 목적으로 합니다.
CSRF의 예시
크로스 사이트 요청 위조는 웹 브라우저를 속여 사용자가 로그인한 애플리케이션에서 무단으로 특정 작업을 진행하는 방식으로 이루어집니다. 예시를 위해 공격자가 사용자의 자금을 탈취하려는 상황을 생각해 보겠습니다. 이때 크로스 사이트 요청 위조 공격은 다음 단계에 따라 진행됩니다.
- 공격자가 특정 은행의 계좌에서 공격자의 계좌로 천만 원을 송금하라는 요청을 위조합니다.
- 위조한 요청은 하이퍼링크에 삽입해 이메일로 전송하거나 웹사이트 자체에 삽입합니다.
- 사용자가 공격자가 생성한 이메일 하이퍼링크나 웹사이트 링크를 클릭하면 은행에 천만 원을 송금하라는 요청이 전송됩니다.
- 요청을 받은 은행 서버는 사용자의 요청대로 송금을 진행합니다.
크로스 사이트 요청 위조가 실제로 발생한 예시로는 2008년 한국에서 1,863만 명의 회원을 보유한 인터넷 쇼핑 업체의 해킹 사례가 있습니다. 이때 해커는 공격 코드가 포함된 이메일을 대량으로 발송하는 크로스 사이트 요청 위조 수법으로 해당 업체의 모든 회원 정보를 탈취한 것으로 알려졌습니다.
CSRF 방지 방법
크로스 사이트 요청 위조 공격에 당하게 되면 막대한 피해가 발생할 수 있습니다. 이 때문에 웹 애플리케이션들은 크로스 사이트 요청 위조 공격을 방지하기 위해 CSRF 토큰을 통해 요청이 사용자가 전송한 것이 맞는지 확인하거나 재인증을 요구하는 등의 조치를 취하고 있습니다.
하지만 크로스 사이트 요청 위조 공격을 방지하기 위해서는 개인 사용자도 스스로 보안을 확보하는 것이 중요합니다. 크로스 사이트 요청 위조 공격을 방지하는 데 도움이 되는 방법은 다음과 같습니다.
사용하지 않는 웹 애플리케이션 로그아웃하기
먼저 크로스 사이트 요청 위조를 방지하려면 사용하지 않는 웹 애플리케이션은 로그아웃하는 것이 좋습니다. 크로스 사이트 요청 위조는 사용자의 인증된 세션을 악용하는 공격 방식이기 때문에 로그아웃을 통해 공격 위협을 크게 낮출 수 있습니다.
특히 은행과 같이 크로스 사이트 요청 위조 공격의 위험이 높은 서비스의 경우 자리를 비울 때는 반드시 로그아웃하는 것이 좋습니다. 또한 가능하다면 자동 로그아웃 기능을 활용하고 2단계 인증을 추가해 송금과 같이 중요한 요청은 반드시 직접 인증을 거치도록 설정해 놓는 것이 좋습니다.
로그인 정보 안전하게 보관하기
로그인 정보가 유출되는 경우에는 자신도 모르는 사이에 웹사이트에 로그인되어 크로스 사이트 요청 위조 공격을 받게 될 수 있습니다. 따라서 공격을 방지하기 위해 로그인 정보를 안전하게 보관하는 것이 중요합니다.
또한 여러 사이트에서 동일한 비밀번호를 사용하거나, 유추하기 쉬운 비밀번호를 사용하면 크로스 사이트 요청 위조 공격이 발생할 확률이 높으므로 주의해야 합니다.
브라우저에 비밀번호 저장하지 않기
크로스 사이트 요청 위조 공격은 사용자의 브라우저를 대상으로 합니다. 따라서 브라우저에 비밀번호를 저장하는 경우 비밀번호가 유출되어 크로스 사이트 요청 위조 공격으로 피해를 입게 될 수 있습니다.
따라서 불편하더라도 브라우저에는 비밀번호를 절대 저장하지 않는 것을 추천하며, 필요하다면 NordPass 등 신뢰성이 입증된 비밀번호 관리 소프트웨어로 보안성 높은 비밀번호를 생성하고 안전하게 보관하는 것이 좋습니다.
여러 웹사이트 동시에 사용하지 않기
여러 웹사이트를 동시에 사용하는 경우 현재 화면에 표시되지 않는 웹사이트에서 크로스 사이트 요청 위조 공격이 발생하고 있다는 사실을 알아차리지 못할 수 있습니다. 따라서 필요한 웹사이트를 하나씩 사용하는 것이 좋으며, 웹사이트 사용이 끝난 후에는 로그아웃 후 다른 웹사이트를 사용하는 것이 좋습니다.
VPN 사용하기
크로스 사이트 요청 위조 공격을 방지하는 마지막 방법은 VPN을 사용하는 것입니다. VPN 사용이 크로스 사이트 요청 위조 공격을 완벽하게 방지할 수 있는 것은 아닙니다. 하지만 VPN을 사용하면 사용자 아이피를 가상 아이피로 대체해 보안을 강화할 수 있으며, 멀웨어와 바이러스를 방지해 크로스 사이트 요청 위조 공격의 대상이 될 가능성을 낮출 수 있습니다.
또한 NordVPN의 바이러스 및 위협 방지Pro 기능과 같이 프리미엄 VPN의 고급 보안 기능을 이용하면 크로스 사이트 요청 위조 공격뿐만 아니라 다양한 종류의 사이버 공격을 방지하고 안전하게 인터넷을 이용하는 데 도움이 됩니다.