방금 ASP.NET에서 새로 발견 된 보안 취약점에 대해 인터넷에서 읽었습니다. 자세한 내용은 여기를 참조하십시오.
문제는 ASP.NET이 AES 암호화 알고리즘을 구현하여 이러한 응용 프로그램이 사용자 세션 중에 정보를 저장하기 위해 생성하는 쿠키의 무결성을 보호하는 방식에 있습니다.
이것은 약간 모호하지만 여기에 더 무서운 부분이 있습니다.
공격의 첫 단계는 수천 건의 요청이 필요하지만 성공하면 공격자가 비밀 키를 받으면 완전히 은밀합니다. 필요한 암호 지식은 매우 기본적입니다.
전반적으로, 나는 이것이 정말로 심각한 지 알기 위해 보안 / 암호화 주제에 익숙하지 않습니다.
따라서 모든 ASP.NET 개발자 는 몇 초 안에 ASP.NET 웹 사이트를 소유 할 수있는 이 기술을 두려워 해야합니까?
이 문제는 평균 ASP.NET 개발자에게 어떤 영향을 줍니까? 그것은 우리에게 전혀 영향을 미칩니 까? 실제로이 취약점의 결과는 무엇입니까? 그리고 마지막으로 :이 취약점을 방지하는 해결 방법이 있습니까?
답변 주셔서 감사합니다!
편집 : 내가받은 응답을 요약 해 드리겠습니다
따라서 이것은 기본적으로 "패딩 오라클"유형의 공격입니다. @Sri 는 이러한 유형의 공격이 무엇을 의미하는지에 대한 훌륭한 설명을 제공했습니다. 이 문제에 대한 충격적인 비디오가 있습니다!
이 취약점의 심각성에 관하여 : 예, 실제로 심각합니다. 공격자는 응용 프로그램의 시스템 키를 알 수 있습니다. 따라서 그는 매우 원치 않는 일 을 할 수 있습니다 .
- 앱의 머신 키를 소유 한 공격자는 인증 쿠키를 해독 할 수 있습니다.
- 그보다 더 나쁜 것은 사용자 이름으로 인증 쿠키 를 생성 할 수 있다는 것입니다 . 따라서 그는 사이트의 모든 사람으로 나타날 수 있습니다. 응용 프로그램은 귀하 또는 귀하의 이름으로 인증 쿠키를 생성 한 해커를 구별 할 수 없습니다.
- 또한 이전 쿠키 만큼 위험하지는 않지만 세션 쿠키 를 해독 (및 생성) 할 수도 있습니다 .
- 그렇게 심각하지는 않습니다 : 그는 페이지의 암호화 된 ViewState를 해독 할 수 있습니다. (ViewState를 사용하여 자신감있는 데이터를 저장하는 경우 어쨌든 그렇게하지 않아야합니다!)
- 예상치 못한 공격 : 머신 키에 대한 지식으로 공격자 는 웹 응용 프로그램에서 임의의 파일을 다운로드 할 수 있습니다. ( Web.Config 등 포함 )
여기에 내가 가진 좋은 관행의 무리입니다 하지 않는 문제를 해결하지만, 도움이 웹 애플리케이션의 일반적인 보안을 향상은.
- 보호 된 구성으로 중요한 데이터를 암호화 할 수 있습니다
- HTTP 전용 쿠키 사용
- DoS 공격 방지
이제이 문제에 초점을 맞추겠습니다.
- Scott Guthrie는 자신의 블로그에 해당 항목을 게시했습니다.
- 취약점에 대한 ScottGu의 FAQ 블로그 게시물
- 취약점에 대한 ScottGu의 업데이트
- Microsoft는 이에 대한 보안 권고를 받았습니다
- 취약점 이해
- 취약점에 대한 추가 정보
해결책
- customErrors를 활성화하고 모든 오류 가 리디렉션 되는 단일 오류 페이지를 만듭니다 . 네, 심지어 404 . (ScottGu에 따르면이 공격에는 404와 500을 구분하는 것이 필수적이라고합니다.) 또한 무작위 지연을 유발하는 코드를
Application_Error
넣거나Error.aspx
입력 하십시오 . 임의의 숫자를 생성하고 Thread.Sleep을 사용하여 오랫동안 잠자기 상태로 만듭니다. 그러면 공격자가 서버에서 정확히 무슨 일이 있었는지 결정할 수 없습니다. - 어떤 사람들은 3DES로 다시 전환하는 것이 좋습니다. 이론적으로 AES를 사용하지 않으면 AES 구현에서 보안 취약점이 발생하지 않습니다. 결과적으로 이것은 권장되지 않습니다 .
다른 생각들
내 질문에 답변 한 모든 사람에게 감사합니다. 이 문제뿐만 아니라 일반적으로 웹 보안에 대해 많은 것을 배웠습니다. @Mikael의 답변을 수락 된 것으로 표시했지만 다른 답변도 매우 유용합니다.