CVE-2025-30406
Gladinet CentreStack
2025-04-08
Gladinet CentreStack and Triofox contains a use of hard-coded cryptographic key vulnerability in the way that the application manages keys used for ViewState integrity verification. Successful exploitation allows an attacker to forge ViewState payloads for server-side deserialization, allowing for remote code execution.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2025-30406 связана с использованием жестко заданного (hard-coded) криптографического ключа в механизме проверки целостности ViewState в продуктах Gladinet CentreStack и Triofox.
ViewState — это механизм ASP.NET для сохранения состояния страницы. Если ключ валидации (validationKey) известен злоумышленнику, он может подписать произвольный сериализованный объект. При передаче такого объекта на сервер происходит процесс десериализации, что в данном случае приводит к удаленному выполнению произвольного кода (RCE) с правами учетной записи, под которой запущен пул приложений IIS.
Как исправить
Основным способом устранения является обновление программного обеспечения до версий, где статические ключи заменены на уникальные, генерируемые при установке.
- Скачайте актуальный патч или сборку с официального портала поддержки Gladinet.
- Выполните резервное копирование конфигурационных файлов
web.configво всех директориях установки. - Установите обновление.
- После обновления убедитесь, что в файлах
web.configсекция<machineKey>либо отсутствует (используется автоматическая генерация), либо содержит уникальные криптографически стойкие значения.
Для принудительной генерации нового ключа через PowerShell (если обновление не сделало это автоматически):
[Reflection.Assembly]::LoadWithPartialName("System.Web") | Out-Null
$gen = New-Object System.Web.Configuration.MachineKeySection
$validationKey = [byte[]]::new(64)
$decryptionKey = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($validationKey)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($decryptionKey)
$vKey = [System.BitConverter]::ToString($validationKey).Replace("-", "")
$dKey = [System.BitConverter]::ToString($decryptionKey).Replace("-", "")
Write-Host "Validation Key: $vKey"
Write-Host "Decryption Key: $dKey"
Временные меры
Если немедленное обновление невозможно, необходимо вручную изменить скомпрометированные ключи в конфигурации IIS.
- Откройте файл
web.configв корневом каталоге приложения CentreStack. - Найдите секцию
<system.web>. - Добавьте или измените элемент
<machineKey>, указав уникальные значения и запретив использование статических ключей:
<system.web>
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" decryption="AES" />
</system.web>
- Перезапустите пул приложений через командную строку:
Restart-WebAppPool -Name "CentreStack"
- Настройте WAF (Web Application Firewall) на блокировку подозрительных POST-запросов, содержащих аномально большие или нехарактерные данные в параметре
__VIEWSTATE.