동시 로그인 보안

무제한 로그인은 심각한 비즈니스 로직 결함을 숨길 수 있습니다.

사용자가 노트북으로 로그인합니다. 몇 초 후, 동일한 계정으로 다른 브라우저에서 로그인합니다. 그다음은 모바일 기기, 그다음은 API 클라이언트입니다. 모든 것이 완벽하게 작동합니다.

많은 앱이 여러 기기를 지원하기 때문에 이는 문제가 없어 보입니다. 하지만 다음과 같이 질문해야 합니다: 모든 애플리케이션이 무제한 세션을 허용해야 할까요?

어떤 시스템에서 다중 세션은 기능입니다. 반면 다른 시스템에서는 공격자가 숨어 있기 위해 이용하는 결함이 됩니다. 이것이 바로 비즈니스 로직 취약점입니다. 코드는 설계된 대로 작동하지만, 설계 자체가 취약한 것입니다.

차이점: • 전통적인 버그는 코딩 실수를 악용합니다. • 비즈니스 로직 버그는 설계 결정을 악용합니다.

영화 스트리밍 서비스를 생각해 보십시오. 하나의 구독으로 10명이 동시에 시청할 수 있다면, 로그인 시스템은 정상 작동하는 것이지만 비즈니스 규칙은 실패한 것입니다.

이는 뱅킹, 관리자 패널, SaaS 제품에도 적용됩니다.

테스트 방법:

보안이 중요한 앱은 종종 다음과 같은 규칙을 적용합니다:

공격자가 자격 증명을 훔치면, 무제한 세션을 허용할 경우 공격자는 영원히 로그인 상태를 유지할 수 있습니다. 실제 사용자가 활동하는 동안 공격자도 계속 활동합니다. 어느 쪽도 침입자를 알아차리지 못합니다.

맥락이 전부입니다. 많은 세션이 필요한 앱:

엄격한 제어가 필요한 앱:

해결 방법:

SQL 인젝션과 같은 코드 버그만 찾지 마십시오. 앱이 수행하는 기능과 비즈니스 요구 사항 사이의 간극을 찾으십시오.

오늘 세션 정책을 검토하십시오. 가장 큰 위험은 깨진 코드가 아니라, 깨진 로직일 수 있습니다.

Source: https://dev.to/arashad_dodhiya_0e4bdba5a/concurrent-login-security-how-to-check-whether-multiple-sessions-are-allowed-1839