| Предыдущий | Следующий |
| STATUS_THREADPOOL_RELEASED_DURING_OPERATION | STATUS_APC_RETURNED_WHILE_IMPERSONATING |
STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING
Что означает STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING
STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING означает, что callback завершился, сохранив токен олицетворения клиента.
Почему это опасно
Worker thread pool переиспользуется. Если он вернётся в pool с чужим контекстом безопасности, следующая несвязанная задача может выполниться от имени предыдущего клиента.
Что проверить
- Все места, где callback включает олицетворение через RPC, COM или Win32 API.
- Наличие парного вызова отмены олицетворения на успешном пути, при ошибке и при отмене.
- Состояние токена потока непосредственно при входе и перед выходом callback.
Помещайте отмену impersonation в гарантированный блок очистки, а ошибку отмены олицетворения обрабатывайте как нарушение границы безопасности, а не как несущественный сбой журналирования. После исправления полезно добавить проверку, что перед возвратом worker в pool токен потока снова соответствует ожидаемому контексту службы.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.