Каков риск развертывания отладочных символов (pdb файл) в продуктивной среде?

Для согласовывания второго метода в сообщении Jeff Hillman Вы могли или сделать a:

$app = Get-WmiObject 
            -Query "SELECT * FROM Win32_Product WHERE Name = 'Software Name'"

Или

$app = Get-WmiObject -Class Win32_Product `
                     -Filter "Name = 'Software Name'"
76
задан Community 23 May 2017 в 12:25
поделиться

4 ответа

Вот еще один вопрос, на который стоит обратить внимание:

Есть ли какие-либо проблемы безопасности, оставляя файлы отладки PDB на действующих серверах?

И дополнительная информация о файлах PDB:

PDB Файлы: что должен знать каждый разработчик

В общем, я всегда включаю файлы pdb в свои развертывания, выгоды слишком велики, чтобы их игнорировать.

Если вы никогда не открываете трассировку стека для своих пользователей (и обычно вы не должны ), на самом деле нет никакого дополнительного риска безопасности при развертывании файлов PDB.

Когда происходит видимая пользователем трассировка стека, пользователь может видеть полную трассировку стека, включая ваше имя файла и номера строк файла. Это может дать им некоторое представление о том, как устроено ваше приложение, что потенциально может помочь им в случае взлома.

56
ответ дан 24 November 2019 в 11:23
поделиться

Если вы выполняете развертывание в производственной среде в своей организации, это не проблема безопасности.

Если вы продаете свое программное обеспечение другим организациям, тогда файл .pdb может дайте возможность кому-то, кто интересуется реверс-инжинирингом, поднять ногу - это может быть, а может и не быть проблемой для вас.

Однако (для ясности) вы не хотите, чтобы ваши трассировки стека отображались клиенту - независимо от того, были ли файлы. pdbs доступны. Но если вы просто регистрируете трассировки и представляете клиенту "красивую" страницу с ошибкой, это не проблема.

13
ответ дан 24 November 2019 в 11:23
поделиться

Имея отладочные символы, злоумышленник может определить интересующие глобальные переменные, смещения функций и т. Д.

Чтобы он мог видеть, что ваша система имеет такую ​​функцию, как:

AddAdminUser(string name, string password);

И знать его смещение. Если ваша программа скомпрометирована, он может вызвать эту функцию, чтобы дать себе права администратора.

Или что-то вроде:

typedef enum {Basic, NTLM} AuthenticationMode;
AuthenticationMode g_authenticationMode;

И знает, какой бит изменить, чтобы переключить ваше приложение в небезопасный режим.

В качестве альтернативы, это потребует довольно много времени, чтобы выяснить это. Однако не непреодолимое количество времени.

Но. . . все это означает, что ваш злоумышленник уже находится в положении, когда он может скомпрометировать вашу программу. Если это так, вы уже проиграли.

Если у вас есть веская бизнес-причина для развертывания символов pdb, продолжайте. Развертывание PDB не сделает вас незащищенным. Если вы не у вас есть веская причина для развертывания, вы не должны этого делать, так как это немного упростит атаки.

Вы также можете создавать общедоступные файлы PDB - они удаляют определенную часть информации, но дают вам достаточно символов для генерации трассировки стека и выполните базовую отладку. Подробности здесь . Microsoft развертывает общедоступные PDB на своем сервере символов для всеобщего использования.

РЕДАКТИРОВАТЬ: Большая часть того, что я сказал, относится к проблемам, связанным с развертыванием PDB для нативного кода - я думаю, что многие из этих проблем люди переносят и на .NET, даже несмотря на то, что метаданные сборки уже передают довольно много этого.

Подробности здесь . Microsoft развертывает общедоступные PDB на своем сервере символов для всеобщего использования.

РЕДАКТИРОВАТЬ: Большая часть того, что я сказал, относится к проблемам, связанным с развертыванием PDB для нативного кода - я думаю, многие из этих проблем люди переносят и на .NET, даже несмотря на то, что метаданные сборки уже довольно много этого передают.

Подробности здесь . Microsoft развертывает общедоступные PDB на своем сервере символов для всеобщего использования.

РЕДАКТИРОВАТЬ: Большая часть того, что я сказал, относится к проблемам, связанным с развертыванием PDB для нативного кода - я думаю, многие из этих проблем люди переносят и на .NET, даже несмотря на то, что метаданные сборки уже передают довольно много этого.

11
ответ дан 24 November 2019 в 11:23
поделиться

Кто-нибудь может «восстановить» полный исходный код вашего приложения. Если это Open Source, вам не о чем беспокоиться. Если у него есть IP (алгоритмы, защита, лицензии), это, вероятно, не лучшая идея.

Это правда, что такие инструменты, как Reflector, могут восстанавливать части вашего кода даже без файлов PDB, но обфускация может помочь (ну, совсем немного).

2
ответ дан 24 November 2019 в 11:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: