Beim Lesen des zugehörigen Issues zur Signaturproblematik bei F-Droid habe ich den Eindruck, dass das Problem dort entweder nicht verstanden oder heruntergespielt wird. Das ist besorgniserregend. :think_bread:
https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1466
#fdroid #android #security #sicherheit #poc
@stefanjahn @marcelklehr @kuketzblog
Der schlimmstmögliche Angriff auf dem offiziellen F-Droid-Repository ist also nicht, wie von @kuketzblog behauptet, dass eine “manipulierte oder unsichere” .apk im offiziellen F-Droid repository landet, sondern nur, dass eine kaputte oder falsche Signatur an die reproduzierbar gebaute .apk angehängt wird.
@stefanjahn @marcelklehr @kuketzblog
Das führt im schlimmsten Fall dazu, dass der Publisher einer App (der erst eine entsprechend präparierte .apk mit kaputter Signatur veröffentlichen muss) damit erreichen kann, dass Updates seiner eigenen App im F-Droid kaputte Signaturen haben und diese durch den Nutzer nicht mehr installierbar sind.
Und ich bin mir nicht mal sicher, ob dieser Angriff überhaupt möglich ist, gegeben wie der Buildserver die Signatur kopiert.
@pixelschubsi @stefanjahn @marcelklehr @kuketzblog
“und diese durch den Nutzer nicht mehr installierbar sind.”
Auch nicht ganz korrekt. Wenn die App bereits auf dem Gerät installiert ist, würde ein Update wohl fehlschlagen. Eine Neuinstallation würde aber (nach meinem Verständnis) nach wie vor funktionieren.
@IzzyOnDroid @stefanjahn @marcelklehr @kuketzblog Das stimmt, ich hab ja auch “Updates” gesagt :) Wichtig ist und bleibt aber, dass nur der Original-Quellcode im F-Droid repository landet.
@pixelschubsi im F-Droid Repository landet die APK Datei 😉 Und das ist in diesem Fall die vom Entwickler. Der Quellcode selbst ist hier ja auch nicht das Problem (dafür wird ja auf RB geprüft) – es sind vielmehr die Signatur-Blöcke. Und die werden, wie Mike schon schrieb, nicht vollständig/korrekt geprüft. @stefanjahn @marcelklehr @kuketzblog
@IzzyOnDroid @stefanjahn @marcelklehr @kuketzblog Ja, aber kaputte Signatur-Blöcke haben halt keine Auswirkungen auf den ausgeführten Programmcode der Apps, wenn diese nicht im Quellcode schon Schadcode haben, der dynamisch Schadcode nachlädt. Die Signaturblöcke werden ja nicht einfach ausgeführt. Deswegen ist der maximale Impact hier eben, dass die App mit kaputten Signaturblöcken im Repository landet und deswegen Updates nicht mehr funktionieren.
@pixelschubsi lies den POC nochmal. In den Signaturblöcken kann man alles mögliche verstecken, und dann “anderweitig” zur Ausführung bringen. @stefanjahn @marcelklehr @kuketzblog
@IzzyOnDroid @stefanjahn @marcelklehr @kuketzblog Das gleiche gilt für alle anderen binaries die im Quellcode so rumfliegen, ich kann dir auch Schadcode in eine .png packen. Der Code der code aus Binärdateien oder Drittquellen ausliest und dynamisch zur Ausführung bringt ist IMO bereits Schadcode und sollte nie in F-Droid landen. Die Signaturblöcke sind zwar hier ein zusätzlicher Weg, aber eben bei weitem nicht der einzige um Schadcode auszuliefern, wenn Code dynamisch geladen wird.
@IzzyOnDroid @stefanjahn @marcelklehr @kuketzblog
Das Niveau auf dem wir uns hier bewegen ist nicht weit entfernt von:
“Kritische Sicherheitslücke in F-Droid: Wer einen Browser aus F-Droid installiert und dann damit auf eine Webseite geht, führt potentiell Schadcode (JavaScript) aus”
@stefanjahn @marcelklehr @kuketzblog
Theoretisch könnte man sich auch noch ein Szenario ausdenken, wo der Publisher einer App in der kaputten Signatur Schadcode einbettet und in dem reproduzierbar gebauten open source code seiner app Logik hat, die den Schadcode aus der Signatur sucht und ausführt. Da gibt es aber verschiedene Gründe die diesen “Angriff” nahezu unmöglich machen (Länge der Signatur, Einschränkungen in Android welcher Code ausführbar ist, usw.)
@pixelschubsi @stefanjahn @marcelklehr Das ist der Worst-Case, ja. Daher: »Fehlerhafte Signaturprüfungen können dazu führen, dass manipulierte oder unsichere APKs akzeptiert werden.«
Das ist genau der von dir beschriebene Fall. Wie wahrscheinlich dieser ist, das ist schwierig abzuschätzen.
@kuketzblog@social.tchncs.de @stefanjahn@freiburg.social @marcelklehr@fosstodon.org Wie gesagt, für diesen Angriff müsste der Schadcode, der den Schadcode aus der Signatur nachlädt, bereits im Open-Source code der App sein. Wenn wir bereits Schadcode im Open-Source code der App annehmen, kann durch diese Lücke auch kein zusätzlicher Schaden entstehen.
Ich will nicht sagen, dass man diese Lücke nicht schließen sollte. Es ist aber ein Klassiker in der Community, bei einem sehr komplexen Thema wie diesem einfach ohne Verstand drauf zu hauen…
@pixelschubsi@troet.cafe @stefanjahn@freiburg.social @marcelklehr@fosstodon.org Ich nehme bisher kein »Draufhauen« wahr, sondern dass eine gemeldete Lücke nicht geschlossen/behoben wird, obwohl lange bekannt.
@kuketzblog@social.tchncs.de @stefanjahn@freiburg.social @marcelklehr@fosstodon.org du meinst seit ein Paar Tagen mit “lange”? Die ursprüngliche Lücke die letzten April gefunden wurde, wurde bereits letzten Mai geschlossen, es wurde nur vor ein Paar Tagen eine neue Lücke an ähnlicher Stelle im gleichen repository als “Update” veröffentlicht.
@kuketzblog @stefanjahn @marcelklehr Interessant auch, dass keiner in der Community bemängelt, dass hier kein responsible disclosure zum Einsatz kam. Klar, muss man nicht, aber dann ist die Beschwerde, dass eine Lücke mit effektiv geringem Impact nicht in 7 Tagen über Neujahr gefixt wurde doch schon etwas abgehoben.
@pixelschubsi @stefanjahn @marcelklehr Das wird hier aber anders dargestellt: https://github.com/obfusk/fdroid-fakesigner-poc?tab=readme-ov-file#update-2024-12-30-1