Welche Sicherheitsbedenken sollte ich haben, wenn ich FS_METHOD in wp-config auf "direct" setze?
3 Antworten
- Stimmen
-
- 2015-05-27
So habeich die Idee der WordPress-Datei-API verstanden. Wennesfalschist,stimmen Siebitte ab :)
Okay. Wenn Sieeine Datei hochladen,hat diese Dateieinen Eigentümer. Wenn Sie Ihre Dateimit FTP hochladen,melden Sie sich an und die Dateigehört dem FTP-Benutzer. Da Sie über die Anmeldeinformationen verfügen,können Sie diese Dateien über FTP ändern. Der Eigentümer kann die Dateinormalerweise ausführen,löschen,ändern usw. Sie können diesnatürlich ändern,indem Sie die Dateiberechtigungen ändern.
Wenn Sieeine Dateimit PHP hochladen,besitzt der Linux-Benutzer,der PHP ausführt,die Datei. Dieser Benutzer kannnun die Dateibearbeiten,löschen,ausführen usw. Diesistin Ordnung,solangenur Sie der Benutzer sind,der PHP auf Ihrem System ausführt.
Nehmen wir an,Siebefinden sich aufeinem "schlecht" konfiguriertengemeinsamgenutzten Host. Viele Leutebetreibenihre PHP-Websites auf diesem System. Nehmen wir an,nurein Linux-Benutzerführt PHPfür all diese Personen aus. Einer der Webmaster auf diesemgemeinsamgenutzten Host hat schlechte Absichten. Er sieht Ihre Seite undfindet den Weg zu Ihrer WordPress-Installation heraus. Beispielsweise wird WP_DEBUG auftruegesetzt undes wirdeine Fehlermeldung wie
angezeigt[warning] /var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php on line 1
"Ha!" sagt derböse Junge. Mal sehen,ob dieser Typ
schreibtFS_METHOD
aufdirect
gesetzt hat undein Skript wie<?php unlink( '/var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php' ); ?>
Danurein Benutzer PHP ausführt und dieser Benutzer auch vombösen Jungen verwendet wird,kanner die Dateien auf Ihrem System ändern/löschen/ausführen,wenn Sie sie über PHP hochgeladen haben und dadurch den PHP-Benutzer als Eigentümer angehängt haben.
Ihre Website wirdgehackt.
Oder,wieesim Codex heißt:
Bei vielen Hosting-Systemen wird der Webserver als anderer Benutzer ausgeführt als der Besitzer der WordPress-Dateien. Wenn dies der Fallist,a Beim Schreiben von Dateien vom Webserver-Benutzer wird das Ergebnis angezeigt Dateien,die dem Benutzerkonto des Webserversgehören,anstelle destatsächlichen Benutzerkonto. Dies kann zueinem Sicherheitsproblembeim Shared Hostingführen Situationen,in denenmehrere Benutzer denselben Webserverfürgemeinsamnutzen verschiedene Websites.
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
Wasist das Risiko?
Aufeinem schlecht konfiguriertengemeinsamgenutzten Host wird das PHPjedes Kunden als derselbe Benutzer ausgeführt (sagen wir
apache
zur Diskussion). Dieses Setupist überraschend häufig.Wenn Sie sich aufeinem solchen Hostbefinden und WordPress verwenden,um das Plugin über den direkten Dateizugriff zuinstallieren,gehören alle Ihre Plugin-Dateien zu
apache
. Ein legitimer Benutzer auf demselben Server kann Sie angreifen,indemerein PHP-Skript schreibt,dasbösen Codein Ihre Plugin-Dateieneinfügt. Sie ladenihr Skript aufihreeigene Website hoch undfordern deren URL an. Ihr Code wurdeerfolgreich kompromittiert,da das Skript alsapache
ausgeführt wird,derselbe,dem Ihre Plugin-Dateiengehören.Was hat
FS_METHOD 'direct'
damit zutun?Wenn WordPress Dateien (z. B.ein Plugin)installierenmuss,wird Funktionget_filesystem_method () ,um zubestimmen,wie auf das Dateisystem zugegriffen werden soll. Wenn Sie
FS_METHOD
nicht definieren,wirdein Standardfür Sie ausgewählt,andernfalls wird Ihre Auswahl verwendet,solange dies sinnvollist.Das Standardverhalten versucht zuerkennen,ob Sie sichin einergefährdeten Umgebung wie der obenbeschriebenenbefinden. Wenn Sie sich sicherfühlen,wird der
'direct'
Methode. In diesem Fallerstellt WordPress die Dateien direkt über PHP,sodass sie dem Benutzerapache
gehören (in diesem Beispiel). Andernfalls wird aufeine sicherere Methode zurückgegriffen,z. B. Sie werden zur Eingabe von SFTP-Anmeldeinformationen aufgefordert und die Dateien werden wie Sieerstellt.FS_METHOD = 'direct'
fordert WordPress auf,diese Risikoerkennung zu umgehen und immer Dateienmit der'direct'
-Methode zuerstellen.Warum dann
FS_METHOD = 'direct'
verwenden?Leiderist die Logik von WordPress zum Erkenneneinergefährdeten Umgebungfehlerhaft underzeugt sowohlfalschpositive als auchfalschnegative Ergebnisse. Hoppla. Der Test umfasst das Erstelleneiner Datei und das Sicherstellen,dass sie demselben Eigentümergehört wie das Verzeichnis,in dem sie sichbefindet. Wenn die Benutzeridentisch sind,wird PHP als Ihreigenes Konto ausgeführt undesist sicher,Plugins als dieses Konto zuinstallieren. Wenn sie unterschiedlich sind,geht WordPress davon aus,dass PHP alsfreigegebenes Konto ausgeführt wird undesnicht sicherist,Plugins als dieses Konto zuinstallieren. Leider sind diesebeiden Annahmenfundierte Vermutungen,die häufigfalsch sind.
Sie würden
define('FS_METHOD', 'direct' );
in einemfalschpositiven Szenario wie diesem verwenden: Sie sind Teileines vertrauenswürdigen Teams,dessen Mitglieder alle Dateien überihreigenes Konto hochladen . PHP wird alseigener Benutzer ausgeführt. WordPressgeht davon aus,dass dieseine gefährdete Umgebungist,und verwendetnicht standardmäßig den'direct'
-Modus. In Wirklichkeit wirdesnurmit Benutzerngeteilt,denen Sie vertrauen,und daherist der'direct'
-Modus sicher. In diesem Fall sollten Siedefine('FS_METHOD', 'direct' );
verwenden,um WordPress zu zwingen,Dateien direkt zu schreiben.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
Esgibt eine 'gut konfigurierte' Situation,in der 'direkt' zu Problemenführt.
Esist auchmöglich,gemeinsamgenutztes WP-Hostingmit nichtgemeinsamgenutzten PHP-Ausführungsbenutzern zu konfigurieren,die sich von den Benutzernmit Datei-/Verzeichnisbesitz unterscheiden. Sieerhalten also die Dateien von Benutzer1 und der PHP-Code wird als PHP-Benutzer1 ausgeführt.
In dieser Situation könnengehackte Plugins oder Kerncode (a)nichtin die Verzeichnisse anderer Benutzer schreiben (oder aus diesen lesen,je nach Berechtigung).(b) kann die Dateien dieses Benutzers nicht schreiben und kann daher dem Kern- oder Plugin-Code keinen Trojaner-Code hinzufügen.
Wenn das Hosting soeingerichtetist,MÜSSEN Sie FTPfür Updates verwenden und 'direct'funktioniertnicht.
Wenn Siein wp-config.php 'direct'festlegen und der PHP-Ausführungsbenutzer keine Schreibberechtigung hat,erhalten Sie Meldungen "Update Failed" undes wird kein Popup angezeigt,in dem Sienach FTP-Anmeldeinformationengefragt werden.
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.
Ich hatte kürzlichein Problem,bei demich das WP Smush Pro-Pluginnichtinstallieren konnte,damir die Optionenfür diemanuelle Installation oder die Ein-Klick-Installationnicht zur Verfügung stehen.
Ichbin auf diesen Beitrag schlug vor,die Einstellungenin
wp-config.php
zu ändern. Ich habe die vorgeschlagenen Einstellungen hinzugefügt,aber die wichtigste scheint zu sein:define('FS_METHOD', 'direct');
Wasichgerne wissen würde,ist,welche wirklichen Bedenkenich haben sollte,wennich
FS_METHOD
aufdirect
setze? Gibtes andere Alternativen zur Installation des Plugins?Diesist,was die offizielle Dokumentation zu sagen hat: