Simon McVittie [Wed, 11 Jan 2017 18:16:42 +0000 (18:16 +0000)]
Document the security fix soon to be released in 3.
20170111
Simon McVittie [Wed, 11 Jan 2017 13:24:00 +0000 (13:24 +0000)]
remove: make it clearer that repeated page parameter is OK here
ikiwiki's web interface does not currently have UI for removing
multiple pages simultaneously, but the remove plugin is robust
against doing so. Use a clearer idiom to make that obvious.
Simon McVittie [Wed, 11 Jan 2017 13:22:03 +0000 (13:22 +0000)]
CGI, attachment, passwordauth: harden against repeated parameters
These instances of code similar to OVE-
20170111-0001 are not believed
to be exploitable, because defined(), length(), setpassword(),
userinfo_set() and the binary "." operator all have prototypes that
force the relevant argument to be evaluated in scalar context. However,
using a safer idiom makes mistakes less likely.
(cherry picked from commit
69230a2220f673c66b5ab875bfc759b32a241c0d)
Simon McVittie [Wed, 11 Jan 2017 13:19:13 +0000 (13:19 +0000)]
passwordauth: avoid userinfo forgery via repeated email parameter
OVE-
20170111-0001
(cherry picked from commit
bffb71d6a7d28f6dd5f0be241f214e79eea7bb91)
Simon McVittie [Wed, 11 Jan 2017 13:16:37 +0000 (13:16 +0000)]
t/passwordauth.t: new automated test for passwordauth
In particular this includes an exploit for OVE-
20170111-0001.
(cherry picked from commit
fbe207212b1f4a395dc297fb274ef07afd7d68f3)
Simon McVittie [Wed, 11 Jan 2017 13:12:50 +0000 (13:12 +0000)]
passwordauth: prevent authentication bypass via multiple name parameters
Calling CGI::FormBuilder::field with a name argument in list context
returns zero or more user-specified values of the named field, even
if that field was not declared as supporting multiple values.
Passing the result of field as a function parameter counts as list
context. This is the same bad behaviour that is now discouraged
for CGI::param.
In this case we pass the multiple values to CGI::Session::param.
That accessor has six possible calling conventions, of which four are
documented. If an attacker passes (2*n + 1) values for the 'name'
field, for example name=a&name=b&name=c, we end up in one of the
undocumented calling conventions for param:
# equivalent to: (name => 'a', b => 'c')
$session->param('name', 'a', 'b', 'c')
and the 'b' session parameter is unexpectedly set to an
attacker-specified value.
In particular, if an attacker "bob" specifies
name=bob&name=name&name=alice, then authentication is carried out
for "bob" but the CGI::Session ends up containing {name => 'alice'},
an authentication bypass vulnerability.
This vulnerability is tracked as OVE-
20170111-0001.
(cherry picked from commit
e909eb93f4530a175d622360a8433e833ecf0254)
Simon McVittie [Tue, 10 Jan 2017 13:22:13 +0000 (13:22 +0000)]
Simon McVittie [Tue, 10 Jan 2017 13:21:46 +0000 (13:21 +0000)]
Sset libmagickcore-6.q16-3-extra as preferred build-dependency
The virtual package libmagickcore-extra is now merely an alternative,
to help autopkgtest to do the right thing.
Simon McVittie [Tue, 10 Jan 2017 11:39:56 +0000 (11:39 +0000)]
d/ikiwiki.doc-base: register the documentation with doc-base
Simon McVittie [Tue, 10 Jan 2017 11:36:23 +0000 (11:36 +0000)]
d/ikiwiki.lintian-overrides: silence false positive spelling warning for Moin Moin
Simon McVittie [Tue, 10 Jan 2017 11:35:57 +0000 (11:35 +0000)]
d/ikiwiki.lintian-overrides: override script-not-executable warnings
Simon McVittie [Tue, 10 Jan 2017 11:30:52 +0000 (11:30 +0000)]
docwiki.setup: exclude TourBusStop from offline documentation
It does not make much sense there.
Simon McVittie [Tue, 10 Jan 2017 11:27:48 +0000 (11:27 +0000)]
lintian: Override obsolete-url-in-packaging for OpenID Selector
It does not seem to have any more current URL, and in any case our
version is a fork.
Simon McVittie [Tue, 10 Jan 2017 11:26:46 +0000 (11:26 +0000)]
d/copyright: re-order to put more specific stanzas later, to get the intended interpretation
Simon McVittie [Tue, 10 Jan 2017 11:17:32 +0000 (11:17 +0000)]
Set package format to 3.0 (native)
Simon McVittie [Mon, 9 Jan 2017 14:44:38 +0000 (14:44 +0000)]
Update changelog
Simon McVittie [Mon, 9 Jan 2017 14:27:56 +0000 (14:27 +0000)]
check_canchange: report invalid filenames as intended
Instead of logging "bad file name %s" and attempting to call the
(string) filename as a subroutine, actually do the intended
sprintf operation.
Simon McVittie [Mon, 9 Jan 2017 14:11:18 +0000 (14:11 +0000)]
news: Use Debian security tracker instead of MITRE for CVE references
The Debian security tracker gets timely updates, whereas the official
CVE pages hosted by MITRE tend to show up as "RESERVED" for several
weeks or months after assignment.
Simon McVittie [Mon, 9 Jan 2017 14:09:35 +0000 (14:09 +0000)]
shortcuts: Use security-tracker.debian.org for [[!debcve]]
security.debian.org currently rejects HTTPS connections.
Simon McVittie [Mon, 9 Jan 2017 13:58:58 +0000 (13:58 +0000)]
git: don't redundantly pass "--" to git_sha1
git_sha1 already puts "--" before its arguments, so
git_sha1_file($dir, 'doc/index.mdwn')
would have incorrectly invoked
git rev-list --max-count=1 HEAD -- -- doc/index.mdwn
If there is no file in the wiki named "--", that's harmless, because
it merely names the latest revision in which either "--" or
"doc/index.mdwn" changed. However, it could return incorrect results
if there is somehow a file named "--".
Simon McVittie [Mon, 9 Jan 2017 13:42:07 +0000 (13:42 +0000)]
git: use parameters, not global state, to swap working directory
Simon McVittie [Mon, 9 Jan 2017 10:53:16 +0000 (10:53 +0000)]
Revert "git: Turn $git_dir into a stack"
Now that we have avoided using in_git_dir recursively, we don't need
the stack any more.
This reverts commit
39b8931ad31fe6b48afdc570caa459a0996c2092.
Simon McVittie [Sat, 7 Jan 2017 13:36:10 +0000 (13:36 +0000)]
git-cgi.t: when committing directly, make sure we have a valid author
In the environment used on ci.debian.net, we have neither a name nor
an email address.
Simon McVittie [Thu, 5 Jan 2017 17:47:50 +0000 (17:47 +0000)]
git: do not mix in_git_dir with eval{}
If we throw an exception (usually from run_or_die), in_git_dir won't
unshift the current directory from the stack. That's usually fine,
but in rcs_preprevert we catch exceptions and do some cleanup before
returning, for which we need the git directory to be the root and
not the temporary working tree.
Simon McVittie [Mon, 9 Jan 2017 11:38:16 +0000 (11:38 +0000)]
Use rel=nofollow microformat for comment authors
Simon McVittie [Mon, 9 Jan 2017 11:37:10 +0000 (11:37 +0000)]
Use rel=nofollow microformat for dynamic (CGI-related) URLs
Some of these might be relatively expensive to dereference or result
in messages being logged, and there's no reason why a search engine
should need to index them. (In particular, we'd probably prefer search
engines to index the rendered page, not its source code.)
Simon McVittie [Mon, 9 Jan 2017 13:02:43 +0000 (13:02 +0000)]
t/git-cgi.t: fix race condition
We need the changes to take place at least 1 second after the first
rebuild, so that the changed files are seen to have changed.
Amitai Schleier [Mon, 2 Jan 2017 11:57:35 +0000 (06:57 -0500)]
Enquote $background_command as surely intended.
https://anarc.at/openid/ [Fri, 30 Dec 2016 20:48:40 +0000 (16:48 -0400)]
add debian security tracker
Simon McVittie [Thu, 29 Dec 2016 21:34:10 +0000 (21:34 +0000)]
Merge remote-tracking branch 'origin/master'
Simon McVittie [Thu, 29 Dec 2016 20:47:17 +0000 (20:47 +0000)]
Simon McVittie [Thu, 29 Dec 2016 20:46:20 +0000 (20:46 +0000)]
git: Do not disable commit hook for temporary working tree
We exclude .git/hooks from symlinking into the temporary working tree,
which avoids the commit hook being run for the temporary branch anyway.
This avoids the wiki not being updated if an orthogonal change is
received in process A, while process B prepares a revert that is
subsequently cancelled.
Simon McVittie [Thu, 29 Dec 2016 20:35:46 +0000 (20:35 +0000)]
git: Attribute reverts to the user doing the revert, not the wiki itself
smcv [Thu, 29 Dec 2016 20:24:48 +0000 (16:24 -0400)]
add anchors for use in advisory to oss-security
Simon McVittie [Thu, 29 Dec 2016 20:08:49 +0000 (20:08 +0000)]
Clarify which versions of ikiwiki fixed CVE-2016-9645, -9646
Simon McVittie [Thu, 29 Dec 2016 17:37:51 +0000 (17:37 +0000)]
Simon McVittie [Thu, 29 Dec 2016 17:31:30 +0000 (17:31 +0000)]
Add CVE references for CVE-2016-9646, CVE-2016-9645
Thanks to the Debian security team for allocating these.
Simon McVittie [Thu, 29 Dec 2016 17:30:56 +0000 (17:30 +0000)]
Prune git remotes that are unreachable or unresponsive
Simon McVittie [Wed, 28 Dec 2016 21:03:01 +0000 (21:03 +0000)]
git: Add test coverage for reverting attachments
Simon McVittie [Wed, 28 Dec 2016 19:35:14 +0000 (19:35 +0000)]
git: write proposed attachment to temp file without going via system()
Simon McVittie [Wed, 28 Dec 2016 19:26:33 +0000 (19:26 +0000)]
git: change calling convention of safe_git to have named arguments
Simon McVittie [Wed, 28 Dec 2016 18:04:34 +0000 (18:04 +0000)]
git: Do the revert operation in a secondary working tree
This avoids leaving the git directory in an inconsistent state if the
host system is rebooted while we are processing a revert.
Simon McVittie [Wed, 28 Dec 2016 18:02:59 +0000 (18:02 +0000)]
git: Turn $git_dir into a stack
This will be necessary when we use a secondary working tree to do
reverts without leaving the primary working tree in an inconsistent
state.
Simon McVittie [Sat, 24 Dec 2016 15:58:10 +0000 (15:58 +0000)]
Add automated test for using the CGI with git, including CVE-2016-10026
Simon McVittie [Mon, 19 Dec 2016 13:48:56 +0000 (13:48 +0000)]
Try revert operations (on a branch) before approving them
Otherwise, we have a time-of-check/time-of-use vulnerability:
rcs_preprevert previously looked at what changed in the commit we are
reverting, not at what would result from reverting it now. In
particular, if some files were renamed since the commit we are
reverting, a revert of changes that were within the designated
subdirectory and allowed by check_canchange() might now affect
files that are outside the designated subdirectory or disallowed
by check_canchange().
It is not sufficient to disable rename detection, since git older
than 2.8.0rc0 (in particular the version in Debian stable) silently
accepts and ignores the relevant options.
OVE-
20161226-0002
Simon McVittie [Mon, 26 Dec 2016 16:30:43 +0000 (16:30 +0000)]
Revert "Tell `git revert` not to follow renames"
This doesn't work prior to git 2.8: `git revert` silently ignores the
option and succeeds. We will have to fix CVE-2016-10026 some other way.
This reverts commit
9cada49ed6ad24556dbe9861ad5b0a9f526167f9.
Simon McVittie [Sat, 24 Dec 2016 15:03:51 +0000 (15:03 +0000)]
Force CGI::FormBuilder->field to scalar context where necessary
CGI::FormBuilder->field has behaviour similar to the CGI.pm misfeature
we avoided in
f4ec7b0. Force it into scalar context where it is used
in an argument list.
This prevents two (relatively minor) commit metadata forgery
vulnerabilities:
* In the comments plugin, an attacker who was able to post a comment
could give it a user-specified author and author-URL even if the wiki
configuration did not allow for that, by crafting multiple values
to other fields.
* In the editpage plugin, an attacker who was able to edit a page
could potentially forge commit authorship by crafting multiple values
for the rcsinfo field.
The remaining plugins changed in this commit appear to have been
protected by use of explicit scalar prototypes for the called functions,
but have been changed anyway to make them more obviously correct.
In particular, checkpassword() in passwordauth has a known prototype,
so an attacker cannot trick it into treating multiple values of the
name field as being the username, password and field to check for.
OVE-
20161226-0001
Simon McVittie [Sat, 24 Dec 2016 14:35:01 +0000 (14:35 +0000)]
git: do not fail to commit if committer is anonymous
Simon McVittie [Sat, 24 Dec 2016 14:34:30 +0000 (14:34 +0000)]
git: don't issue a warning if rcsinfo is undefined
The intention here seems to be that $prev may be undefined, and the
only way that can legitimately happen is for $params{token} to be
undefined too.
Simon McVittie [Sat, 24 Dec 2016 12:27:21 +0000 (12:27 +0000)]
git_revert test: reinstate ikiwiki.setup, and make it work uninstalled
Previously it was relying on running with an installed ikiwiki
and being able to copy in recentchanges.mdwn and wikiicons/ from the
underlay in /usr. The underlay in ./underlays/basewiki can't be used
(yet) because ikiwiki doesn't allow following symlinks, even from
underlays.
I'd like to make ikiwiki follow symlinks whose destinations can be
verified to be safe (for example making it willing to expose
/usr/share/javascript to the web, but not /etc/passwd), at least from
underlays, but this is security-sensitive so I'm not going to rush
into it.
spalax [Mon, 26 Dec 2016 22:03:28 +0000 (18:03 -0400)]
Added a comment
smcv [Mon, 26 Dec 2016 19:26:25 +0000 (15:26 -0400)]
Added a comment
spalax [Sun, 25 Dec 2016 21:05:08 +0000 (17:05 -0400)]
Question about default timezone ":/etc/localtime"
Simon McVittie [Wed, 21 Dec 2016 13:03:32 +0000 (13:03 +0000)]
Add CVE references for CVE-2016-10026
intrigeri [Tue, 20 Dec 2016 10:26:22 +0000 (10:26 +0000)]
Replied.
Simon McVittie [Mon, 19 Dec 2016 21:20:41 +0000 (21:20 +0000)]
Simon McVittie [Mon, 19 Dec 2016 20:35:01 +0000 (20:35 +0000)]
smcv [Mon, 19 Dec 2016 20:33:48 +0000 (16:33 -0400)]
mention security contacts here too
Amitai Schleier [Mon, 19 Dec 2016 19:23:43 +0000 (20:23 +0100)]
Opt in to whatever spam this may bring.
Simon McVittie [Mon, 19 Dec 2016 17:29:27 +0000 (17:29 +0000)]
changelog
intrigeri [Sat, 19 Nov 2016 19:20:48 +0000 (19:20 +0000)]
Make pagestats output more deterministic.
Sort in lexical order the pages that have the same number of hits.
Simon McVittie [Mon, 19 Dec 2016 17:25:35 +0000 (17:25 +0000)]
Update changelog
Simon McVittie [Mon, 19 Dec 2016 16:59:43 +0000 (16:59 +0000)]
Restrict CSS matches on .header to not affect <tr>
Pandoc generates <tr class="header"> to hold <th> elements, and
we don't want to make those be display: block.
Signed-off-by: Simon McVittie <smcv@debian.org>
Simon McVittie [Mon, 19 Dec 2016 16:23:54 +0000 (16:23 +0000)]
List security contacts
We still don't have a security@ alias; listing personal emails is
unfortunately the next-best thing.
Simon McVittie [Mon, 19 Dec 2016 15:33:28 +0000 (15:33 +0000)]
Add a manual test for reverting git commits
Signed-off-by: Simon McVittie <smcv@debian.org>
Simon McVittie [Mon, 19 Dec 2016 13:48:56 +0000 (13:48 +0000)]
Tell `git revert` not to follow renames
Otherwise, we have an authorization bypass vulnerability: rcs_preprevert
looks at what changed in the commit we are reverting, not at what would
result from reverting it now. In particular, if some files were renamed
since the commit we are reverting, a revert of changes that were within
the designated subdirectory and allowed by check_canchange() might now
affect files that are outside the designated subdirectory or disallowed
by check_canchange().
Signed-off-by: Simon McVittie <smcv@debian.org>
smcv [Mon, 19 Dec 2016 17:23:06 +0000 (13:23 -0400)]
Added a comment: no, not supported
smcv [Mon, 19 Dec 2016 16:46:46 +0000 (12:46 -0400)]
rename bugs/img_tag_should_support_relative_size.mdwn to todo/img_tag_should_support_relative_size.mdwn
smcv [Mon, 19 Dec 2016 16:46:22 +0000 (12:46 -0400)]
Not possible as stated, but could be adapted into a valid feature request
smcv [Mon, 19 Dec 2016 13:55:58 +0000 (09:55 -0400)]
Simon McVittie [Mon, 19 Dec 2016 12:00:34 +0000 (12:00 +0000)]
cgitemplate: actually remove dead code
Signed-off-by: Simon McVittie <smcv@debian.org>
Simon McVittie [Mon, 19 Dec 2016 12:00:34 +0000 (12:00 +0000)]
cgitemplate: remove dead code
blipvert points out in [[bugs/use of $topurl in cgitemplate]] that this
variable has not been used since commit
a052771
"Now that we're always using HTML5, <base href> can be relative".
Signed-off-by: Simon McVittie <smcv@debian.org>
intrigeri [Sat, 17 Dec 2016 11:11:44 +0000 (11:11 +0000)]
Report authorization bypass via RCS revert.
intrigeri [Sun, 20 Nov 2016 07:00:20 +0000 (07:00 +0000)]
pagestats determinism: report bug + patch.
svetlana.nfshost
Juego [Wed, 16 Nov 2016 22:17:48 +0000 (18:17 -0400)]
Added custom solution
Juego [Wed, 16 Nov 2016 22:15:14 +0000 (18:15 -0400)]
rename forum/FastCGI_problem_on_Arch.mdwn to forum/__91__Solved__93__FastCGI_problem_on_Arch.mdwn
Amitai Schleier [Sun, 13 Nov 2016 03:02:58 +0000 (22:02 -0500)]
Update my personal site URL.
james@2468840dc8f314e837e1fde99a5fb1b884fa993a [Sun, 13 Nov 2016 00:08:40 +0000 (20:08 -0400)]
update my site links.
openmedi [Thu, 10 Nov 2016 17:09:41 +0000 (13:09 -0400)]
Added a comment
openmedi [Thu, 10 Nov 2016 17:06:23 +0000 (13:06 -0400)]
Added a comment
openmedi [Thu, 10 Nov 2016 17:03:00 +0000 (13:03 -0400)]
openmedi [Sun, 6 Nov 2016 19:36:24 +0000 (15:36 -0400)]
Added a comment
openmedi [Thu, 3 Nov 2016 22:13:15 +0000 (18:13 -0400)]
Added a comment
https://id.koumbit.net/anarcat [Tue, 1 Nov 2016 15:56:18 +0000 (11:56 -0400)]
consider portier as a successor to OpenID?
https://id.koumbit.net/anarcat [Tue, 1 Nov 2016 15:55:46 +0000 (11:55 -0400)]
introduce portier here as well, while i'm here
https://id.koumbit.net/anarcat [Tue, 1 Nov 2016 15:49:48 +0000 (11:49 -0400)]
nextgen persona?
https://id.koumbit.net/anarcat [Tue, 1 Nov 2016 15:45:31 +0000 (11:45 -0400)]
another look at bootstrap and packaging strategies
Amitai Schleier [Mon, 24 Oct 2016 01:00:36 +0000 (21:00 -0400)]
The C2 wiki appears to have moved.
openmedi [Sun, 16 Oct 2016 16:38:47 +0000 (12:38 -0400)]
icydee [Fri, 7 Oct 2016 11:08:35 +0000 (07:08 -0400)]
karsk [Fri, 30 Sep 2016 08:10:10 +0000 (04:10 -0400)]
That was a (curious) mistake.
This reverts commit
1bfe2e2e19bf45bac52c0cc0bc0b17cea64887b6
karsk [Fri, 30 Sep 2016 08:09:12 +0000 (04:09 -0400)]
removed
spalax [Tue, 27 Sep 2016 19:08:30 +0000 (15:08 -0400)]
Added a comment: Translating "Last edited"