Quais preocupações de segurança devo ter ao definir fs_method para "direto" no wp-config?
3 respostas
- votos
-
- 2015-05-27
Isto é apenas,comoeuentendi aideia do api do arquivo wordpress . Seestivererrado,porfavor downVote :)
Ok. Se vocêfizer o upload de um arquivo,este arquivoterá umproprietário. Se vocêfizer o upload do seu arquivo com FTP,vocêfaz logine o arquivo será depropriedade do usuário FTP. Como vocêtem as credenciais,vocêpode alteraresses arquivospormeio do FTP. Oproprietáriogeralmentepodeexecutar,excluir,alteraretc. o arquivo. Claro,vocêpode alterarissomudando o Permissões de arquivo .
Se vocêenviar um arquivo usando o PHP,o usuário do Linux,queestáexecutando o PHPestápossuindo o arquivo. Este usuáriopode agoraeditar,excluir,executaretc. O arquivo. Issotudobem,desde que apenas você seja o usuário,queestáexecutando o PHPno seu sistema.
permite assumir,vocêestáem um host compartilhado configurado "mal". Muitaspessoasexecutam seus sites PHPneste sistema. Vamos dizer que apenas um usuário do Linuxestáexecutando o PHPparatodasessaspessoas. Um dos webmastersneste host compartilhadotem másintenções. Ele vê suapáginae ele descobre o caminhopara ainstalação do WordPress. Porexemplo,o WP_DEBUGestá definido comotruee há umamensagem deerro como
[warning] /var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php on line 1
"ha!" O Bad Boy diz. Vamos ver,seesse carativer definido
FS_METHOD
paradirect
e eleescreve um script como<?php unlink( '/var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php' ); ?>
Como apenas um usuárioestáexecutando o PHPe este usuáriotambém é usadopelo Bad Boy,elepode alterar/excluir/executar os arquivosem seu sistema,se você otiverenviado via PHPe poreste usuárionoproprietário.
Seu site é hackeado.
ou,como dizno Codex:
.
Muitos sistemas de hospedagemtêm o servidor webem execução como um usuário diferente do que oproprietário dos arquivos WordPress. Quandoeste é o caso,um Processar arquivos deescrita do usuário do WebServerterá o resultado arquivospertencentes à conta de usuário do WebServerem vez do real conta do usuário. Issopode levar a umproblema de segurançana hospedagem compartilhada situações,onde vários usuáriosestão compartilhando omesmo servidor da Webpara sites diferentes.
This is just, how I understood the idea of the WordPress File API. If it is wrong, please downvote :)
Okay. If you upload a file, this file has an owner. If you upload your file with FTP, you login and the file will be owned by the FTP user. Since you have the credentials, you can alter these files through FTP. The owner can usually execute, delete, alter etc. the file. Of course, you can change this by changing the file permissions.
If you upload a file using PHP, the linux user, which is executing PHP is owning the file. This user can now edit, delete, execute etc. the file. This is okay as long as only you are the user, who is executing PHP on your system.
Lets assume, you are on a "poorly" configured shared host. A lot of people run their PHP websites on this system. Lets say only one linux user is executing PHP for all these people. One of the webmasters on this shared host has bad intentions. He sees your page and he figures out the path to your WordPress installation. For example, WP_DEBUG is set to true and there is an error message like
[warning] /var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php on line 1
"Ha!" the bad boy says. Lets see, if this guy has set
FS_METHOD
todirect
and he writes a script like<?php unlink( '/var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php' ); ?>
Since only one user is running PHP and this user is also used by the bad boy he can alter/delete/execute the files on your system if you have uploaded them via PHP and by this attached the PHP user as the owner.
Your site is hacked.
Or, as it says in the Codex:
Many hosting systems have the webserver running as a different user than the owner of the WordPress files. When this is the case, a process writing files from the webserver user will have the resulting files owned by the webserver's user account instead of the actual user's account. This can lead to a security problem in shared hosting situations, where multiple users are sharing the same webserver for different sites.
-
- 2016-07-14
Qual é o risco?
Em um host compartilhadomal configurado,o PHP do cliente seráexecutado como omesmo usuário (digamos
apache
para discussão). Esta configuração é surpreendentemente comum.Se vocêestiverem um hoste usar o WordPressparainstalar oplugin usando o Access de Arquivo Direto,todos os seus arquivos deplug-inpertencerão ao
Apache
. Um usuário legítimonomesmo servidor seria capaz de atacá-loescrevendo um script PHP queinjeta o código domalem seus arquivos deplugin. Eles carregam seu scriptpara o seupróprio sitee solicitam sua URL. Seu código é comprometido com sucessoporque seu script éexecutado comoapache
,omesmo quepossui seus arquivos deplug-in.O que
fs_method 'direct'
tem a ver comele?Quando o WordPressprecisaparainstalar arquivos (como umplugin),ele usa o get_fileystem_method () Funçãopara determinar como acessar o sistema de arquivos. Se vocênão definir
fs_method
,eleescolherá umpadrãopara você,caso contrário,ele usará sua seleção,desde quefaça sentido.O comportamentopadrão tentará para detectar se vocêestáem um ambiente de risco como o queeu descrevi acima,e seele acha que você vai usar o
' direto '
método. Nesse caso,o WordPress criará os arquivos diretamente através do PHP,fazendo com queelespertencem ao usuárioApache
(nesteexemplo). Caso contrário,ele voltará a ummétodomais seguro,como solicitando as credenciais do SFTPe criando os arquivos como você.fs_method='direct'
pede o WordPressparaignoraressa detecção de riscoe sempre criar arquivos usando ométodo'direto'
.entãopor que usar
fs_method='direct'
?Infelizmente,a lógica do WordPress "para detectar um ambiente de risco éfalhae produzfalsos-positivose falsos-negativos. Whoops. Otesteenvolve a criação de um arquivoe certificando-se de queelepertença aomesmoproprietário quanto o diretório quemora. A suposição é que,se os usuáriosforemiguais,o PHPestiver sendoexecutado como suaprópria contae é seguroinstalarplugins comoessa conta. Seeles são diferentes,o WordPresspressupõe que o PHPestá sendoexecutado como uma conta compartilhadae não é seguroinstalarplugins comoessa conta. Infelizmente,ambas as suposições são adivinhados quefreqüentementeestarãoerrados.
você usaria
definir ('fs_method','direct');
em um cenáriofalsopositivo,comoeste: vocêfazparte de umaequipe confiável cujosmembros carregamtodos os arquivospormeio de suaprópria conta . PHP éexecutado como seupróprio usuário separado. O WordPress assumirá queeste é um ambiente de riscoe não seráinformadopara omodo'direto'
. Na realidade,é compartilhada apenas com os usuários que você confiae,comotal,'direto'
modo é seguro. Neste caso,você deve usardefinir ('fs_method','direct');
paraforçar o WordPressparagravar arquivos diretamente.What's the risk?
On a poorly configured shared host, every customer's PHP will execute as the same user (let's say
apache
for discussion). This setup is surprisingly common.If you're on such a host and use WordPress to install the plugin using direct file access, all of your plugin files will belong to
apache
. A legitimate user on the same server would be able to attack you by writing a PHP script that injects evil code into your plugin files. They upload their script to their own website and request its URL. Your code is successfully compromised because their script runs asapache
, the same one that owns your plugin files.What does
FS_METHOD 'direct'
have to do with it?When WordPress needs to install files (such as a plugin) it uses the get_filesystem_method() function to determine how to access the filesystem. If you don't define
FS_METHOD
it will choose a default for you, otherwise it will use your selection as long as it makes sense.The default behavior will try to detect whether you're in an at-risk environment like the one I described above, and if it thinks you're safe it will use the
'direct'
method. In this case WordPress will create the files directly through PHP, causing them to belong to theapache
user (in this example). Otherwise it'll fall back to a safer method, such as prompting you for SFTP credentials and creating the files as you.FS_METHOD = 'direct'
asks WordPress to bypass that at-risk detection and always create files using the'direct'
method.Then why use
FS_METHOD = 'direct'
?Unfortunately, WordPress' logic for detecting an at-risk environment is flawed and produces both false-positives and false-negatives. Whoops. The test involves creating a file and making sure it belongs to the same owner as the directory it lives in. The assumption is that if the users are the same, PHP is running as your own account and it's safe to install plugins as that account. If they're different, WordPress assumes that PHP is running as a shared account and it's not safe to install plugins as that account. Unfortunately both of these assumptions are educated guesses that will frequently be wrong.
You would use
define('FS_METHOD', 'direct' );
in a false positive scenario such as this one: you are part of a trusted team whose members all upload files through their own account. PHP runs as its own separate user. WordPress will assume that this is an at-risk environment and will not default to'direct'
mode. In reality it's only shared with users you trust and as such'direct'
mode is safe. In this case you should usedefine('FS_METHOD', 'direct' );
to force WordPress to write files directly. -
- 2017-02-23
Há uma situação "bem configurada"em que "direto" levará aproblemas.
Também épossível configurar hospedagem compartilhada WP com usuários deexecução de PHPnão compartilhados,diferentes dos usuários depropriedade do arquivo/diretório. Então você acaba com os arquivos depropriedade do usuário1e o código PHP éexecutado como PHP-User1.
Nessa situação,plugins hackeados ou códigoprincipal (a)nãopodegravar (ou atémesmo ler,dependendo daspermissões) de outros usuários "(b)não épossívelescrever Este arquivos do usuárioe,portanto,nãopode adicionar código detrojan ao códigoprincipal ouplug-in.
Então,se a hospedagemestiver configurada assim,você deve usar o FTPpara atualizaçõese "direto"nãofuncionará.
Se você definir 'Direct'no WP-Config.phpe o usuário deexecução do PHPnãotiverpermissão degravação,receberámensagens defalha de atualizaçãoe nãoterápop-up solicitando credenciais FTP.
There is a 'well-configured' situation where 'direct' will lead to problems.
It is also possible to configure shared WP hosting with non-shared PHP execution users, different from the file/directory ownership users. So you end up with the files owned by user1 and the PHP code is executed as php-user1.
In that situation, hacked plugins or core code (a) can't write to (or even read from, depending on permissions) other users' directoriess; (b) can't write this user's files and so can't add trojan code to the core or plugin code.
So if the hosting is set up like that, you MUST use FTP for updates and 'direct' will not work.
If you set 'direct' in wp-config.php and the PHP execution user does not have write permission, you'll get Update Failed messages and have no pop-up asking for FTP credentials.
Recentemente,tive umproblemaem quenão conseguiinstalar oplugin WP SMush Proporquenãotenho as opções deinstalação deinstalaçãomanual ou de um clique disponíveis.
Eume deparei com estepost que sugeriu ajustar as configuraçõesem
wp-config.php
. Eu adicionei as configurações sugeridas,porém aquele queparece ser omaisimportante é:define('FS_METHOD', 'direct');
O queeugostaria de saber é quepreocupações reais devoterem torno de configuração
FS_METHOD
paradirect
? Existem outras alternativasparainstalar oplugin?Éisso que a documentação oficialtem a dizer: