Übergabe von E-Mails als PDF mit eingebetteten Anlagen
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Sicherheitsbetrachtung
|
||||
|
||||
Was die Erweiterung tut, welche Angriffswege sich daraus ergeben und was
|
||||
dagegen unternommen wird. Stand: Version 1.5.0.
|
||||
dagegen unternommen wird. Stand: Version 1.11.3.
|
||||
|
||||
---
|
||||
|
||||
@@ -10,7 +10,11 @@ dagegen unternommen wird. Stand: Version 1.5.0.
|
||||
Die Lage ist deutlich entspannter als bei der LibreOffice-Fassung. Dort
|
||||
war der kritischste Schritt das **Öffnen** eines heruntergeladenen
|
||||
Dokuments in einer Anwendung mit Makrofähigkeit. Das entfällt hier
|
||||
vollständig — die Erweiterung öffnet nichts, sie überträgt nur.
|
||||
vollständig — die Erweiterung öffnet nichts.
|
||||
|
||||
Seit Version 1.9 erzeugt sie allerdings PDF-Dateien aus E-Mails. Das ist
|
||||
sicherheitstechnisch unauffällig, gehört aber der Vollständigkeit halber
|
||||
in diese Aufstellung — siehe Abschnitt 5.
|
||||
|
||||
| Handlung | Vertrauensgrenze |
|
||||
|---|---|
|
||||
@@ -18,6 +22,7 @@ vollständig — die Erweiterung öffnet nichts, sie überträgt nur.
|
||||
| Anhänge und Nachrichten hochladen | Inhalt vom Absender, nicht vertrauenswürdig |
|
||||
| Dokumente als Anhang in Entwürfe | Inhalt aus dem Archiv |
|
||||
| Freigabelink in den Nachrichtentext | erzeugte Zeichenkette |
|
||||
| PDF aus einer Nachricht erzeugen | Inhalt vom Absender |
|
||||
| Token dauerhaft speichern | Geheimnis |
|
||||
|
||||
---
|
||||
@@ -30,7 +35,8 @@ Bewusst knapp gehalten:
|
||||
|---|---|---|
|
||||
| `storage` | Einstellungen | |
|
||||
| `menus` | Kontextmenüs | |
|
||||
| `messagesRead` | Anhänge und `.eml` lesen | nur auf Anforderung genutzt |
|
||||
| `messagesRead` | Anhänge, Text und `.eml` lesen | nur auf Anforderung genutzt |
|
||||
| `accountsRead` | Konto der Nachricht ermitteln | ohne sie greift der Weg über die Zustellkopfzeilen |
|
||||
| `compose` | Anhang und Link einfügen | |
|
||||
| `notifications` | Fehlermeldungen | |
|
||||
|
||||
@@ -101,7 +107,38 @@ Speicher liegen, nur weil jemand einen Dialog offen stehen liess.
|
||||
|
||||
---
|
||||
|
||||
## 5. Speicherverhalten
|
||||
## 5. Das erzeugte PDF
|
||||
|
||||
Seit Version 1.9 werden ganze Nachrichten als PDF aufbereitet. Der
|
||||
Erzeuger ist selbst geschrieben (`lib/pdf.js`), ohne Fremdbibliothek.
|
||||
|
||||
**Das PDF enthält keinen ausführbaren Inhalt.** Kein JavaScript, keine
|
||||
OpenAction, keine Verweise nach außen — nur Textoperatoren, ein
|
||||
Rechteck und eingebettete Dateien. Ein PDF-Betrachter hat darin nichts
|
||||
zu tun, was über das Darstellen hinausgeht.
|
||||
|
||||
**Eingebettet werden Originalnachricht und Anhänge.** Deren Inhalt
|
||||
stammt vom Absender und ist nicht vertrauenswürdig. Die Erweiterung
|
||||
öffnet sie nicht, sie legt sie nur ab — was ein Betrachter tut, wenn
|
||||
jemand später auf einen Anhang doppelklickt, liegt außerhalb ihres
|
||||
Einflusses. Das entspricht der Lage bei jedem anderen Archivdokument.
|
||||
|
||||
**Dateinamen werden bereinigt**, bevor sie in die Anhangstabelle des PDF
|
||||
geschrieben werden. Sie stammen vom Absender.
|
||||
|
||||
**Texte werden für die PDF-Syntax abgesichert.** Klammern und
|
||||
Rückstriche haben dort besondere Bedeutung; ohne Maskierung könnte ein
|
||||
Betreff mit einer schliessenden Klammer die Struktur der Datei stören.
|
||||
Zeichen ausserhalb von WinAnsi werden durch ein Fragezeichen ersetzt.
|
||||
|
||||
**Ränder und Schriftgröße werden begrenzt** — 0 bis 60 mm, 7 bis 16
|
||||
Punkt, und zusätzlich auf höchstens ein Drittel der Seitenbreite. Eine
|
||||
Zahl aus einem Eingabefeld kann alles sein, und ein Dokument mit
|
||||
negativer Textbreite wäre schwer zu deuten.
|
||||
|
||||
---
|
||||
|
||||
## 6. Speicherverhalten
|
||||
|
||||
Anhangdaten werden **erst beim Hochladen** geladen, nicht beim Öffnen des
|
||||
Dialogs. Bei einer Nachricht mit mehreren großen Anhängen läge sonst alles
|
||||
@@ -109,7 +146,7 @@ im Speicher, während der Anwender noch überlegt.
|
||||
|
||||
---
|
||||
|
||||
## 6. Transport
|
||||
## 7. Transport
|
||||
|
||||
**Adressprüfung.** Nur `http` und `https`. Ohne diese Prüfung liessen sich
|
||||
andere Schemata hinterlegen, die `fetch` teilweise bedient.
|
||||
@@ -125,7 +162,7 @@ ohnehin nicht umgehen, und das ist richtig so.
|
||||
|
||||
---
|
||||
|
||||
## 7. Der Token
|
||||
## 8. Der Token
|
||||
|
||||
Er liegt im Klartext in `browser.storage.local`, also im Profil von
|
||||
Thunderbird. Das entspricht dem, was Erweiterungen üblicherweise tun, ist
|
||||
@@ -145,11 +182,12 @@ Erweiterung kann dann nur, was dieser Benutzer darf.
|
||||
|
||||
---
|
||||
|
||||
## 8. Was die Erweiterung NICHT tut
|
||||
## 9. Was die Erweiterung NICHT tut
|
||||
|
||||
- kein `eval`, kein `innerHTML` mit fremden Inhalten — alle Listen werden
|
||||
über `textContent` und `createElement` aufgebaut
|
||||
- kein Öffnen heruntergeladener Dateien
|
||||
- kein ausführbarer Inhalt im erzeugten PDF
|
||||
- kein Schreiben ins Dateisystem
|
||||
- kein Versenden von Nachrichten
|
||||
- keine Übertragung an Dritte; einzige Gegenstelle ist die konfigurierte
|
||||
@@ -157,7 +195,7 @@ Erweiterung kann dann nur, was dieser Benutzer darf.
|
||||
|
||||
---
|
||||
|
||||
## 9. Bekannte Grenzen
|
||||
## 10. Bekannte Grenzen
|
||||
|
||||
| Punkt | Bewertung |
|
||||
|---|---|
|
||||
@@ -166,6 +204,7 @@ Erweiterung kann dann nur, was dieser Benutzer darf.
|
||||
| Kompromittierte Paperless-Instanz | könnte manipulierte Dokumente als Anhang liefern — sie werden aber nicht geöffnet, nur angehängt |
|
||||
| Kein Schutz gegen Zugriff auf das eigene Benutzerkonto | systembedingt |
|
||||
| Der Nachrichtentext wird beim Einfügen vollständig neu geschrieben | Vorgabe der Compose-Schnittstelle, siehe README |
|
||||
| Das erzeugte PDF ist **kein PDF/A** | dafür fehlen Schrifteinbettung, Farbprofil und eine Prüfung mit veraPDF |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user