PHP Funktion exec

Diskussionen zur Bedienung von KeyHelp.
Post Reply
marco
Posts: 211
Joined: Thu 26. Oct 2017, 18:23

PHP Funktion exec

Post by marco »

Hallo zusammen, ich möchte mal hier fragen was ich machen soll (kann..). Ich nutze in meiner nextcloud recognize und node wird da benötigt.
Die haben node im App verzeichnis mit drin aber das geht nicht (auch nicht wenn ich chmod +x auf die node Datei mache wie es in manchen Foren steht). Ich nutze /usr/bin/node, das klappt soweit aber es kommen noch Fehler wenn die Funktion exec deaktiviert ist. Im Test wo exec erlaubt ist läuft alles super.
Nun meine Frage ist es ein Sicherheitsrisiko exec zu erlauben?

MfG
Marco
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: PHP Funktion exec

Post by Fezzi »

Auf die schnelle, dass spuckt OpenAI zu Deiner Frage aus:

Die Verwendung von `exec()` in PHP kann potenziell ein Sicherheitsrisiko darstellen, aber es hängt stark von der Implementierung ab und wie gut die Anwendung geschützt ist. Hier sind einige Überlegungen, die dir bei der Entscheidung helfen können:

### **Warum `exec()` ein Risiko darstellen kann**
1. **Code-Injection**: Wenn Benutzereingaben nicht richtig validiert oder sanitisiert werden, könnten Angreifer schädliche Befehle einschleusen.
2. **Ausführung beliebiger Befehle**: `exec()` ermöglicht das Ausführen von Systembefehlen. Ein Angreifer könnte das nutzen, um ungewollte oder schädliche Aktionen auszuführen.
3. **Erweiterte Angriffsfläche**: Jede Funktion, die direkten Zugriff auf das System bietet, erhöht die Angriffsfläche.

### **Warum `exec()` sicher sein könnte**
Wenn die Anwendung gut gestaltet ist und die Umgebung sicher ist:
- Eingaben werden strikt validiert und sanitisiert.
- Der Code, der `exec()` aufruft, führt nur vordefinierte und kontrollierte Befehle aus.
- Das System, auf dem die Anwendung läuft, ist stark gehärtet (z. B. durch Benutzerrechte, SELinux/AppArmor, Containerisierung).

### **Sicherheitsmaßnahmen**
Falls du `exec()` erlauben möchtest, solltest du folgende Maßnahmen ergreifen:
1. **Benutzerrechte begrenzen**: Stelle sicher, dass der Webserver oder der Benutzer, der die Anwendung ausführt, nur minimale Rechte hat.
2. **Eingaben validieren**: Vermeide, dass Benutzereingaben direkt oder indirekt in Befehle eingebettet werden.
3. **Whitelisting**: Nutze statische, vordefinierte Befehle oder Pfade, die ausgeführt werden dürfen.
4. **Logging**: Logge alle Befehle, die über `exec()` ausgeführt werden, um potenzielles Fehlverhalten zu erkennen.
5. **Sicherheits-Patching**: Halte das System und die Anwendung immer aktuell.

### **Alternative Ansätze**
1. **Node.js außerhalb der Nextcloud-App verwenden**: Wenn `/usr/bin/node` funktioniert, kannst du versuchen, die Anwendung so zu konfigurieren, dass sie diesen Pfad immer nutzt, anstatt `exec()` zu verwenden, um Node.js aufzurufen.
2. **Containerisierung**: Wenn du Nextcloud in einem Container betreibst, kannst du die Verwendung von `exec()` auf diese isolierte Umgebung beschränken.

### **Fazit**
Das Zulassen von `exec()` kann sicher sein, wenn die oben genannten Maßnahmen umgesetzt werden und du die Kontrolle über die Umgebung hast. Es ist jedoch immer eine Abwägung zwischen Funktionalität und Sicherheit. Wenn es eine Möglichkeit gibt, die Funktionalität ohne `exec()` zu implementieren, wäre das die sicherere Option.
Gruss

Fezzi

Everyone can do something, no one can do everything.
marco
Posts: 211
Joined: Thu 26. Oct 2017, 18:23

Re: PHP Funktion exec

Post by marco »

Danke für die umfangreiche Antwort, ich werde mal schauen ob ich das dann anders lösen kann ohne exec.
omexlu
Posts: 197
Joined: Wed 28. Aug 2024, 10:42

Re: PHP Funktion exec

Post by omexlu »

/usr/bin/node muss auch im open_basedir des Kunden eingetragen werden.

Bin mir aber nicht sicher.

PS. Wenn das gar nichts damit zu tun hat bitte ignorieren :)
User avatar
Tobi
Community Moderator
Posts: 3230
Joined: Thu 5. Jan 2017, 13:24

Re: PHP Funktion exec

Post by Tobi »

Fezzi wrote: Sun 17. Nov 2024, 11:04 Auf die schnelle, dass spuckt OpenAI zu Deiner Frage aus:
ChatGPT ist das neue Google.
Passend dazu und generell immer sehenswert:
https://www.heise.de/news/ChatGPT-Searc ... 38946.html
Gruß,
Tobi


-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
User avatar
24unix
Posts: 2037
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: PHP Funktion exec

Post by 24unix »

Fezzi wrote: Sun 17. Nov 2024, 11:04 sanitisiert
Oh weia :-)

Im Deutschen würde man eher "gereinigt" oder "gefiltert" sagen.

Inhaltlich hat ChatGPT natürlich recht, exec ist nicht per se unsicher, aber das hängt immer vom konkreten Einsatz ab.
Cheers Micha
--
A Windows user reinstalls software every few weeks.
A Linux user reinstalls software every few weeks.
The difference is with Linux the version numbers change.
User avatar
Fezzi
Posts: 253
Joined: Wed 12. Dec 2018, 04:04

Re: PHP Funktion exec

Post by Fezzi »

24unix wrote: Sun 17. Nov 2024, 12:55
Fezzi wrote: Sun 17. Nov 2024, 11:04 sanitisiert
Oh weia :-)

Im Deutschen würde man eher "gereinigt" oder "gefiltert" sagen.

Inhaltlich hat ChatGPT natürlich recht, exec ist nicht per se unsicher, aber das hängt immer vom konkreten Einsatz ab.
Darueber musste ich auch schmunzeln... :lol: ... aber grundsaetzlich ist es schon erstaunlich was an Information rueber kommt wenn man nur richtig fragt... in diesem Fall habe ich einfach den kompletten Start Post von Marco genommen... 8-)
Gruss

Fezzi

Everyone can do something, no one can do everything.
marco
Posts: 211
Joined: Thu 26. Oct 2017, 18:23

Re: PHP Funktion exec

Post by marco »

omexlu wrote: Sun 17. Nov 2024, 11:47 /usr/bin/node muss auch im open_basedir des Kunden eingetragen werden.

Bin mir aber nicht sicher.

PS. Wenn das gar nichts damit zu tun hat bitte ignorieren :)
Das habe ich natürlich gemacht :)
Post Reply