releasing version 2.14
parent
8df24a447d
commit
e15e3202eb
|
@ -245,6 +245,17 @@ sub prune ($) { #{{{
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
sub refresh () { #{{{
|
sub refresh () { #{{{
|
||||||
|
# security check, avoid following symlinks in the srcdir path
|
||||||
|
my $test=$config{srcdir};
|
||||||
|
while (length $test) {
|
||||||
|
if (-l $test) {
|
||||||
|
error("symlink found in srcdir path ($test)");
|
||||||
|
}
|
||||||
|
unless ($test=~s/\/+$//) {
|
||||||
|
$test=dirname($test);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# find existing pages
|
# find existing pages
|
||||||
my %exists;
|
my %exists;
|
||||||
my @files;
|
my @files;
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
ikiwiki (2.14) unstable; urgency=low
|
||||||
|
|
||||||
|
This version of ikiwiki is more picky about symlinks in the path leading
|
||||||
|
to the srcdir, and will refuse to use a srcdir specified by such a path.
|
||||||
|
This was necessary to avoid some potential exploits, but could potentially
|
||||||
|
break (semi-)working wikis. If your wiki has a srcdir path containing a
|
||||||
|
symlink, you should change it to use a path that does not.
|
||||||
|
|
||||||
|
-- Joey Hess <joeyh@debian.org> Mon, 26 Nov 2007 14:57:57 -0500
|
||||||
|
|
||||||
ikiwiki (2.9) unstable; urgency=low
|
ikiwiki (2.9) unstable; urgency=low
|
||||||
|
|
||||||
Since ikiwiki 2.0 was released, some limitiations have been added to what
|
Since ikiwiki 2.0 was released, some limitiations have been added to what
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
ikiwiki (2.14) UNRELEASED; urgency=low
|
ikiwiki (2.14) unstable; urgency=high
|
||||||
|
|
||||||
* Let CC be used to control what compiler is used to build wrappers.
|
* Let CC be used to control what compiler is used to build wrappers.
|
||||||
* Use 'cc' instead of gcc as the default compiler.
|
* Use 'cc' instead of gcc as the default compiler.
|
||||||
|
* Security fix: Ensure that there are no symlinks anywhere in the path
|
||||||
|
to the top of the srcdir. In certian unusual configurations, an attacker
|
||||||
|
who could commit to one of the parent directories of the srcdir could
|
||||||
|
use a symlink attack to cause ikiwiki to publish files elsewhere in the
|
||||||
|
filesystem. More details at <http://ikiwiki.info/security/#index29h2>
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Sun, 25 Nov 2007 15:49:49 -0500
|
-- Joey Hess <joeyh@debian.org> Mon, 26 Nov 2007 15:26:06 -0500
|
||||||
|
|
||||||
ikiwiki (2.13) unstable; urgency=low
|
ikiwiki (2.13) unstable; urgency=low
|
||||||
|
|
||||||
|
|
|
@ -64,3 +64,18 @@ My output:
|
||||||
rendering index.mdwn
|
rendering index.mdwn
|
||||||
|
|
||||||
Note that index.mdwn was only rendered when srcdir had a trailing slash.
|
Note that index.mdwn was only rendered when srcdir had a trailing slash.
|
||||||
|
|
||||||
|
> There are potential [[security]] issues with ikiwiki following a symlink,
|
||||||
|
> even if it's just a symlink at the top level of the srcdir.
|
||||||
|
> Consider ikiwiki.info's own setup, where the srcdir is ikiwiki/doc,
|
||||||
|
> checked out of revision control. A malicious committer could convert
|
||||||
|
> ikiwiki/doc into a symlink to /etc, then ikiwiki would happily publish
|
||||||
|
> all of /etc to the web.
|
||||||
|
>
|
||||||
|
> This kind of attack is why ikiwiki does not let File::Find follow
|
||||||
|
> symlinks when scanning the srcdir. By appending the slash, you're
|
||||||
|
> actually bypassing that check. Ikiwiki should not let you set
|
||||||
|
> up a potentially insecure configuration like that. More discussion of
|
||||||
|
> this hole [[here|security#index29h2]], and I've had to release
|
||||||
|
> a version of ikiwiki that explicitly checks for that, and fails to work.
|
||||||
|
> Sorry, but security trumps convenience. [[done]] --[[Joey]]
|
||||||
|
|
|
@ -315,3 +315,33 @@ This hole was discovered on 21 March 2007 and fixed the same day
|
||||||
with the release of ikiwiki 1.47. A fix was also backported to Debian etch,
|
with the release of ikiwiki 1.47. A fix was also backported to Debian etch,
|
||||||
as version 1.33.3. I recommend upgrading to one of these versions if your
|
as version 1.33.3. I recommend upgrading to one of these versions if your
|
||||||
wiki can be edited by third parties.
|
wiki can be edited by third parties.
|
||||||
|
|
||||||
|
## insufficient checking for symlinks in srcdir path
|
||||||
|
|
||||||
|
Ikiwiki did not check if path to the srcdir to contained a symlink. If an
|
||||||
|
attacker had commit access to the directories in the path, they could
|
||||||
|
change it to a symlink, causing ikiwiki to read and publish files that were
|
||||||
|
not intended to be published. (But not write to them due to other checks.)
|
||||||
|
|
||||||
|
In most configurations, this is not exploitable, because the srcdir is
|
||||||
|
checked out of revision control, but the directories leading up to it are
|
||||||
|
not. Or, the srcdir is a single subdirectory of a project in revision
|
||||||
|
control (ie, `ikiwiki/doc`), and if the subdirectory were a symlink,
|
||||||
|
ikiwiki would still typically not follow it.
|
||||||
|
|
||||||
|
There are at least two configurations where this is exploitable:
|
||||||
|
|
||||||
|
* If the srcdir is a deeper subdirectory of a project. For example if it is
|
||||||
|
`project/foo/doc`, an an attacker can replace `foo` with a symlink to a
|
||||||
|
directory containing a `doc` directory (not a symlink), then ikiwiki
|
||||||
|
would follow the symlink.
|
||||||
|
* If the path to the srcdir in ikiwiki's configuration ended in "/",
|
||||||
|
and the srcdir is a single subdirectory of a project, (ie,
|
||||||
|
`ikiwiki/doc/`), the srcdir could be a symlink and ikiwiki would not
|
||||||
|
notice.
|
||||||
|
|
||||||
|
This security hole was discovered on 26 November 2007 and fixed the same
|
||||||
|
da with the release of ikiwiki 2.14. I recommend upgrading to this version
|
||||||
|
if your wiki can be committed to by third parties. Alternatively, don't use
|
||||||
|
a trailing slash in the srcdir, and avoid the (unusual) configurations that
|
||||||
|
allow the security hole to be exploited.
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2007-11-17 16:11-0500\n"
|
"POT-Creation-Date: 2007-11-26 15:27-0500\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -485,47 +485,47 @@ msgid ""
|
||||||
"notifications"
|
"notifications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:263 ../IkiWiki/Render.pm:284
|
#: ../IkiWiki/Render.pm:274 ../IkiWiki/Render.pm:295
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "skipping bad filename %s"
|
msgid "skipping bad filename %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:326
|
#: ../IkiWiki/Render.pm:337
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "removing old page %s"
|
msgid "removing old page %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:359
|
#: ../IkiWiki/Render.pm:370
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "scanning %s"
|
msgid "scanning %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:364
|
#: ../IkiWiki/Render.pm:375
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "rendering %s"
|
msgid "rendering %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:376
|
#: ../IkiWiki/Render.pm:387
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "rendering %s, which links to %s"
|
msgid "rendering %s, which links to %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:393
|
#: ../IkiWiki/Render.pm:404
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "rendering %s, which depends on %s"
|
msgid "rendering %s, which depends on %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:431
|
#: ../IkiWiki/Render.pm:442
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "rendering %s, to update its backlinks"
|
msgid "rendering %s, to update its backlinks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:443
|
#: ../IkiWiki/Render.pm:454
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "removing %s, no longer rendered by %s"
|
msgid "removing %s, no longer rendered by %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../IkiWiki/Render.pm:469
|
#: ../IkiWiki/Render.pm:480
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "ikiwiki: cannot render %s"
|
msgid "ikiwiki: cannot render %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -583,13 +583,13 @@ msgid "failed to write %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: The parameter is a C filename.
|
#. translators: The parameter is a C filename.
|
||||||
#: ../IkiWiki/Wrapper.pm:107
|
#: ../IkiWiki/Wrapper.pm:109
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "failed to compile %s"
|
msgid "failed to compile %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. translators: The parameter is a filename.
|
#. translators: The parameter is a filename.
|
||||||
#: ../IkiWiki/Wrapper.pm:127
|
#: ../IkiWiki/Wrapper.pm:129
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "successfully generated %s"
|
msgid "successfully generated %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -614,7 +614,7 @@ msgstr ""
|
||||||
#. translators: preprocessor directive name,
|
#. translators: preprocessor directive name,
|
||||||
#. translators: the second a page name, the
|
#. translators: the second a page name, the
|
||||||
#. translators: third a number.
|
#. translators: third a number.
|
||||||
#: ../IkiWiki.pm:711
|
#: ../IkiWiki.pm:717
|
||||||
#, perl-format
|
#, perl-format
|
||||||
msgid "%s preprocessing loop detected on %s at depth %i"
|
msgid "%s preprocessing loop detected on %s at depth %i"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
Loading…
Reference in New Issue