MFA는 로그인에서 끝난다. 계정 탈취는 거기서 시작된다

로그인 절차에는 하드웨어 키와 생체인증이 붙었다. 그런데 그 뒤의 모든 것은 쿠키 한 장 위에서 돌아간다. 지금 탈취가 일어나는 곳은 비밀번호가 아니라 세션이다.

지난 십 년간 대부분의 팀은 해야 할 일을 했다. 로그인을 단단하게 만든 것이다. 비밀번호에는 2차 인증이 붙었고, 2차 인증은 피싱 저항성을 얻었고, 평균적인 SaaS의 정문은 초대받지 않고 통과하기 정말 어려운 곳이 됐다.

그래서 공격자들은 정문으로 들어가기를 그만뒀다. 대신 정문이 나눠주는 것을 훔친다.

토큰이 곧 계정이다

로그인이 성공하면 세션이 발급된다. 쿠키든 토큰이든, “이 요청은 인증을 마친 본인에게서 왔다”를 뜻하는 문자열 하나다. 그 순간부터 하드웨어 키도, 생체인증 프롬프트도, 공들여 조정한 MFA 정책도 무대에서 내려간다. 그것들이 참조된 건 한 번뿐이다. 세션은 모든 요청마다 참조된다.

여기에 공격자가 방어자보다 잘 이해하고 있는 비대칭이 있다. 로그인 절차는 몇 분간의 정밀 검사다. 세션은 몇 주간의 무검사 신뢰다. 인포스틸러, 악성 브라우저 확장, 일상 업무처럼 보였던 OAuth 승인, 말로 구슬려진 고객지원 창구 — 수단이 무엇이든 그 문자열만 손에 넣으면 단단한 부분을 통째로 건너뛴다. 훔쳐진 토큰은 자기가 옮겨졌다는 사실을 모른다.

이것이 보안 모델에 무엇을 하는지 보라. 가장 강한 통제가 지키는 것은 한 번 발급되고, 그다음부터는 혼자 여행한다. MFA에 들인 모든 투자는 발급 순간에 효력을 다한다.

세션은 무엇에 묶여 있는가

대부분의 시스템에서 정직한 답은 “아무것에도”다. 베어러 토큰은 이름 그대로다 — 지참한 자가 곧 본인이다. 다른 기계에서, 다른 네트워크에서, 다른 대륙에서 재생해도 서버에 보이는 건 “유효한 세션이 유효한 작업을 하는 모습”뿐이다.

휴리스틱을 얹는 시스템도 있다. 새 IP 대역에 표시를 남기고, 새 유저 에이전트면 재로그인을 요구한다. 도움은 된다. 동시에 사용자를 “가끔 무작위로 재인증을 요구받는 것”에 길들이는 비용도 치른다. 구조적인 수리는 다른 곳에 있다. 세션을 발급받은 기기에 증명 가능하게 묶어서, 토큰 소지만으로는 무가치하게 만드는 것이다. 로그인 단계에는 기기 결합형 자격증명이 이미 있다 — 플랫폼 패스키가 그것이다. 그 결합을 세션 계층까지 연장하는 것이 업계가 천천히 가고 있는 방향이고, 지금의 공백이 사는 곳이다.

정말 중요한 의식

여기서 따라 나오는 관점 전환은 이렇다. 보안상 중대한 사건은 로그인이 아니다. 로그인은 이미 신뢰한 기기에서 매일 일어난다. 중대한 사건은 새 기기의 첫 등장이다 — 정당한 사용과 탈취가 가장 구별하기 어려운 지점이 거기고, 비싼 검사를 받을 자격이 있는 판단도 거기 있다.

기기 등록을 일급 의식으로 다루면 시스템이 던지는 질문이 바뀐다. “이 요청은 유효한 세션을 들고 있는가”가 아니라 “이 기기는 언제, 누구에 의해 도입됐고, 어떻게 검증됐는가”. 탈취 시도는 쿠키로 무사통과하는 대신 우리가 가진 가장 강한 경로를 뚫어야 하게 된다. 게다가 등록 이벤트는 드물어서 거기엔 진짜 마찰을 둘 여유가 있다. 매 로그인마다의 마찰에는 사용자가 반란을 일으키지만, “본 적 없는 기계가 들어오려 한다”에 대한 마찰은 오히려 기대되는 것이다.

자기 시스템에 물어볼 가치가 있는 질문들

  • 세션은 실제로 얼마나 사는가 — 설정값 말고, 갱신 흐름까지 합산한 관측값으로?
  • 한 기계의 세션 토큰이 다른 기계에서 제시되면 무엇이든 알아채는가? 하나라도?
  • 데이터 삭제, 출금 계좌 변경, 관리자 추가 — “지금 여기 있다는 증명”을 새로 요구하는 작업이 하나라도 있는가? 아니면 아침의 쿠키가 자정까지 전부를 커버하는가?
  • 계정에 새 기기가 나타나면 나중에 사람이 검토할 수 있는 곳에 기록되는가, 아니면 로그인 로그의 바다에 녹아 사라지는가?

어느 것도 로그인을 위해 쌓은 것을 버리라는 이야기가 아니다. 요새화한 경계선이 실제로 넘어지고 있는 경계선이 아니라는 걸 알아차리라는 이야기다.

시험의 불편한 버전은 이렇다. 당신 노트북의 세션 쿠키가 지금 다른 나라의 기계에서 재생된다면, 당신의 제품은 그것을 “당신”으로 대할까? 대부분의 제품에서 답은 “예”고, 스틸러 로그를 읽는 모든 공격자가 그걸 안다.


Axowl은 기기 등록을 봉인된 감사 가능 이벤트로 다룹니다 — 계정 위의 새 기기는 로그인 행 하나가 아니라 기록된 의사결정입니다. 어떻게 동작하는지 보기.