diff options
| -rw-r--r-- | meta/recipes-extended/wget/wget-1.15/wget_cve-2014-4877.patch | 78 | ||||
| -rw-r--r-- | meta/recipes-extended/wget/wget_1.15.bb | 1 |
2 files changed, 79 insertions, 0 deletions
diff --git a/meta/recipes-extended/wget/wget-1.15/wget_cve-2014-4877.patch b/meta/recipes-extended/wget/wget-1.15/wget_cve-2014-4877.patch new file mode 100644 index 0000000000..bfcc36ea9e --- /dev/null +++ b/meta/recipes-extended/wget/wget-1.15/wget_cve-2014-4877.patch | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | From 18b0979357ed7dc4e11d4f2b1d7e0f5932d82aa7 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Darshit Shah <darnir@gmail.com> | ||
| 3 | Date: Sun, 07 Sep 2014 19:11:17 +0000 | ||
| 4 | Subject: CVE-2014-4877: Arbitrary Symlink Access | ||
| 5 | |||
| 6 | Wget was susceptible to a symlink attack which could create arbitrary | ||
| 7 | files, directories or symbolic links and set their permissions when | ||
| 8 | retrieving a directory recursively through FTP. This commit changes the | ||
| 9 | default settings in Wget such that Wget no longer creates local symbolic | ||
| 10 | links, but rather traverses them and retrieves the pointed-to file in | ||
| 11 | such a retrieval. | ||
| 12 | |||
| 13 | The old behaviour can be attained by passing the --retr-symlinks=no | ||
| 14 | option to the Wget invokation command. | ||
| 15 | --- | ||
| 16 | diff --git a/doc/wget.texi b/doc/wget.texi | ||
| 17 | index aef1f80..d7a4c94 100644 | ||
| 18 | --- a/doc/wget.texi | ||
| 19 | +++ b/doc/wget.texi | ||
| 20 | @@ -1883,17 +1883,18 @@ Preserve remote file permissions instead of permissions set by umask. | ||
| 21 | |||
| 22 | @cindex symbolic links, retrieving | ||
| 23 | @item --retr-symlinks | ||
| 24 | -Usually, when retrieving @sc{ftp} directories recursively and a symbolic | ||
| 25 | -link is encountered, the linked-to file is not downloaded. Instead, a | ||
| 26 | -matching symbolic link is created on the local filesystem. The | ||
| 27 | -pointed-to file will not be downloaded unless this recursive retrieval | ||
| 28 | -would have encountered it separately and downloaded it anyway. | ||
| 29 | - | ||
| 30 | -When @samp{--retr-symlinks} is specified, however, symbolic links are | ||
| 31 | -traversed and the pointed-to files are retrieved. At this time, this | ||
| 32 | -option does not cause Wget to traverse symlinks to directories and | ||
| 33 | -recurse through them, but in the future it should be enhanced to do | ||
| 34 | -this. | ||
| 35 | +By default, when retrieving @sc{ftp} directories recursively and a symbolic link | ||
| 36 | +is encountered, the symbolic link is traversed and the pointed-to files are | ||
| 37 | +retrieved. Currently, Wget does not traverse symbolic links to directories to | ||
| 38 | +download them recursively, though this feature may be added in the future. | ||
| 39 | + | ||
| 40 | +When @samp{--retr-symlinks=no} is specified, the linked-to file is not | ||
| 41 | +downloaded. Instead, a matching symbolic link is created on the local | ||
| 42 | +filesystem. The pointed-to file will not be retrieved unless this recursive | ||
| 43 | +retrieval would have encountered it separately and downloaded it anyway. This | ||
| 44 | +option poses a security risk where a malicious FTP Server may cause Wget to | ||
| 45 | +write to files outside of the intended directories through a specially crafted | ||
| 46 | +@sc{.listing} file. | ||
| 47 | |||
| 48 | Note that when retrieving a file (not a directory) because it was | ||
| 49 | specified on the command-line, rather than because it was recursed to, | ||
| 50 | diff --git a/src/init.c b/src/init.c | ||
| 51 | index 09557af..3bdaa48 100644 | ||
| 52 | --- a/src/init.c | ||
| 53 | +++ b/src/init.c | ||
| 54 | @@ -366,6 +366,22 @@ defaults (void) | ||
| 55 | |||
| 56 | opt.dns_cache = true; | ||
| 57 | opt.ftp_pasv = true; | ||
| 58 | + /* 2014-09-07 Darshit Shah <darnir@gmail.com> | ||
| 59 | + * opt.retr_symlinks is set to true by default. Creating symbolic links on the | ||
| 60 | + * local filesystem pose a security threat by malicious FTP Servers that | ||
| 61 | + * server a specially crafted .listing file akin to this: | ||
| 62 | + * | ||
| 63 | + * lrwxrwxrwx 1 root root 33 Dec 25 2012 JoCxl6d8rFU -> / | ||
| 64 | + * drwxrwxr-x 15 1024 106 4096 Aug 28 02:02 JoCxl6d8rFU | ||
| 65 | + * | ||
| 66 | + * A .listing file in this fashion makes Wget susceptiple to a symlink attack | ||
| 67 | + * wherein the attacker is able to create arbitrary files, directories and | ||
| 68 | + * symbolic links on the target system and even set permissions. | ||
| 69 | + * | ||
| 70 | + * Hence, by default Wget attempts to retrieve the pointed-to files and does | ||
| 71 | + * not create the symbolic links locally. | ||
| 72 | + */ | ||
| 73 | + opt.retr_symlinks = true; | ||
| 74 | |||
| 75 | #ifdef HAVE_SSL | ||
| 76 | opt.check_cert = true; | ||
| 77 | -- | ||
| 78 | cgit v0.9.0.2 | ||
diff --git a/meta/recipes-extended/wget/wget_1.15.bb b/meta/recipes-extended/wget/wget_1.15.bb index c2fcca740c..5375e4e504 100644 --- a/meta/recipes-extended/wget/wget_1.15.bb +++ b/meta/recipes-extended/wget/wget_1.15.bb | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \ | 1 | SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \ |
| 2 | file://fix_makefile.patch \ | 2 | file://fix_makefile.patch \ |
| 3 | file://wget_cve-2014-4877.patch \ | ||
| 3 | " | 4 | " |
| 4 | SRC_URI[md5sum] = "506df41295afc6486662cc47470b4618" | 5 | SRC_URI[md5sum] = "506df41295afc6486662cc47470b4618" |
| 5 | SRC_URI[sha256sum] = "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd" | 6 | SRC_URI[sha256sum] = "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd" |
