🇰🇷 한글 설명
Hangfire 1.7.25 버전에서 대시보드 UI에 대한 기본 인증 필터가 누락되어 원격 요청이 허용되는 취약점이 발견되었습니다. 이로 인해 권한이 없는 사용자가 민감한 데이터가 포함된 대시보드에 접근할 수 있습니다. 패치된 버전인 1.7.26 이상으로 업데이트하거나 명시적으로 인증 필터를 설정해야 합니다.
💡 쉬운 설명
원래는 내부 사용자만 볼 수 있어야 하는 관리자 화면이 설정 실수로 인해 외부 인터넷에서도 누구나 접속할 수 있게 된 상태입니다. 관리자 화면을 통해 중요한 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
Hangfire is an open source system to perform background job processing in a .NET or .NET Core applications. No Windows Service or separate process required. Dashboard UI in Hangfire.Core uses authorization filters to protect it from showing sensitive data to unauthorized users. By default when no custom authorization filters specified, `LocalRequestsOnlyAuthorizationFilter` filter is being used to allow only local requests and prohibit all the remote requests to provide sensible, protected by default settings. However due to the recent changes, in version 1.7.25 no authorization filters are used by default, allowing remote requests to succeed. If you are using `UseHangfireDashboard` method with default `DashboardOptions.Authorization` property value, then your installation is impacted. If any other authorization filter is specified in the `DashboardOptions.Authorization` property, the you are not impacted. Patched versions (1.7.26) are available both on Nuget.org and as a tagged release on the github repo. Default authorization rules now prohibit remote requests by default again by including the `LocalRequestsOnlyAuthorizationFilter` filter to the default settings. Please upgrade to the newest version in order to mitigate the issue. For users who are unable to upgrade it is possible to mitigate the issue by using the `LocalRequestsOnlyAuthorizationFilter` explicitly when configuring the Dashboard UI.
📍 영향받는 시스템
Hangfire 1.7.25 버전 (DashboardOptions.Authorization에 별도 필터를 지정하지 않은 경우)
⚔️ 공격 벡터
인증되지 않은 원격 공격자가 네트워크를 통해 Hangfire 대시보드 URL에 직접 접속하여 민감한 정보 탈취
🛡️ 대응 방법
Hangfire를 1.7.26 버전 이상으로 업그레이드하거나, DashboardOptions에 LocalRequestsOnlyAuthorizationFilter를 명시적으로 설정
🔧 검증 코드
출력된 Hangfire.Core의 버전이 1.7.25 이하인지 확인하여 취약 여부를 판단합니다.
dotnet list package | grep Hangfire.Core