[TryHackMe] Race Conditions - 3

코준·2025년 6월 17일

TryHackMe

목록 보기
19/32

Detection

경쟁 조건을 탐지하는 것은 어려울 수 있다.
특정 행동을 반복하는 것을 직접 로그를 확인하는 것이 아닌 이상, 대부분의 행동은 눈에 띄지 않을 가능성이 높다.

하지만 그 반복되는 행동이 취약점을 악용하는 데 사용될 수 있다는 것을 생각한다면,,

경쟁 조건이 발생하는 취약점을 발견하기 위해서 침투 테스터와 버그 바운티 헌터의 도움이 필요하다.

침투 테스터는 제어된 환경에서 시스템이 어떻게 흘러가는지 이해해야 한다.
보통의 웹 애플리케이션의 제한은 한 번의 사용, 한 번의 투표, 한 번의 평가와 잔액 내 사용 가능, 특정 시간 동안 한 번의 작업 등이 있다.
이 제한을 경쟁 조건을 통해서 우회할 수 있는지 파악한다. 시스템의 미묘한 타이밍을 노리는 공격은 시스템이 어떤 상태인지 파악하는 것으로 시작할 수 있다.

Mitigation

완화 기술 몇 가지가 있다.

  • Synchronization Mechanisms : 최신 프로그래밍 언어는 locks같은 동기화 메커니즘을 제공한다. 하나의 스레드는 다른 스레드가 공유 리소스에 접근하지 못하는 동안 작업을 진행할 수 있다.

  • Atomic Operations : 하나의 실행 단위를 쪼갤 수 없음을 뜻한다. 다른 스레드에 의해 중지되지 않고 완료할 수 있는 것을 보장할 수 있다.

  • Database Transactions : 여러 데이터베이스 작업을 하나의 단위로 묶는 것이다. 하나의 트랜잭션에 있는 작업들은 다같이 성공하거나 실패한다. 데이터의 흐름이 일관성을 보장하고 여러 프로세스가 동시적으로 데이터베이스를 수정하는 등의 행위로부터 경쟁 조건을 방지할 수 있다.

profile
Hi !

0개의 댓글