2012-01-09 2 views
2

2011 년 12 월 28 일 US-CERT는 해시 테이블 충돌을 처리하는 방식으로 인해 DOS 공격에 취약한 대다수 웹 서버에 대한 게시를 발표했습니다. 기사 hereasp.net 해시 테이블 취약점

누군가이 해시 테이블이 ASP.NET 수명주기에 맞는 부분을 설명해 주시겠습니까? 하나의 세션 당 하나의 해시 테이블 또는 서버 인스턴스 당 하나의 큰 해시 테이블입니까?

응용 프로그램은 단지 한번 장소 전반에 걸쳐 사용됩니다 피델

+0

http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx –

답변

2

해당 해시 테이블은 Request.Form입니다.

서버가 양식 데이터를 구문 분석하고 키 - 값 쌍을 Request.Form 모음에 배치합니다. 양식 데이터에 동일한 해시 코드를 생성하는 키가 포함되어 있으면 해시 충돌이 발생하여 해시 테이블의 성능이 저하됩니다.

그래서 서버 당 또는 세션 당 하나의 테이블이 아니라 POST 요청 당 하나의 테이블입니다.

+0

근본적인 결함은 모든 해시 테이블에 있다고 생각합니다. 게시물 요청 당 한 번 이상이 될 것입니다. 가장 큰 히트는 일반적으로 POST를 사용하지만 앱이 내부적으로 해시 테이블을 사용하면 영향을 미칩니다. –

+0

@JohnMitchell : 요청 데이터의 키를 사용하여 해시 테이블을 작성한 경우에만 DoS 공격에 취약합니다. 다른 데이터에서 해시 테이블을 만들면 입력에 의해 영향을받지 않습니다. – Guffa

+0

그러나 사용자 입력을 파싱하고 중복 된 데이터 (예 : 버킷 충돌을 일으킬 수있는 데이터)를 DDoS로 사용할 수 있으면 충돌이 처리되는 데 걸리는 시간 내에 오류가 발생합니다. 그래서이 기사에서는 POST에 대해 벡터로 특별히 언급했지만 다른 벡터는 쉽게 사용할 수 있습니다. –

0

해시 테이블을 주셔서 감사합니다. 예를 들어, 페이지에 포스트 변수를 추가하면 해시 테이블에서 내부적으로 처리됩니다. 따라서 해시 테이블 충돌이 많으면 (즉, 페이지에 같은 이름의 변수를 게시하면 여기에서 발생합니다). 그것의 매우 효율적인 메모리 스토리지 시스템은 단어의 모음을 사용하여 "배열"에 액세스 할 수 있습니다 (사전 생각).

이것은 악용 될 수있는 반면 최선의 방법을 사용하고 CPU 사용량을 모니터링하고 페이지 당 최대 POST 크기를 제한하며 단일 호스트에서 요청을 제한하는 것이 좋습니다.

+0

데이터 당 해시 테이블이 추가되었습니다. type을 사용하므로 각 유형의 데이터에 대해 하나씩 사용되므로 사전 스타일 객체를 필요로하는 페이지 당 데이터 항목 당 훨씬 더 많은 세션 당 사용됩니다. 얼마나 자주 사용되는지 확인하고 싶다면 어레이와 마찬가지로 해시 테이블을 생각해보십시오. –