Атаки на переполнение буфера против текущего клиента может позволить удаленному злоумышленнику украсть ваши биткойны.
Я поднял эту тему в http://bitcointalk.org/index.php?topic=1688.msg20574#msg20574
Главный недостаток текущего клиента в этом отношении является то, что это большой монолитным процесс, который принимает произвольные данные от любых сетевых соединений и выполняет сложную обработку на них, имея полный доступ к малым ценным приватным ключам.
Злоумышленник, который может пропатчить клиент может обеспечить безвестно доступ ко всем будущим секретным ключам (с некоторыми оговорками).
Способ обеспечить это приложение является ограничение операций мы позволяют проводить на закрытых ключей и упрощения кода с доступом закрытых ключей.
Единственные операции, которые когда-либо должны быть выполнены в списке приватных ключей "прочитать ключ" а также "добавить новый случайный ключ", Вредоносный процесс, который может прочитать произвольный секретный ключ может потратить монеты, связанные с этим ключом. Вредоносный процесс, который может добавить новый случайный ключ может только тратить дисковое пространство. Как и в стороне, вредоносный процесс, который может добавить произвольный секретный ключ может потратить монеты, присвоенные этот ключ в будущем, так что мы должны запретить это. Для исполнения этих правил, файл, содержащие ключи может быть открыт только для чтения и присоединять разрешения.
Основной процесс частного обращения будет принимать только две команды. "Вход сообщения" будет принимать сообщения и открытый ключ и вернуть подпись. "Добавить новый ключ" будет возвращать новый открытый ключ.
Отдельный процесс может контролировать доступ к "знак сообщения" Интерфейс ключевого процесса общественного обращения. Это может возможно проверить, что значение сообщений подписаны было под определенным лимитом до запроса подтверждения пользователя. Это может проверить, что уровень расходов не было в течение определенного предела, или что общая отправлены в этот день не было чрезмерным.
Основной процесс частного обращения не должен пытаться разобрать и проверить сообщения, которые он подписывает, как это делает код намного больше и более трудно доказать безопасным.
ByteCoin