@@ -279,16 +279,10 @@ \section{Firefox XUL extension API}
279279\end {itemize }
280280
281281While qutebrowser should learn from the mistakes made in Firefox' legacy API,
282- there is a fundamental difference in the two approaches regarding their security
283- philosophy: Extensions for qutebrowser should be written in the Python language
284- (like qutebrowser itself is), but safely executing untrusted Python code proved
285- to be impossible \citep {nedbat -eval , lwn -pysandbox }. See chapter \ref {security }
286- for a more detailed explanation.
287-
288- A more thorough analysis of the XUL API design proved to be difficult. While
289- archived API documentation is still
282+ a more thorough analysis of the XUL API design proved to be difficult. Archived
283+ API documentation is still
290284available\footnote {\url {https://developer.mozilla.org/en-US/docs/Archive/Add-ons}},
291- bad documentation was one of the criticisms of XUL addons
285+ but bad documentation was one of the criticisms of XUL addons
292286\citep {mozilla -webext }. Since the API is not in active use anymore, and ties
293287into Firefox' core code deeply, no further analysis was performed.
294288
@@ -297,6 +291,7 @@ \section{Firefox XUL extension API}
297291extensions.
298292
299293\section {WebExtensions API }
294+ \label {webextensions }
300295
301296Currently, there are ongoing efforts towards an API for browser
302297extensions called \emph {WebExtensions }, which is shared between different
@@ -967,10 +962,48 @@ \section{Summary}
967962% z.T. Wiederholung im Groben, z.T. Verweise auf Teil II-Kapitel
968963\section {Security }
969964\label {security }
965+ As part of this SA, third-party extensions are out of scope; only code which was
966+ part of qutebrowser's core is moved into extensions. Thus, it seems like there
967+ are no special security considerations to be made. However, the architecture of
968+ an extension API is fundamentally influenced by such considerations, and support
969+ for third-party extensions will be added in the near future. Therefore, the
970+ security philosophy of qutebrowser's extensions is analyzed in this section.
971+
972+ The security model of WebExtensions (see section \ref {webextensions }) assumes
973+ that extensions are untrusted. Even with the limited WebExtensions API,
974+ malicious extensions are a common issue
975+ \citep {mozilla -signing ,mozilla -trustworthy }. Browser vendors try to alleviate
976+ this problem with automated and manual code review, extension signing, and
977+ blacklisting of known-bad extensions. Additionally, the user explicitly needs to
978+ allow extensions to run in incognito/private browsing mode, as the impact of a
979+ privacy breach typically is considerably larger in that scenario.
980+
981+ The approach taken qutebrowser extensions is different: Extensions are treated
982+ as trusted, so users are responsible for reviewing extensions before installing
983+ them. This is for a variety of reasons:
970984
971- \fixme {What about incognito tabs}
972-
973-
985+ \begin {itemize }
986+ \item Extensions for qutebrowser should be written in Python (like qutebrowser itself
987+ is), but safely executing untrusted Python code is commonly regarded to be
988+ impossible \citep {nedbat -eval , lwn -pysandbox }.
989+ \item The attack surface for a malicious actor trying to distribute a bad
990+ extension is much smaller, since qutebrowser caters to a relatively small
991+ niche group of users. Thus, malicious extensions are expected to be a seldom
992+ occurrence compared to more common browsers such as Google Chrome or Mozilla
993+ Firefox.
994+ \item Users of qutebrowser are typically power users, due to its
995+ keyboard-focused nature. Therefore, compared to a browser focused at casual
996+ users, it can be expected that users are much more diligent in what
997+ extensions they're installing.
998+ \item The volume of available extensions is much lower. Thus, it's conceivable
999+ that there's a whitelist of extensions which have been reviewed and approved
1000+ by one of qutebrowser's core developers. A contributor wishing to distribute
1001+ a new extension could then ask for it to be reviewed and included in that list.
1002+ \item Due to the focus on power users, a user should always be able to
1003+ install an extension manually, or write a custom one. Thus, mandatory
1004+ extension signing or approval by a central body is undesirable, as it
1005+ presents a trade-off between a user's freedom and security.
1006+ \end {itemize }
9741007
9751008% Resultate, Bewerung und Ausblick
9761009\chapter {Results }
0 commit comments