it-swarm-korea.com

타이밍 공격에 대해 웹 애플리케이션을 어떻게 테스트 할 수 있습니까?

경쟁 조건 등.

이를위한 자동 도구가 있습니까? 어떤 수동 기술을 사용해야합니까?


Area51 제안 에서

16
AviD

타이밍 공격, 경쟁 조건 (CWE-362) 취약성은 웹 애플리케이션에서 흔하지 않으며 주로 더 낮은 수준의 언어에서 발생하는 문제입니다. 예를 들어, CVE-2006-5178 에서 경쟁 조건은 PHP 인터프리터 자체의 잘못된 구현으로 인한 것입니다. 그러나 이러한 기능에 의존하는 애플리케이션도 취약합니다.

타이밍 문제와 특정 환경의 요구 사항으로 인해 이러한 취약성을 재현하려는 시도는 어려울 수 있습니다. 자동화 된 취약성 스캐너를 사용하면 그러한 테스트를 수행하는 것이 불가능합니다. 사람의 경우에도 그러한 취약성을 찾기가 쉽지 않습니다.

제 생각에는 개발자는 주 프로세스가 중단 될 수있는시기를 명심해야합니다. 일련의 작업이 중단되지 않아야하는 경우 원 자성을 제공해야합니다. 주로 데이터베이스 작업은 이러한 공격에 취약합니다. DBMS가 트랜잭션을 지원하고 안전한 동기화를위한 수단을 제공하는 경우에도 DBMS의 제어하에 더 많은 글로벌 액션이있을 수 있습니다. 스레드가 사용되는 상황에도주의를 기울여야합니다.

CWE-362에 대한 링크에는 읽기에 유용한 논문 목록이 있습니다. 그것들은 내가 여기에 준 것보다 훨씬 더 많은 정보를 제공 할 것입니다.

8
anonymous

여기서 논의와 답변은 일반적으로 그 이름으로 언급되는 경주 조건 에 관한 것으로 보입니다.

정말로 타이밍 공격 을 의미한다면, 아마도 실행 시간의 불일치를 통한 정보 유출에 대해 이야기하고있을 것입니다. 타이밍 공격에 대한 교훈 이것에 대한 좋은 소개입니다.

이러한 발견에 특별히 도움이 될 수있는 도구는 모르지만 일반적인 웹 평가 도구는 타이밍 공격으로 인해 악화 될 수있는 다른 문제를 드러 낼 수 있습니다.

외부 당사자가 데이터베이스에 대해 SQL 코드를 실행할 수 있도록 허용하는 취약점이 있다고 가정합니다. 몇 가지 예방 조치를 취했다고 가정 해 보겠습니다. 그들은 데이터를 다시 가져 오거나 데이터베이스에 임의의 정보를 쓸 수 없으며 일종의 일반적인 오류 메시지를 반환합니다. 외부 당사자가 "select"문을 사용하고 응답을받는 데 걸리는 시간을 측정하여 데이터베이스 스키마를 조사 할 수 있습니다. 단순히 백엔드 시스템이 얼마나 많은 작업을 수행하는지 관찰함으로써, 그들은 다른 방법으로는 가질 수없는 무언가를 배우는 것입니다 (특정 테이블이 실제로 존재하는지, 테이블에 많은 레코드가 있는지 등).

6
medina