Меня попросили, чтобы создать тему на форуме, так вот она.
В Linux 2.6.32+ ядро Linux были некоторые забавные изменения в реализации posix1.e в отношении того, как способность CAP_SETPCAP интерпретируется системой и добавление файловой системы метаданных поддержки для того, чтобы возможности, а не только одеяло SUID / SGID бинарники ,
Этот патч возник из дискуссий # Bitcoin-разработчика.
Различные предлагаемые методы шифрования бумажника обсуждался в свое время BlueMatt и несколько других. (Соломенный человек) аргумент предположил, что если злоумышленник был в состоянии получить корень на машине какие-либо из предложенных методов будет полностью нарушено. (Re: декодированием на старте против расшифровывают по созданию TxN, давайте не будем пересказывать эту дискуссию здесь, поскольку это выходит за рамки этого патча.)
Это всего лишь один из способов минимизации таких рисков путем bitcoind себя. Сняв набор ограничительного и установка этих флагов в PR_SET_SECUREBITS ядра не позволю этот процесс когда-либо получить перерос privs. Это означает, что даже если, скажем, вектор атаки, что позволило для удаленного выполнения в Bitcoin был найдено, и, скажем, система она работает на есть некоторые нулевой день эксплуатировать в Suid двоичной системы. (Или ленивый администратор, не то, что я поддерживаю это) Даже если код был выполнен, то ядро будет игнорировать УИП флаги на бинарной и он все равно работает как любой пользователь bitcoind был запущен.
Пластырь как это реализовано довольно прямо вперед.
Как написано, даже если эта функция включена, этот патч делает абсолютно ничего если процесс при запуске не имеет возможности CAP_SETPCAP. Есть 3 (простые, есть несколько других) способы для процесса, который будет создан таким образом:
1) Запустить bitcoind как корень. КАКОЙ УЖАС
2) Установить bitcoind Setuid корень. КАКОЙ УЖАС
3) С помощью утилиты setcap к: setcap cap_setpcap = EIP bitcoind; ЗДОРОВО
Единственный рекомендуемый метод является последним. Эта возможность обязательный для того, чтобы изменить ограничительный набор самостоятельно. Обратите внимание, что если вы читаете старую документацию этой способность звучит страшней, чем предварительно 2.6.32 и возможность метаданных файла поддерживает эту возможность позволит вам изменять возможности любого процесса на машине. Это не тот случай в 2.6.32+.
Побочные эффекты / регрессии:
С помощью этой опции построен, если bitcoind запускается как корень, чтобы сказать, связываются с портом <1024 она больше не будет иметь возможность сделать это, поскольку этот патч полностью устраняет специальное значение UID 0 в запущенном процессе и все дети / потоках.
Этот патч не включить эту функцию в клиенте Bitcoin графического интерфейса. Я не уверен, что стоит продолжать; но я просто не знаком с WxWidgets и не хотел, чтобы вставить его в "неправильно" место.
Вытащите запрос:
https://github.com/bitcoin/bitcoin/pull/202