Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hotfix: all Add-On URLs without CSP settings #619

Closed
wants to merge 2 commits into from

Conversation

Projects
None yet
7 participants
@psytester
Copy link
Contributor

commented May 5, 2019

The new CSP setting was not tested togehter with Add-Ons and it breaks they usage now :-(
This is a hotfix (template) for RaspberryMatic 3.45.7.20190504 which will put the CSP settings only to WebGUI URL paths.
All Add-Ons are excluded at the moment with that updated setting.
But the final version should set as much as possible Add-Ons with CSP (and maybe they additonal whitelists)

@hobbyquaker just FYI what need to be changed because of https://homematic-forum.de/forum/viewtopic.php?f=77&t=50590

hotfix: all Add-On URLs without CSP settings
The new CSP setting was not tested togehter with Add-Ons and it breaks they usage now :-(
This is a hotfix (template) for RaspberryMatic 3.45.7.20190504 which will put the CSP settings only to WebGUI URL paths.
All Add-Ons are excluded at the moment with that updated setting.
But the final version should set as much as possible Add-Ons with CSP (and maybe they additonal whitelists)

@hobbyquaker just FYI what need to be changed because of https://homematic-forum.de/forum/viewtopic.php?f=77&t=50590
@hobbyquaker

This comment has been minimized.

Copy link
Contributor

commented May 5, 2019

@psytester Cool, thanks! Much cleaner solution (defining the var.common-response-headers) than just overwriting the response headers in an additional lighttpd config introduced by the addons (what would have been the solution I had in mind)

@hobbyquaker

This comment has been minimized.

Copy link
Contributor

commented May 5, 2019

@psytester: could you also fix #620 ? I'm not so sure about the syntax regarding non-standard https port...

Update setenv.conf
Issue #620 shows that eQ-3 is using two different kinds of FW checks and both needs to be allowed in CSP
http://ccu3-update.homematic.com/firmware/download?cmd=js_check_version&version=....
https://ccu3-update.homematic.com:8443/firmware/api/firmware/search/...

==> *.homematic.com:8443 added too
@hobbyquaker

This comment has been minimized.

Copy link
Contributor

commented May 5, 2019

wow, that was fast :D

@jens-maus

This comment has been minimized.

Copy link
Owner

commented May 6, 2019

So, I switche mal ins Deutsche damit das einfacher/schneller zu diskutieren ist in dem speziellen Fall und die meisten/Betroffenen sprechen ja auch deutsch hier....

Also abgesehen von diesem PR und der darin beschriebenen Anpassungen um RedMatic&Co wieder zum korrekten laufen zu bringen, bin ich aktuell sogar gewillt die gesamte Content-Security-Policy Anpassungen wieder zu entfernen da nach Rückmeldungen aus dem Forum diese IMHO mehr negative Effekte auf die Nutzbarkeit der WebUI/RaspberryMatic hat, als dass sie irgendwelche vertretbaren Vorteile für die Sicherheit bringt. So haben sich bis dato folgende Probleme aufgetan:

  1. Addons wie RedMatic die auf externe Ressourcen angewiesen sind können diese nicht mehr laden/verarbeiten (siehe https://homematic-forum.de/forum/viewtopic.php?f=77&t=50590#p507297)
  2. Direkte Anzeigen von z.B. WebCam-Streams (https://homematic-forum.de/forum/viewtopic.php?f=65&t=50564&start=40#p507192) oder das einbetten von Wetteranzeigen (von z.B. yr.no) sind nicht mehr möglich (https://homematic-forum.de/forum/viewtopic.php?f=65&t=50564&start=40#p507199)
  3. Reverse-Proxy Nutzungen scheinen auch hier/da ihre Probleme zu haben (https://homematic-forum.de/forum/viewtopic.php?f=65&t=50564&start=90#p507399)

Es stellt sich also IMHO wirklich die Frage ob es man nicht besser die gesamte CSP Anpassungen wieder entfernen sollte als jetzt wie in diesem PR mehr und mehr Ausnahmen hinzuzufügen die IMHO nur dazu führen das man ohnehin dann Löcher in der CSP Sicherheit hat und damit ohnehin keinen wirklichen Nutzen hat. Denn bezogen auf diesen PR könnte ja nun ein CCU Addon wieder potentiell maligne Ressourcen vom Internet nachladen / einbinden...

Absolute Sicherheit gibt es eben IMHO nicht und selbst das Webinterface einer FritzBox schickt keinerlei Content-Security-Policy response header mit. Vmtl. aus gutem Grund?

@libertyx82

This comment has been minimized.

Copy link
Contributor

commented May 6, 2019

Also mein Problem mit dem Reverse-Proxy ist gelöst, dass lag an cloudflare, hier wurde ein Script für die Beschleunigung von Javascript nachgeladen. Das konnte ich deaktivieren, bzw dank @hoedlmoser weiß ich wie ich die nginx Konfig anpassen muss.

Wäre es nicht ggf. möglich das man mittels einer Konfigurationsdatei die zugelassenen Quellen (die individuell benötigt werden) in der setenv.conf hinzufügen kann?

Ein löchriger Schutz ist immer noch besser als keiner.

@alexreinert

This comment has been minimized.

Copy link
Contributor

commented May 6, 2019

Die schönste (aber auch aufwendigste) Lösung: CSP optional und der Nutzer kann angeben, welche Domains drin sein sollen.
Ein fixer Eintrag mit den ganzen Wildcards sorgt nur dafür, dass es minimal aufwendiger ist, eine ggf. vorhandene Lücke zu nutzen, weil man es dann nicht mehr aus beliebiger Quelle laden kann, sondern eine der Subdomains braucht. Diese zu erhalten ist aber kein echtes Problem.

@jens-maus

This comment has been minimized.

Copy link
Owner

commented May 6, 2019

@libertyx82

Wäre es nicht ggf. möglich das man mittels einer Konfigurationsdatei die zugelassenen Quellen (die individuell benötigt werden) in der setenv.conf hinzufügen kann?

In der Tat bin ich da gerade mit dem Autor von lighttpd am diskutieren weil ich noch keine Möglichkeit gefunden habe dynamische strings da so zusammen zu bauen wie ich das momentan wohl machen würde (siehe https://redmine.lighttpd.net/boards/2/topics/8596?r=8598)

Aber vielleicht hat ja jemand eine Idee hier? Aber noch einmal: Im Zweifel werde ich die CSP header wieder komplett deaktivieren wenn wir hier nicht für die meisten Anwendungsfälle eine zufriedenstellende Lösung finden...

@ghost

This comment has been minimized.

Copy link

commented May 7, 2019

Aber vielleicht hat ja jemand eine Idee hier? Aber noch einmal: Im Zweifel werde ich die CSP header wieder komplett deaktivieren wenn wir hier nicht für die meisten Anwendungsfälle eine zufriedenstellende Lösung finden...

Was sind "die meisten Anwendungsfälle"? Wäre es nicht besser einen Schalter in der Systemsteuerung einzubauen, mit welchem der User explizit die CSP header deaktivieren kann? Damit wäre beiden Seiten geholfen.

@jens-maus

This comment has been minimized.

Copy link
Owner

commented May 7, 2019

@tedNAL Also ich bin kein Freund von immer mehr Schaltern und Schaltern. Gerade wenn es sich um solch technischen Dinge handelt. Sonst wird die WebUI noch gar so undurchsichtig wie die Windows-Konigurationsdialoge mit unendlichen Verschachtelungen. :)

Wenn hier also jemand einen etwas "ausgereifteren" CSP Patch entwickeln möchte der nicht die oben genannten Probleme aufweist und nicht nur durch weitere Lücken im CSP Schutz umzusetzen ist, dann nehme ich den PR natürlich gerne an. Aber momentan (so wie die Problemlage und die Diskussion hier und im HomeMatic-Forum liegt) werde ich wohl oder übel die CSP Header für eine kommende Hotfix version vorerst einmal generell wieder abschalten weil IMHO der Sicherheitsgewinn hier mehr als fragwürdig ist, gleichzeitig aber eben bekannte Use-Cases (siehe oben) nicht mehr möglich sind. Vielleicht brauch das einführen der CSP Header einfach eben noch ein paar mehr Entwicklungsarbeiten um die genannten negativen Auswirkungen zu eliminieren.

Wenn aber jemand noch eine Last-Minute Idee für eine Anpassung hat, dann gerne her damit! Ansonsten schalte ich die CSP Header zeitnah vorerst aber wieder ab...

jens-maus added a commit that referenced this pull request May 7, 2019

temporarily removed the CSP reponse headers again as they are currently
creating more troubles than they help to improve the security. This
definitly needs more thoughts and work before we can enable these
security response headers again. This closes #620 and refs #619.

@jens-maus jens-maus added this to the 3.45.7.20190511 milestone May 7, 2019

@jens-maus jens-maus added 👎 wontfix and removed undecided labels May 7, 2019

@jens-maus

This comment has been minimized.

Copy link
Owner

commented May 7, 2019

So, habe bis auf weiteres wie angekündigt die CSP header erst einmal wieder für eine kommende Hotfix-Version abgeschalten. Wenn Interesse besteht kann gerne ein erneuter PR oder Ticket in Zukunft eingereicht werden der dann die CSP header wieder einführt, aber die hier diskutierten Problem dann vollumfänglich adressiert.

@superpower10

This comment has been minimized.

Copy link

commented May 10, 2019

@jens-maus
Ist schon bekannt, wann diese Version ungefähr kommt?

@jens-maus

This comment has been minimized.

@superpower10

This comment has been minimized.

Copy link

commented May 11, 2019

Danke für die Info.

Verstehe die Anzeige nur irgendwie nicht. Lt. Deinem Link ist die Version Fertig (100%).

Lt. https://github.com/jens-maus/RaspberryMatic/releases diesem Link ist es noch nicht fertig.

@libertyx82

This comment has been minimized.

Copy link
Contributor

commented May 11, 2019

3.45.7.20190511
Due by May 11, 2019

Heißt, dass es im laufe des 11 May veröffentlicht wird

@IT-VBFK

This comment has been minimized.

Copy link

commented May 11, 2019

@superpower10 Das liegt einfach daran, dass die Version erst heute im Laufe des Tages kommt.

Die letzte Version kam ca. um 17:00 Uhr, oder so?

@jens-maus

This comment has been minimized.

Copy link
Owner

commented May 11, 2019

Leute, Leute. Mal ganz entspannt. Das hier ist kein Diskussionsforum sondern ein Bugtracker. Wie immer gilt auch bei dieser Version das Motto: "It's done, when it's done". Und das was unter milestones steht ist nur eine Orientierung und vor allem gibt es keine feste Uhrzeit. Bin doch keine Maschine und kein Unternehmen. Also einfach mal zurücklehnen und abwarten...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.