summaryrefslogtreecommitdiff
path: root/doc/source/faq.rst
diff options
context:
space:
mode:
authorSebastien Blot2017-09-20 10:11:01 +0200
committerSebastien Blot2017-09-20 10:11:01 +0200
commit868f96c759b6650d88ff9f4fbc5c048302134248 (patch)
treec0de0af318bf77a8959164ef11aeeeb2b7bab294 /doc/source/faq.rst
Initial import
Diffstat (limited to 'doc/source/faq.rst')
-rw-r--r--doc/source/faq.rst196
1 files changed, 196 insertions, 0 deletions
diff --git a/doc/source/faq.rst b/doc/source/faq.rst
new file mode 100644
index 0000000..07aba33
--- /dev/null
+++ b/doc/source/faq.rst
@@ -0,0 +1,196 @@
1FAQ
2===
3
4General
5-------
6
7What is Snuffleupagus?
8""""""""""""""""""""""
9
10Snuffleupagus is a `PHP7+ <http://php.net/manual/en/migration70.php>`_
11module designed to drastically raising the cost of attacks against website,
12by killing entire bug classes, and also providing a powerful virtual-patching system,
13allowing administrator to fix specific vulnerabilities without having to touch the PHP code.
14
15
16Where does the name *Snuffeupagus* comes from?
17""""""""""""""""""""""""""""""""""""""""""""""
18
19 Aloysius Snuffleupagus, more commonly known as Mr. Snuffleupagus, Snuffleupagus
20 or Snuffy for short, is one of the characters on Sesame Street,
21 the educational television program for young children.
22
23 He was created as a woolly mammoth, without tusks or (visible) ears,
24 and has a long thick pointed tail, similar in shape to that of a dinosaur
25 or other reptile. He has long thick brown hair and a trunk, or "snuffle",
26 that drags along the ground. He is Big Bird's best friend and
27 has a baby sister named Alice. He also attends "Snufflegarten".
28
29 --- `Wikipedia <https://en.wikipedia.org/wiki/Mr._Snuffleupagus>`_
30
31
32Why is Snuffleupagus called Snuffleupagus?
33""""""""""""""""""""""""""""""""""""""""""
34
35Like PHP's `ElePHPant <https://secure.php.net/elephpant.php>`_,
36we thought that using an elephant as a mascot would be a great idea.
37
38
39Why did you write Snuffleupagus?
40""""""""""""""""""""""""""""""""
41
42We're working for `NBS System <https://nbs-system.com/en/>`__,
43a web hosting company (meaning that we're dealing with PHP code all day long),
44with a strong focus on security. We do have hardening
45(kernel, `WAF <https://naxsi.org>`_, `IDS <https://en.wikipedia.org/wiki/Intrusion_detection_system>`_, …)
46below the web stack, but most of the time, when a website is compromised,
47it's either to send ads, spam, deface it, steal data, …
48This is why we need to harden the website itself too, but we can't touch its
49source code.
50
51Why not Suhosin?
52""""""""""""""""
53
54We're huge fans of `Suhosin <https://suhosin.org>`_, unfortunately:
55
56- it doesn't work very well on PHP 7
57- it has some oudated features and misses new ones
58- it doesn't cope very well with our various industrialization needs
59- it has some shortcomings by design
60
61We're using the `disable_function <https://secure.php.net/manual/en/ini.core.php#ini.disable-functions>`_
62directive, but unfortunately, it doesn't provide enough usable granularity (guess how many CMS are using
63``system`` to do various mandatory maintenance tasks…).
64
65This is why we decided to write our own hardening module, in the spirit of Suhosin,
66via virtual-patching support, and other cool new features.
67
68What license is Snuffleupagus under and why?
69""""""""""""""""""""""""""""""""""""""""""""
70
71Snuffleupagus is licensed under the `LGPL <https://www.gnu.org/copyleft/lesser.html>`_,
72and is developed by the fine people from `NBS System <https://nbs-system.com/>`__.
73
74We chose the LGPL because we don't care that much how you're using Snuffleupagus,
75but we'd like to force people to make their improvements/contributions
76available to everyone.
77
78Should I use Snuffleupagus?
79"""""""""""""""""""""""""""
80
81Yes.
82
83Even if you're not using the virtual-patching capabilities, Snuffleupagus comes
84with various passive features that won't break your website while killing numerous vulnerabilities.
85
86Please keep in mind that you are not only protecting yourself and your users/customers,
87but also other people on the internet that might be attacked by your server if
88it becomes compromised.
89
90How mature is this project?
91"""""""""""""""""""""""""""
92
93This project was floating around since early 2016, and we did the first commit
94the 28ᵗʰ of December of the same year. We're currently in a private alpha phase,
95finding and fixing as much bugs as possible with the help of friends.
96
97Are you saying that PHP isn't secure?
98"""""""""""""""""""""""""""""""""""""
99
100We don't like PHP's approach of security; namely (sometimes) adding warnings
101in the documentation and trusting the developer to not do any mistake,
102instead of focusing on the root cause, and killing the
103bug class one for all.
104
105Moreover, it seems that the current attitude toward security in the PHP world
106is to `blame the user <https://externals.io/message/100147>`_ instead of acknowledging
107issues, as stated in their `documentation <https://wiki.php.net/security#not_a_security_issue>`_.
108We do think that an security issue that "requires the use of code or settings known to be insecure"
109is still a security issue, and should be treated as such.
110
111Installation and configuration
112------------------------------
113
114Can snuffleupagus break my application?
115"""""""""""""""""""""""""""""""""""""""
116Yes.
117
118Some options won't break anything, like ``harden_rand``, but some like ``global_strict``
119or overly-restrictives virtual-patching rules might pretty well break your website.
120It's up to you to configure Snuffleupaggus accordingly to your needs.
121
122You can also enable the ``simulation`` mode on features that you're not sure about,
123to see what would snuffleupagus do to your application, before activating them for good.
124
125How can I find out the problem when my application breaks?
126""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
127
128By checking the logs; Snuffleupagus systematically prefix them with ``[snuffleupagus]``.
129
130
131Does Snuffleupagus run on Windows?
132""""""""""""""""""""""""""""""""""
133No idea.
134
135
136Will Snuffleupagus run on my old PHP 5?
137"""""""""""""""""""""""""""""""""""""""
138No.
139
140Since PHP5 `will be deprecated at the end of 2018 <http://php.net/supported-versions.php>`_,
141you should think about moving to PHP7 anyway. You can (and should) use
142`Suhosin <https://suhosin.org>`_ in the meantime.
143
144Help and support
145----------------
146
147I found a security issue
148""""""""""""""""""""""""
149If you believe you have found a security issue affecting Snuffleupagus,
150then we would be more than happy to hear from you!
151
152We promise to treat any reported issue seriously and,
153if the investigation confirms it affects Snuffleupagus,
154to patch it within a reasonable time,
155release a public announcement that describes the issue,
156discuss potential impact of the vulnerability,
157reference applicable patches or workarounds,
158and credit the discoverer.
159
160Please send it us a mail to the ``snuffleupagus`` user,
161on ``nbs-system.com``.
162
163I found a bug. How can I report it?
164"""""""""""""""""""""""""""""""""""
165We do have an issue tracker on `Github <https://github.com/nbs-system/snuffleupagus/issues>`_.
166Please make sure to include as much information as possible when reporting your issue,
167such as your operating system, your version of PHP 7, your version of snuffleupagus,
168your logs, the problematic php code, the request, a brief description, … long story short,
169give us everything that you can.
170
171Where can I find even more help?
172""""""""""""""""""""""""""""""""
173The :doc:`configuration page <config>` might be what you're looking for.
174If you're adventurous, you can also check the `issue tracker <https://github.com/nbs-system/snuffleupagus/issues/?q=is%3Aissue>`_
175(make sure to check the closed issues too).
176
177I need professional support for my company.
178"""""""""""""""""""""""""""""""""""""""""""
179Contact `NBS System <https://nbs-system.com>`_.
180
181Unimplemented mitigations and abandoned ideas
182---------------------------------------------
183
184Contant time comparisons
185""""""""""""""""""""""""
186We didn't manage to perform time-based side-channel attacks on strings
187against real world PHP application, and the results that we gathered on
188tailored test cases weren't concluding: for simplicity's sake, we chose
189to not implement a mitigation against this class of attacks.
190
191We would be happy to be proven wrong, and reconsider implementing this feature,
192if someone can manage to get better results than us.
193
194The possibility of having this natively in PHP has
195`been discussed <https://marc.info/?l=php-internals&m=141692988212413&w=2>`_,
196but as 2017, nothing has been merged yet.