Skip to content

Commit ecdcc62

Browse files
committed
Add security chapter
1 parent ede98e2 commit ecdcc62

File tree

1 file changed

+45
-12
lines changed

1 file changed

+45
-12
lines changed

doc/main.tex

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -279,16 +279,10 @@ \section{Firefox XUL extension API}
279279
\end{itemize}
280280

281281
While 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
290284
available\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
293287
into Firefox' core code deeply, no further analysis was performed.
294288

@@ -297,6 +291,7 @@ \section{Firefox XUL extension API}
297291
extensions.
298292

299293
\section{WebExtensions API}
294+
\label{webextensions}
300295

301296
Currently, there are ongoing efforts towards an API for browser
302297
extensions 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

Comments
 (0)