Add 3 new advisories and patches.
This commit is contained in:
parent
b1f10282bc
commit
4f5662b555
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46499
13 changed files with 999 additions and 29 deletions
|
@ -9,23 +9,27 @@ Topic: Integer overflow in IGMP protocol
|
|||
|
||||
Category: core
|
||||
Module: igmp
|
||||
Announced: 2015-02-25
|
||||
Announced: 2015-02-25; Last revised on 2015-04-07
|
||||
Credits: Mateusz Kocielski, Logicaltrust,
|
||||
Marek Kroemeke, and 22733db72ab3ed94b5f8a1ffcde850251fe6f466
|
||||
Affects: All supported versions of FreeBSD.
|
||||
Corrected: 2015-02-25 05:43:02 UTC (stable/10, 10.1-STABLE)
|
||||
2015-02-25 05:56:16 UTC (releng/10.1, 10.1-RELEASE-p6)
|
||||
2015-02-25 05:56:16 UTC (releng/10.0, 10.0-RELEASE-p18)
|
||||
2015-02-25 05:43:02 UTC (stable/9, 9.3-STABLE)
|
||||
2015-02-25 05:56:54 UTC (releng/9.3, 9.3-RELEASE-p10)
|
||||
2015-02-25 05:43:02 UTC (stable/8, 8.4-STABLE)
|
||||
2015-02-25 05:56:54 UTC (releng/8.4, 8.4-RELEASE-p24)
|
||||
Corrected: 2015-04-07 20:20:24 UTC (stable/10, 10.1-STABLE)
|
||||
2015-04-07 20:21:01 UTC (releng/10.1, 10.1-RELEASE-p9)
|
||||
2015-04-07 20:20:44 UTC (stable/9, 9.3-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/9.3, 9.3-RELEASE-p13)
|
||||
2015-04-07 20:20:44 UTC (stable/8, 8.4-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/8.4, 8.4-RELEASE-p27)
|
||||
CVE Name: CVE-2015-1414
|
||||
|
||||
For general information regarding FreeBSD Security Advisories,
|
||||
including descriptions of the fields above, security branches, and the
|
||||
following sections, please visit <URL:https://security.FreeBSD.org/>.
|
||||
|
||||
0. Revision history
|
||||
|
||||
v1.0 2015-02-25 Initial release.
|
||||
v1.1 2015-04-07 Revised patch to address a potential overflow issue.
|
||||
|
||||
I. Background
|
||||
|
||||
IGMP is a control plane protocol used by IPv4 hosts and routers to propagate
|
||||
|
@ -73,6 +77,10 @@ detached PGP signature using your PGP utility.
|
|||
# fetch https://security.FreeBSD.org/patches/SA-15:04/igmp.patch.asc
|
||||
# gpg --verify igmp.patch.asc
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:04/igmp-errata.patch
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:04/igmp-errata.patch.asc
|
||||
# gpg --verify igmp-errata.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
|
@ -89,13 +97,12 @@ affected branch.
|
|||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/8/ r279263
|
||||
releng/8.4/ r279265
|
||||
stable/9/ r279263
|
||||
releng/9.3/ r279265
|
||||
stable/10/ r279263
|
||||
releng/10.0/ r279264
|
||||
releng/10.1/ r279264
|
||||
stable/8/ r281231
|
||||
releng/8.4/ r281233
|
||||
stable/9/ r281231
|
||||
releng/9.3/ r281233
|
||||
stable/10/ r281230
|
||||
releng/10.1/ r281232
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
To see which files were modified by a particular revision, run the
|
||||
|
@ -115,19 +122,19 @@ VII. References
|
|||
The latest revision of this advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-15:04.igmp.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.1 (FreeBSD)
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAEBCgAGBQJU7WjDAAoJEO1n7NZdz2rnjr8QAL0J0+4lRtPXRyDRX2xFSnzw
|
||||
sc3OpfmlTiD3pCFkebTYy3/+EK86iAL1ZELqlJe5mm2+pzhCQB13C4/exc0l1U6b
|
||||
tyiGXxhVi2/4SBrs6n9lmB/YhXkgtqaOQAcNaOD6sVbS1e5cBtjnG86oOq8tQ2qG
|
||||
c7Dvh3HTp9M5fDJtsI40SIpqy3FcKORBfpjYd8jONfSqMnLM2kM8xzwHSv4/X23e
|
||||
GlDKHtIi+1ylD/Qu7Z3S7hqXDTSYjZb1QHc7axDFB6X6nj2Rz3aWS2hPPTypFd3T
|
||||
zTj5DZjgiP7U2LhR40sWW68RYi21yzNUwbe0w5LeDah6Ymc5CDO2ujdm3HDQbQGH
|
||||
pA9QIOjzpgR64nWLIJfZ7jMxL3rCCaCW3NCB/iRXni2Ib/wt3ZDkJyEk/SF4K82H
|
||||
72U2u2qVjAsnhmwWK8gksBi9bEXk3TnX778bkrwm4rt1xOjACq8k66LAernoE4tB
|
||||
DkE0pO4QR+6XwFb5sJMG/3L9CmrhTp2pkPDBQDbSD+ngBs5V5mJOqVf7gB+UptnN
|
||||
Fh8OACO/5KtDkqBDsCljHxHZNaboVF4Q613+iF5CUc6SYOTkLnBDUE4Pq38vlzVB
|
||||
GdZMEo/hvsCbR4c2TmdKuvEkEqayxCxcv0DXiyTlVCecxSkaYvMXPwCKK43QtS7S
|
||||
het83QCUxaVuxLiznuwR
|
||||
=lkYC
|
||||
iQIcBAEBCgAGBQJVJD39AAoJEO1n7NZdz2rnewwQAN9xI01nzOO71Q7qP7xDq+wu
|
||||
RW2C+2A4viIZIId1od6GiDY7Qpigy1CMwHsae6qJ62R+D5F2x9vANV4U6AS44oNy
|
||||
2jDwbrByM7QQ3qeCh8NzCUvOwPuXyKsAGKV73t3QPk0leKdbqUyjTooWJtZAv0dN
|
||||
VgQ4VCQh+2ZlxjMT0igUScmCVqOncRUm33xKBLeTif5LZHi/afkR6CToMlACOvl3
|
||||
syJNhEeM+zYU9XLzb90hAjvqn1xLDkoS4qJNbrekj0/dI0jkgZdk18QAualwWgeZ
|
||||
i39Da6IQ4wCn8Sx9o8pc8NdtzHn37rmOcdzBIodzxa1vALmNhDWuBpIIysffsZvf
|
||||
ewVdI83pabRdZZxO1YAPjJi34CTXmvwf8Hit/hh0n1AO21lhr0NhwQzEn7gmLqSh
|
||||
JZYg46k6tNGy6qUa1NU/ywja0kLCG0KdR1FO9IKaN6TCgB30bpndGq1Y0esX1Mo8
|
||||
5xq/P/KoNPE9BzifyhbDBt77eEmfpiKIuQXQVP3B1n3KEDDUlSSeiz3x0h9ZOjfm
|
||||
vLb1hinfp1RPC4S72a0Zts6r60aee9dMWd/DvC8RqWQqEE0PUamipL2ClzBmOpTK
|
||||
F9b2y9776hfPV/mvGUwS7H63mAMJkMOTDGZn3WWIT3Dmr6Eru0/t1XXqCPB4cNUl
|
||||
uf5sxNtEDjXadkeM20lu
|
||||
=y2yR
|
||||
-----END PGP SIGNATURE-----
|
||||
|
|
157
share/security/advisories/FreeBSD-SA-15:07.ntp.asc
Normal file
157
share/security/advisories/FreeBSD-SA-15:07.ntp.asc
Normal file
|
@ -0,0 +1,157 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-SA-15:07.ntp Security Advisory
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Multiple vulnerabilities of ntp
|
||||
|
||||
Category: contrib
|
||||
Module: ntp
|
||||
Announced: 2015-04-07
|
||||
Credits: Network Time Foundation
|
||||
Affects: All supported versions of FreeBSD.
|
||||
Corrected: 2015-04-07 20:20:24 UTC (stable/10, 10.1-STABLE)
|
||||
2015-04-07 20:21:01 UTC (releng/10.1, 10.1-RELEASE-p9)
|
||||
2015-04-07 20:20:44 UTC (stable/9, 9.3-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/9.3, 9.3-RELEASE-p13)
|
||||
2015-04-07 20:20:44 UTC (stable/8, 8.4-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/8.4, 8.4-RELEASE-p27)
|
||||
CVE Name: CVE-2014-9297, CVE-2015-1798, CVE-2015-1799
|
||||
|
||||
For general information regarding FreeBSD Security Advisories,
|
||||
including descriptions of the fields above, security branches, and the
|
||||
following sections, please visit <URL:https://security.FreeBSD.org/>.
|
||||
|
||||
I. Background
|
||||
|
||||
The ntpd(8) daemon is an implementation of the Network Time Protocol (NTP)
|
||||
used to synchronize the time of a computer system to a reference time
|
||||
source.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The vallen packet value is not validated in several code paths in
|
||||
ntp_crypto.c. [CVE-2014-9297]
|
||||
|
||||
When ntpd(8) is configured to use a symmetric key to authenticate a remote
|
||||
NTP server/peer, it checks if the NTP message authentication code (MAC)
|
||||
in received packets is valid, but not that there actually is any MAC
|
||||
included, and packets without a MAC are accepted as if they had a valid
|
||||
MAC. [CVE-2015-1798]
|
||||
|
||||
NTP state variables are updated prior to validating the received packets.
|
||||
[CVE-2015-1799]
|
||||
|
||||
III. Impact
|
||||
|
||||
A remote attacker who can send specifically crafted packets may be able
|
||||
to reveal memory contents of ntpd(8) or cause it to crash, when ntpd(8)
|
||||
is configured to use autokey. [CVE-2014-9297]
|
||||
|
||||
A man-in-the-middle (MITM) attacker can send specially forged packets
|
||||
that would be accepted by the client/peer without having to know the
|
||||
symmetric key. [CVE-2015-1798]
|
||||
|
||||
An attacker knowing that NTP hosts A and B are peering with each other
|
||||
(symmetric association) can periodically send a specially crafted or
|
||||
replayed packet which will break the synchronization between the two
|
||||
peers due to transmit timestamp mismatch, preventing the two nodes from
|
||||
synchronizing with each other, even when authentication is enabled.
|
||||
[CVE-2015-1799]
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, but systems not running ntpd(8) are not
|
||||
affected.
|
||||
|
||||
V. Solution
|
||||
|
||||
Perform one of the following:
|
||||
|
||||
1) Upgrade your vulnerable system to a supported FreeBSD stable or
|
||||
release / security branch (releng) dated after the correction date.
|
||||
|
||||
2) To update your vulnerable system via a binary patch:
|
||||
|
||||
Systems running a RELEASE version of FreeBSD on the i386 or amd64
|
||||
platforms can be updated via the freebsd-update(8) utility:
|
||||
|
||||
# freebsd-update fetch
|
||||
# freebsd-update install
|
||||
|
||||
3) To update your vulnerable system via a source code patch:
|
||||
|
||||
The following patches have been verified to apply to the applicable
|
||||
FreeBSD release branches.
|
||||
|
||||
a) Download the relevant patch from the location below, and verify the
|
||||
detached PGP signature using your PGP utility.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:07/ntp.patch
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:07/ntp.patch.asc
|
||||
# gpg --verify ntp.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile the operating system using buildworld and installworld as
|
||||
described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
|
||||
|
||||
Restart the applicable daemons, or reboot the system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/8/ r281231
|
||||
releng/8.4/ r281233
|
||||
stable/9/ r281231
|
||||
releng/9.3/ r281233
|
||||
stable/10/ r281230
|
||||
releng/10.1/ r281232
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
To see which files were modified by a particular revision, run the
|
||||
following command, replacing NNNNNN with the revision number, on a
|
||||
machine with Subversion installed:
|
||||
|
||||
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
|
||||
|
||||
Or visit the following URL, replacing NNNNNN with the revision number:
|
||||
|
||||
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
|
||||
|
||||
VII. References
|
||||
|
||||
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9297>
|
||||
|
||||
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1798>
|
||||
|
||||
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1799>
|
||||
|
||||
The latest revision of this advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-15:07.ntp.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAEBCgAGBQJVJD4CAAoJEO1n7NZdz2rn4doQAKwA67MgX6jiCS4dm1roREi+
|
||||
G1moTCtqO8LXzH3nOOOk6R/MqFGOs6Jq8D+K/YmdD+4l3c/qCNR0qtv0YcVL0kE+
|
||||
+xfaIYoGxTzlPjEfpWtceCM0wcAThaF8085hi0IAzG7ozhKPt+Inv33ISgos5c7h
|
||||
zYcbTqBYgQqcJGWdftnYpZ1Nxvoa3wiOlxsOMa4qnNeUakeXcGLZ+1XB5pLjXMZF
|
||||
dHfKhMS6KxcUdHoPgOj468D3bQE05puLk13Kjy+Ti38GhcgMROAsMZVOzgno3J7g
|
||||
D7Hk4dR1dms+6xcSJ0BV4ej0ZfypGv0xiFmUiTk/p7AVbnqrChyjvGca+8reu+Gc
|
||||
Ks/67oZjP5rc0glvRFgjJBmQV/xK2rUK805e4eAm8qBecRjDv6M3mUmPdw5BlgcA
|
||||
7fcj4VdGkOzLB0Vj7uJFjf3p9cyT+x8yvMtknxehiYmrYnFDsM5d7lcv0+KnRzb2
|
||||
3bt6maO40wqWIcLErFthcT/nLP+wi35aykNIbGh7PXvqL92gWX+h/xB6YY9Ouo4N
|
||||
hb32W/F5O50MjL6BeY+k5J6usoFrk0EHWK+2Fxm2/AA/5K/JnryWN44F8PVPNzxE
|
||||
f+Vb6CzxBvmflpa/29tF/wSD0oU78AhuShtVrnEVT5ZWJj+/PHBZtcLk2Z+s5hgd
|
||||
hKFvV5Xqix0/U//+yGhj
|
||||
=1fHm
|
||||
-----END PGP SIGNATURE-----
|
119
share/security/advisories/FreeBSD-SA-15:08.bsdinstall.asc
Normal file
119
share/security/advisories/FreeBSD-SA-15:08.bsdinstall.asc
Normal file
|
@ -0,0 +1,119 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-SA-15:08.bsdinstall Security Advisory
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Insecure default GELI keyfile permissions
|
||||
|
||||
Category: core
|
||||
Module: bsdinstall
|
||||
Announced: 2015-04-07
|
||||
Credits: Pierre Kim
|
||||
Affects: FreeBSD 10.1.
|
||||
Corrected: 2015-04-07 20:20:24 UTC (stable/10, 10.1-STABLE)
|
||||
2015-04-07 20:21:01 UTC (releng/10.1, 10.1-RELEASE-p9)
|
||||
CVE Name: CVE-2015-1415
|
||||
|
||||
For general information regarding FreeBSD Security Advisories,
|
||||
including descriptions of the fields above, security branches, and the
|
||||
following sections, please visit <URL:https://security.FreeBSD.org/>.
|
||||
|
||||
I. Background
|
||||
|
||||
The GEOM ELI class, or geli(8) implements encryption on GEOM providers which
|
||||
supports various cryptographic encryption and authentication methods as
|
||||
well as hardware acceleration. Each geli(8) provider has two key slots,
|
||||
and each slot holds a copy of its master key encrypted by a keyfile and/or
|
||||
a passphrase chosen by the system administrator.
|
||||
|
||||
The bsdinstall(8) installer is the default system installer of FreeBSD since
|
||||
FreeBSD 10.0-RELEASE.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The default permission set by bsdinstall(8) installer when configuring full
|
||||
disk encrypted ZFS is too open.
|
||||
|
||||
III. Impact
|
||||
|
||||
A local attacker may be able to get a copy of the geli(8) provider's
|
||||
keyfile which is located at a fixed location.
|
||||
|
||||
IV. Solution
|
||||
|
||||
Note well: due to the nature of this issue, there is no way to fix this
|
||||
issue for already installed systems without human intervention. System
|
||||
administrators are advised to assume that the keyfile have already been
|
||||
leaked and a new keyfile is necessary.
|
||||
|
||||
The system administrator can create a new keyfile with the correct
|
||||
permissions, and change the key slot that holds the master key encrypted
|
||||
with the old keyfile.
|
||||
|
||||
For example, if the GELI provider is /dev/ada0, the system administrator
|
||||
can do the following:
|
||||
|
||||
# umask 077
|
||||
# dd if=/dev/random of=/boot/encryption.key.new bs=4096 count=1
|
||||
# umask 022
|
||||
# geli setkey -K /boot/encryption.key.new /dev/ada0p3
|
||||
Enter new passphrase:
|
||||
Reenter new passphrase:
|
||||
|
||||
(Repeat the geli setkey command if multiple providers are used)
|
||||
|
||||
# mv /boot/encryption.key.new /boot/encryption.key
|
||||
# ls -l /boot/encryption.key
|
||||
|
||||
Make sure that the new /boot/encryption.key can only be read by root.
|
||||
|
||||
The FreeBSD stable and security branch (releng) and the changes are mainly
|
||||
intended for system integrators who build their own installation image for
|
||||
new installations.
|
||||
|
||||
V. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r281230
|
||||
releng/10.1/ r281232
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
To see which files were modified by a particular revision, run the
|
||||
following command, replacing NNNNNN with the revision number, on a
|
||||
machine with Subversion installed:
|
||||
|
||||
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
|
||||
|
||||
Or visit the following URL, replacing NNNNNN with the revision number:
|
||||
|
||||
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
|
||||
|
||||
VI. References
|
||||
|
||||
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1415>
|
||||
|
||||
The latest revision of this advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-15:08.bsdinstall.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAEBCgAGBQJVJD4CAAoJEO1n7NZdz2rntF0P/0vVZ6W5xpIAm5K7eS184GaJ
|
||||
TuQ0E5XdqH1i6smYxAwUHtINFmAJ11cv+KwAbwFwazdB9jy4def6kwBZ/PE1y1M9
|
||||
OGi/JD3RghL0RrrrIzADVz5Z4Hi401BmLN7aOW9REX75/o82XqGXTRlDmow5z22D
|
||||
/B4NRNQ0p6cwmwh179HHuJPgQsDmL3mBkgn4oMv1036q9VjP5V/b+i2Ja/I6oCa/
|
||||
ZJhdEg17P9ek6GBna/fV7yo1Cr+A7v9aSUFcN9E8VqoWGn06jO0sLjWCC9Lrc6sZ
|
||||
KAgFbxNuPW/eZOE447DIu9jrgE8xxBFn6skeW81jsPsT4FsF/7KWG+dxBOa9XxOH
|
||||
XQTzc9sx3tsRVUzEBUGHRpPh/ZbkqtqQ5MYrAYk66NJ1NFqbrhY08mqzOd4+Sr7a
|
||||
CUMV/1vD0pCRME8bgIVupKciIw9y6QYWo2Gm+BJIqAw7L8EaEhaN7nnBxDbRehlj
|
||||
PdRYxHO4aQLIxdaV4dtDx3SX+njRxyVP/0OOSVQz1laiKadsRO2YQe+IhVoFhU5v
|
||||
fLSoBI+8mX8Sc65UasqsuNXC3G2c6XXKkLBCYzmL90R2pwPtxbQRTDVGMmG9fyyc
|
||||
b4w+yindLcwKXxKJryQWswAbv6hBQunAoCaVsqiIdF2N9Psrlr3FhkU//JbvrxA1
|
||||
COcciZEksTS0JwEpOGi5
|
||||
=wg1b
|
||||
-----END PGP SIGNATURE-----
|
153
share/security/advisories/FreeBSD-SA-15:09.ipv6.asc
Normal file
153
share/security/advisories/FreeBSD-SA-15:09.ipv6.asc
Normal file
|
@ -0,0 +1,153 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-SA-15:09.ipv6 Security Advisory
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Denial of Service with IPv6 Router Advertisements
|
||||
|
||||
Category: core
|
||||
Module: ipv6
|
||||
Announced: 2015-04-07
|
||||
Credits: Dennis Ljungmark
|
||||
Affects: All supported versions of FreeBSD.
|
||||
Corrected: 2015-04-07 20:20:24 UTC (stable/10, 10.1-STABLE)
|
||||
2015-04-07 20:21:01 UTC (releng/10.1, 10.1-RELEASE-p9)
|
||||
2015-04-07 20:20:44 UTC (stable/9, 9.3-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/9.3, 9.3-RELEASE-p13)
|
||||
2015-04-07 20:20:44 UTC (stable/8, 8.4-STABLE)
|
||||
2015-04-07 20:21:23 UTC (releng/8.4, 8.4-RELEASE-p27)
|
||||
CVE Name: CVE-2015-2923
|
||||
|
||||
For general information regarding FreeBSD Security Advisories,
|
||||
including descriptions of the fields above, security branches, and the
|
||||
following sections, please visit <URL:https://security.FreeBSD.org/>.
|
||||
|
||||
I. Background
|
||||
|
||||
IPv6 nodes use the Neighbor Discovery protocol to determine the link-layer
|
||||
address of other nodes, find routers, and maintain reachability information.
|
||||
Routers advertise their presence together with various link and Internet
|
||||
parameters either periodically, or in response to a Router Solicitation
|
||||
message, using Router Advertisement (ICMPv6 type 134).
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The Neighbor Discover Protocol allows a local router to advertise a
|
||||
suggested Current Hop Limit value of a link, which will replace
|
||||
Current Hop Limit on an interface connected to the link on the FreeBSD
|
||||
system.
|
||||
|
||||
III. Impact
|
||||
|
||||
When the Current Hop Limit (similar to IPv4's TTL) is small, IPv6 packets
|
||||
may get dropped before they reached their destinations.
|
||||
|
||||
By sending specifically crafted Router Advertisement packets, an attacker
|
||||
on the local network can cause the FreeBSD system to lose the ability to
|
||||
communicate with another IPv6 node on a different network.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
Only systems that are manually configured to use "accept_rtadv"
|
||||
ifconfig(8) flag on an interface are affected.
|
||||
|
||||
The system administrator may decide to disable acceptance of Router
|
||||
Advertisements from untrusted network in a per-interface basis, by
|
||||
removing accept_rtadv flag at run time using ifconfig(8):
|
||||
|
||||
ifconfig em0 inet6 -accept_rtadv
|
||||
|
||||
Note that an interface does not accept Router Advertisement messages
|
||||
by default even if an IPv6 address is configured. One can know
|
||||
whether an interface is accepting Router Advertisement message or not
|
||||
from existence of ACCEPT_RTADV in "nd6 options" line in an output of
|
||||
ifconfig(8):
|
||||
|
||||
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
|
||||
|
||||
V. Solution
|
||||
|
||||
Perform one of the following:
|
||||
|
||||
1) Upgrade your vulnerable system to a supported FreeBSD stable or
|
||||
release / security branch (releng) dated after the correction date.
|
||||
|
||||
2) To update your vulnerable system via a binary patch:
|
||||
|
||||
Systems running a RELEASE version of FreeBSD on the i386 or amd64
|
||||
platforms can be updated via the freebsd-update(8) utility:
|
||||
|
||||
# freebsd-update fetch
|
||||
# freebsd-update install
|
||||
|
||||
3) To update your vulnerable system via a source code patch:
|
||||
|
||||
The following patches have been verified to apply to the applicable
|
||||
FreeBSD release branches.
|
||||
|
||||
a) Download the relevant patch from the location below, and verify the
|
||||
detached PGP signature using your PGP utility.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:09/ipv6.patch
|
||||
# fetch https://security.FreeBSD.org/patches/SA-15:09/ipv6.patch.asc
|
||||
# gpg --verify ipv6.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/8/ r281231
|
||||
releng/8.4/ r281233
|
||||
stable/9/ r281231
|
||||
releng/9.3/ r281233
|
||||
stable/10/ r281230
|
||||
releng/10.1/ r281232
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
To see which files were modified by a particular revision, run the
|
||||
following command, replacing NNNNNN with the revision number, on a
|
||||
machine with Subversion installed:
|
||||
|
||||
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
|
||||
|
||||
Or visit the following URL, replacing NNNNNN with the revision number:
|
||||
|
||||
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
|
||||
|
||||
VII. References
|
||||
|
||||
<URL:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-2923>
|
||||
|
||||
The latest revision of this advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-SA-15:09.ipv6.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAEBCgAGBQJVJD4CAAoJEO1n7NZdz2rn13cQANJCk2LXSX8GDHGzWnD+D5gN
|
||||
rNC4Q8n9CnN80ZO/0Pk0Xx2VAtr3CKxflBTXBKISKuY+dWOzNvuUuUUkrB9SlyTj
|
||||
MYpqAljnBT0JkosGGBKJwt39DjW34HWlaj9wEPr1SdIq5vQO0cXS2glVPI/CQuy3
|
||||
NwnpaAmftAG4eMSYojOeodXniha/ZasFap5Zj+1dgofFHEP87zxefP2IamG1Cq72
|
||||
d8YJSCD8yy51mZ7dVFM29R3FAFdMpponci31dXGb5p8pj0yzVfvI/HF1MRK+x8Nz
|
||||
R0/jFOHY4TR26BfKsc4Nc6Ze7jdZHUP1qWoL2O6HiLVqws0nQp3jma7FkMrUMuui
|
||||
H9kAQaIc27tJOkSK4Gdc/dwzHgb3xr2fNfOjvbUv3VNjzijTzbzKfRlVH77EAxAi
|
||||
sQfUcql/toGdC/QaOlhC8+v5jHdwkLdpfRc4QdsV1rKDAA8mj068sJQS/yAig8E8
|
||||
QUNmB3UK1QsX3tmy0JuDJk7tr/jjnhl2Jt9Skvm70xUiA7G05Z1qouErkIAjwikY
|
||||
zQSPpSQebi3am9TtK/GViOjEVpWLYzLFYo6laR8wMw9eJsj0xlF8Qqz+0HudqfSt
|
||||
lMOfpVfUmBSIxlFdiIzMBfbpLdD1gSo4oBLIYA/xw7UtDMiWi2Iji/mBY1Jg/i5V
|
||||
ZCTwZmnmaVuPcsGOzv5W
|
||||
=A2Am
|
||||
-----END PGP SIGNATURE-----
|
32
share/security/patches/SA-15:04/igmp-errata.patch
Normal file
32
share/security/patches/SA-15:04/igmp-errata.patch
Normal file
|
@ -0,0 +1,32 @@
|
|||
Index: sys/netinet/igmp.c
|
||||
===================================================================
|
||||
--- sys/netinet/igmp.c (revision 280920)
|
||||
+++ sys/netinet/igmp.c (working copy)
|
||||
@@ -1534,7 +1534,6 @@ igmp_input(struct mbuf *m, int off)
|
||||
struct igmpv3 *igmpv3;
|
||||
uint16_t igmpv3len;
|
||||
uint16_t nsrc;
|
||||
- int srclen;
|
||||
|
||||
IGMPSTAT_INC(igps_rcv_v3_queries);
|
||||
igmpv3 = (struct igmpv3 *)igmp;
|
||||
@@ -1542,8 +1541,8 @@ igmp_input(struct mbuf *m, int off)
|
||||
* Validate length based on source count.
|
||||
*/
|
||||
nsrc = ntohs(igmpv3->igmp_numsrc);
|
||||
- srclen = sizeof(struct in_addr) * nsrc;
|
||||
- if (nsrc * sizeof(in_addr_t) > srclen) {
|
||||
+ if (nsrc * sizeof(in_addr_t) >
|
||||
+ UINT16_MAX - iphlen - IGMP_V3_QUERY_MINLEN) {
|
||||
IGMPSTAT_INC(igps_rcv_tooshort);
|
||||
return;
|
||||
}
|
||||
@@ -1552,7 +1551,7 @@ igmp_input(struct mbuf *m, int off)
|
||||
* this scope.
|
||||
*/
|
||||
igmpv3len = iphlen + IGMP_V3_QUERY_MINLEN +
|
||||
- srclen;
|
||||
+ sizeof(struct in_addr) * nsrc;
|
||||
if ((m->m_flags & M_EXT ||
|
||||
m->m_len < igmpv3len) &&
|
||||
(m = m_pullup(m, igmpv3len)) == NULL) {
|
17
share/security/patches/SA-15:04/igmp-errata.patch.asc
Normal file
17
share/security/patches/SA-15:04/igmp-errata.patch.asc
Normal file
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAABCgAGBQJVJD4RAAoJEO1n7NZdz2rnrYQQANA/aVjCvRZArJcQTrv6KZQx
|
||||
UA3GLXRG+gSlE3tVo7zx1qFvQGTET6lDNM8C8shj//biaevNxjRlagFDQWHUoh7U
|
||||
5HYfImnCAkIsO4OvAeJWHj+Xfskf22VRNGodou1PpVEco3XAFCQKMmsdMDUetiIw
|
||||
zgXEMcONQFgUBf0g8e2YS0UPtJDwaxTFkGs/4uQvOoKLqCNf5esUDGKNeKMp85wg
|
||||
pFt6TCIsXIoQidFCFz6TWSjXLin9QKhGxSngxKrM9LnkM4l3b7bsh1JoqIrsXQ/W
|
||||
lIFZnInVYsRrbq/RUaYeh/2FzYGFfks1nKH1Gyg9I/uy0hF1NMig7egUP5cnh7GU
|
||||
emXVUU6CYvkh4ndmPFKxlWgnf4PBJAebjzFrZtNK8OY6Uz8FrLZo1HuSFhNFdd6k
|
||||
MRncaZ4rY7AyYYgXZKu5563+ztQh1tAvrSbXAN9adk1QH6t5DmWvOopK7vVJ3fTD
|
||||
KLcXOQ2wmmr2rmQiSDLg9pUAi7ewu1sUzSbd2IML97ovtALDWU7VMWoQsBAlfHfP
|
||||
GaY3ncCxsiJW+87udH4kGfDXRkY85Io7VRGEblFaz+AsF4xisMTboXcYy+z+SZH4
|
||||
4QXsqoDoTLwZ4XZaIaNW8Z/PdB81j2WPvDbxdRD4DtZkx47KZw1a8SU3tRzlVyaS
|
||||
Cboc9S/wjp6xphvBNRJl
|
||||
=WOIN
|
||||
-----END PGP SIGNATURE-----
|
377
share/security/patches/SA-15:07/ntp.patch
Normal file
377
share/security/patches/SA-15:07/ntp.patch
Normal file
|
@ -0,0 +1,377 @@
|
|||
Index: contrib/ntp/ntpd/ntp_crypto.c
|
||||
===================================================================
|
||||
--- contrib/ntp/ntpd/ntp_crypto.c (revision 280717)
|
||||
+++ contrib/ntp/ntpd/ntp_crypto.c (working copy)
|
||||
@@ -93,6 +93,7 @@
|
||||
#define TAI_1972 10 /* initial TAI offset (s) */
|
||||
#define MAX_LEAP 100 /* max UTC leapseconds (s) */
|
||||
#define VALUE_LEN (6 * 4) /* min response field length */
|
||||
+#define MAX_VALLEN (65535 - VALUE_LEN)
|
||||
#define YEAR (60 * 60 * 24 * 365) /* seconds in year */
|
||||
|
||||
/*
|
||||
@@ -137,8 +138,8 @@ static u_int ident_scheme = 0; /* server identity
|
||||
*/
|
||||
static int crypto_verify P((struct exten *, struct value *,
|
||||
struct peer *));
|
||||
-static int crypto_encrypt P((struct exten *, struct value *,
|
||||
- keyid_t *));
|
||||
+static int crypto_encrypt P((const u_char *, u_int, keyid_t *,
|
||||
+ struct value *));
|
||||
static int crypto_alice P((struct peer *, struct value *));
|
||||
static int crypto_alice2 P((struct peer *, struct value *));
|
||||
static int crypto_alice3 P((struct peer *, struct value *));
|
||||
@@ -446,6 +447,12 @@ crypto_recv(
|
||||
tstamp = ntohl(ep->tstamp);
|
||||
fstamp = ntohl(ep->fstamp);
|
||||
vallen = ntohl(ep->vallen);
|
||||
+ /*
|
||||
+ * Bug 2761: I hope this isn't too early...
|
||||
+ */
|
||||
+ if ( vallen == 0
|
||||
+ || len - VALUE_LEN < vallen)
|
||||
+ return XEVNT_LEN;
|
||||
}
|
||||
switch (code) {
|
||||
|
||||
@@ -488,7 +495,7 @@ crypto_recv(
|
||||
break;
|
||||
|
||||
if (vallen == 0 || vallen > MAXHOSTNAME ||
|
||||
- len < VALUE_LEN + vallen) {
|
||||
+ len - VALUE_LEN < vallen) {
|
||||
rval = XEVNT_LEN;
|
||||
break;
|
||||
}
|
||||
@@ -1250,7 +1257,8 @@ crypto_xmit(
|
||||
vallen = ntohl(ep->vallen);
|
||||
if (vallen == 8) {
|
||||
strcpy(certname, sys_hostname);
|
||||
- } else if (vallen == 0 || vallen > MAXHOSTNAME) {
|
||||
+ } else if (vallen == 0 || vallen > MAXHOSTNAME ||
|
||||
+ len - VALUE_LEN < vallen) {
|
||||
rval = XEVNT_LEN;
|
||||
break;
|
||||
|
||||
@@ -1407,7 +1415,10 @@ crypto_xmit(
|
||||
* anything goes wrong.
|
||||
*/
|
||||
case CRYPTO_COOK | CRYPTO_RESP:
|
||||
- if ((opcode & 0xffff) < VALUE_LEN) {
|
||||
+ vallen = ntohl(ep->vallen); /* Must be <64k */
|
||||
+ if ( vallen == 0
|
||||
+ || (vallen >= MAX_VALLEN)
|
||||
+ || (opcode & 0x0000ffff) < VALUE_LEN + vallen) {
|
||||
rval = XEVNT_LEN;
|
||||
break;
|
||||
}
|
||||
@@ -1420,10 +1431,11 @@ crypto_xmit(
|
||||
}
|
||||
tcookie = peer->pcookie;
|
||||
}
|
||||
- if ((rval = crypto_encrypt(ep, &vtemp, &tcookie)) ==
|
||||
- XEVNT_OK)
|
||||
+ if ((rval = crypto_encrypt((const u_char *)ep->pkt, vallen, &tcookie, &vtemp))
|
||||
+ == XEVNT_OK) {
|
||||
len += crypto_send(fp, &vtemp);
|
||||
- value_free(&vtemp);
|
||||
+ value_free(&vtemp);
|
||||
+ }
|
||||
break;
|
||||
|
||||
/*
|
||||
@@ -1558,10 +1570,15 @@ crypto_verify(
|
||||
* are rounded up to the next word.
|
||||
*/
|
||||
vallen = ntohl(ep->vallen);
|
||||
+ if ( vallen == 0
|
||||
+ || vallen > MAX_VALLEN)
|
||||
+ return (XEVNT_LEN);
|
||||
i = (vallen + 3) / 4;
|
||||
siglen = ntohl(ep->pkt[i++]);
|
||||
- if (len < VALUE_LEN + ((vallen + 3) / 4) * 4 + ((siglen + 3) /
|
||||
- 4) * 4)
|
||||
+ if ( siglen > MAX_VALLEN
|
||||
+ || len - VALUE_LEN < ((vallen + 3) / 4) * 4
|
||||
+ || len - VALUE_LEN - ((vallen + 3) / 4) * 4
|
||||
+ < ((siglen + 3) / 4) * 4)
|
||||
return (XEVNT_LEN);
|
||||
|
||||
/*
|
||||
@@ -1627,6 +1644,7 @@ crypto_verify(
|
||||
* avoid doing the sign exchange.
|
||||
*/
|
||||
EVP_VerifyInit(&ctx, peer->digest);
|
||||
+ /* XXX: the "+ 12" needs to be at least documented... */
|
||||
EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen + 12);
|
||||
if (EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen, pkey) <= 0)
|
||||
return (XEVNT_SIG);
|
||||
@@ -1641,10 +1659,10 @@ crypto_verify(
|
||||
|
||||
|
||||
/*
|
||||
- * crypto_encrypt - construct encrypted cookie and signature from
|
||||
- * extension field and cookie
|
||||
+ * crypto_encrypt - construct vp (encrypted cookie and signature) from
|
||||
+ * the public key and cookie.
|
||||
*
|
||||
- * Returns
|
||||
+ * Returns:
|
||||
* XEVNT_OK success
|
||||
* XEVNT_PUB bad or missing public key
|
||||
* XEVNT_CKY bad or missing cookie
|
||||
@@ -1652,9 +1670,10 @@ crypto_verify(
|
||||
*/
|
||||
static int
|
||||
crypto_encrypt(
|
||||
- struct exten *ep, /* extension pointer */
|
||||
- struct value *vp, /* value pointer */
|
||||
- keyid_t *cookie /* server cookie */
|
||||
+ const u_char *ptr, /* Public Key */
|
||||
+ u_int vallen, /* Length of Public Key */
|
||||
+ keyid_t *cookie, /* server cookie */
|
||||
+ struct value *vp /* value pointer */
|
||||
)
|
||||
{
|
||||
EVP_PKEY *pkey; /* public key */
|
||||
@@ -1661,15 +1680,11 @@ crypto_encrypt(
|
||||
EVP_MD_CTX ctx; /* signature context */
|
||||
tstamp_t tstamp; /* NTP timestamp */
|
||||
u_int32 temp32;
|
||||
- u_int len;
|
||||
- u_char *ptr;
|
||||
|
||||
/*
|
||||
* Extract the public key from the request.
|
||||
*/
|
||||
- len = ntohl(ep->vallen);
|
||||
- ptr = (u_char *)ep->pkt;
|
||||
- pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &ptr, len);
|
||||
+ pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &ptr, vallen);
|
||||
if (pkey == NULL) {
|
||||
msyslog(LOG_ERR, "crypto_encrypt %s\n",
|
||||
ERR_error_string(ERR_get_error(), NULL));
|
||||
@@ -1683,9 +1698,9 @@ crypto_encrypt(
|
||||
memset(vp, 0, sizeof(struct value));
|
||||
vp->tstamp = htonl(tstamp);
|
||||
vp->fstamp = hostval.tstamp;
|
||||
- len = EVP_PKEY_size(pkey);
|
||||
- vp->vallen = htonl(len);
|
||||
- vp->ptr = emalloc(len);
|
||||
+ vallen = EVP_PKEY_size(pkey);
|
||||
+ vp->vallen = htonl(vallen);
|
||||
+ vp->ptr = emalloc(vallen);
|
||||
temp32 = htonl(*cookie);
|
||||
if (!RSA_public_encrypt(4, (u_char *)&temp32, vp->ptr,
|
||||
pkey->pkey.rsa, RSA_PKCS1_OAEP_PADDING)) {
|
||||
@@ -1705,9 +1720,9 @@ crypto_encrypt(
|
||||
vp->sig = emalloc(sign_siglen);
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
- EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
- if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
- vp->siglen = htonl(len);
|
||||
+ EVP_SignUpdate(&ctx, vp->ptr, vallen);
|
||||
+ if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey))
|
||||
+ vp->siglen = htonl(sign_siglen);
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
|
||||
@@ -1794,6 +1809,9 @@ crypto_ident(
|
||||
* call in the protocol module.
|
||||
*
|
||||
* Returns extension field pointer (no errors).
|
||||
+ *
|
||||
+ * XXX: opcode and len should really be 32-bit quantities and
|
||||
+ * we should make sure that str is not too big.
|
||||
*/
|
||||
struct exten *
|
||||
crypto_args(
|
||||
@@ -1805,11 +1823,14 @@ crypto_args(
|
||||
tstamp_t tstamp; /* NTP timestamp */
|
||||
struct exten *ep; /* extension field pointer */
|
||||
u_int len; /* extension field length */
|
||||
+ size_t slen;
|
||||
|
||||
tstamp = crypto_time();
|
||||
len = sizeof(struct exten);
|
||||
- if (str != NULL)
|
||||
- len += strlen(str);
|
||||
+ if (str != NULL) {
|
||||
+ slen = strlen(str);
|
||||
+ len += slen;
|
||||
+ }
|
||||
ep = emalloc(len);
|
||||
memset(ep, 0, len);
|
||||
if (opcode == 0)
|
||||
@@ -1829,8 +1850,8 @@ crypto_args(
|
||||
ep->fstamp = hostval.tstamp;
|
||||
ep->vallen = 0;
|
||||
if (str != NULL) {
|
||||
- ep->vallen = htonl(strlen(str));
|
||||
- memcpy((char *)ep->pkt, str, strlen(str));
|
||||
+ ep->vallen = htonl(slen);
|
||||
+ memcpy((char *)ep->pkt, str, slen);
|
||||
} else {
|
||||
ep->pkt[0] = peer->associd;
|
||||
}
|
||||
@@ -1844,6 +1865,8 @@ crypto_args(
|
||||
* Returns extension field length. Note: it is not polite to send a
|
||||
* nonempty signature with zero timestamp or a nonzero timestamp with
|
||||
* empty signature, but these rules are not enforced here.
|
||||
+ *
|
||||
+ * XXX This code won't work on a box with 16-bit ints.
|
||||
*/
|
||||
u_int
|
||||
crypto_send(
|
||||
@@ -2212,7 +2235,8 @@ crypto_bob(
|
||||
tstamp_t tstamp; /* NTP timestamp */
|
||||
BIGNUM *bn, *bk, *r;
|
||||
u_char *ptr;
|
||||
- u_int len;
|
||||
+ u_int len; /* extension field length */
|
||||
+ u_int vallen = 0; /* value length */
|
||||
|
||||
/*
|
||||
* If the IFF parameters are not valid, something awful
|
||||
@@ -2227,8 +2251,11 @@ crypto_bob(
|
||||
/*
|
||||
* Extract r from the challenge.
|
||||
*/
|
||||
- len = ntohl(ep->vallen);
|
||||
- if ((r = BN_bin2bn((u_char *)ep->pkt, len, NULL)) == NULL) {
|
||||
+ vallen = ntohl(ep->vallen);
|
||||
+ len = ntohl(ep->opcode) & 0x0000ffff;
|
||||
+ if (vallen == 0 || len < VALUE_LEN || len - VALUE_LEN < vallen)
|
||||
+ return XEVNT_LEN;
|
||||
+ if ((r = BN_bin2bn((u_char *)ep->pkt, vallen, NULL)) == NULL) {
|
||||
msyslog(LOG_ERR, "crypto_bob %s\n",
|
||||
ERR_error_string(ERR_get_error(), NULL));
|
||||
return (XEVNT_ERR);
|
||||
@@ -2240,7 +2267,7 @@ crypto_bob(
|
||||
*/
|
||||
bctx = BN_CTX_new(); bk = BN_new(); bn = BN_new();
|
||||
sdsa = DSA_SIG_new();
|
||||
- BN_rand(bk, len * 8, -1, 1); /* k */
|
||||
+ BN_rand(bk, vallen * 8, -1, 1); /* k */
|
||||
BN_mod_mul(bn, dsa->priv_key, r, dsa->q, bctx); /* b r mod q */
|
||||
BN_add(bn, bn, bk);
|
||||
BN_mod(bn, bn, dsa->q, bctx); /* k + b r mod q */
|
||||
@@ -2254,19 +2281,25 @@ crypto_bob(
|
||||
/*
|
||||
* Encode the values in ASN.1 and sign.
|
||||
*/
|
||||
- tstamp = crypto_time();
|
||||
- memset(vp, 0, sizeof(struct value));
|
||||
- vp->tstamp = htonl(tstamp);
|
||||
- vp->fstamp = htonl(if_fstamp);
|
||||
- len = i2d_DSA_SIG(sdsa, NULL);
|
||||
- if (len <= 0) {
|
||||
+ vallen = i2d_DSA_SIG(sdsa, NULL);
|
||||
+ if (vallen == 0) {
|
||||
msyslog(LOG_ERR, "crypto_bob %s\n",
|
||||
ERR_error_string(ERR_get_error(), NULL));
|
||||
DSA_SIG_free(sdsa);
|
||||
return (XEVNT_ERR);
|
||||
}
|
||||
- vp->vallen = htonl(len);
|
||||
- ptr = emalloc(len);
|
||||
+ if (vallen > MAX_VALLEN) {
|
||||
+ msyslog(LOG_ERR, "crypto_bob: signature is too big: %d",
|
||||
+ vallen);
|
||||
+ DSA_SIG_free(sdsa);
|
||||
+ return (XEVNT_LEN);
|
||||
+ }
|
||||
+ memset(vp, 0, sizeof(struct value));
|
||||
+ tstamp = crypto_time();
|
||||
+ vp->tstamp = htonl(tstamp);
|
||||
+ vp->fstamp = htonl(if_fstamp);
|
||||
+ vp->vallen = htonl(vallen);
|
||||
+ ptr = emalloc(vallen);
|
||||
vp->ptr = ptr;
|
||||
i2d_DSA_SIG(sdsa, &ptr);
|
||||
DSA_SIG_free(sdsa);
|
||||
@@ -2277,11 +2310,12 @@ crypto_bob(
|
||||
if (tstamp < cinfo->first || tstamp > cinfo->last)
|
||||
return (XEVNT_PER);
|
||||
|
||||
+ /* XXX: more validation to make sure the sign fits... */
|
||||
vp->sig = emalloc(sign_siglen);
|
||||
EVP_SignInit(&ctx, sign_digest);
|
||||
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
|
||||
- EVP_SignUpdate(&ctx, vp->ptr, len);
|
||||
- if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey))
|
||||
+ EVP_SignUpdate(&ctx, vp->ptr, vallen);
|
||||
+ if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey))
|
||||
vp->siglen = htonl(len);
|
||||
return (XEVNT_OK);
|
||||
}
|
||||
Index: contrib/ntp/ntpd/ntp_proto.c
|
||||
===================================================================
|
||||
--- contrib/ntp/ntpd/ntp_proto.c (revision 280717)
|
||||
+++ contrib/ntp/ntpd/ntp_proto.c (working copy)
|
||||
@@ -459,7 +459,7 @@ receive(
|
||||
while (has_mac > 0) {
|
||||
int temp;
|
||||
|
||||
- if (has_mac % 4 != 0 || has_mac < 0) {
|
||||
+ if (has_mac % 4 != 0 || has_mac < MIN_MAC_LEN) {
|
||||
sys_badlength++;
|
||||
return; /* bad MAC length */
|
||||
}
|
||||
@@ -483,6 +483,13 @@ receive(
|
||||
return; /* bad MAC length */
|
||||
}
|
||||
}
|
||||
+ /*
|
||||
+ * If has_mac is < 0 we had a malformed packet.
|
||||
+ */
|
||||
+ if (has_mac < 0) {
|
||||
+ sys_badlength++;
|
||||
+ return; /* bad length */
|
||||
+ }
|
||||
#ifdef OPENSSL
|
||||
pkeyid = tkeyid = 0;
|
||||
#endif /* OPENSSL */
|
||||
@@ -942,12 +949,9 @@ receive(
|
||||
}
|
||||
|
||||
/*
|
||||
- * Update the origin and destination timestamps. If
|
||||
- * unsynchronized or bogus abandon ship. If the crypto machine
|
||||
+ * If unsynchronized or bogus abandon ship. If the crypto machine
|
||||
* breaks, light the crypto bit and plaint the log.
|
||||
*/
|
||||
- peer->org = p_xmt;
|
||||
- peer->rec = rbufp->recv_time;
|
||||
if (peer->flash & PKT_TEST_MASK) {
|
||||
#ifdef OPENSSL
|
||||
if (crypto_flags && (peer->flags & FLAG_SKEY)) {
|
||||
@@ -978,10 +982,11 @@ receive(
|
||||
* versions. If symmetric modes, return a crypto-NAK. The peer
|
||||
* should restart the protocol.
|
||||
*/
|
||||
- } else if (!AUTH(peer->keyid || (restrict_mask & RES_DONTTRUST),
|
||||
- is_authentic)) {
|
||||
+ } else if (!AUTH(peer->keyid || has_mac ||
|
||||
+ (restrict_mask & RES_DONTTRUST), is_authentic)) {
|
||||
peer->flash |= TEST5;
|
||||
- if (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE)
|
||||
+ if (has_mac &&
|
||||
+ (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE))
|
||||
fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask);
|
||||
return; /* bad auth */
|
||||
}
|
||||
@@ -989,7 +994,12 @@ receive(
|
||||
/*
|
||||
* That was hard and I am sweaty, but the packet is squeaky
|
||||
* clean. Get on with real work.
|
||||
+ *
|
||||
+ * Update the origin and destination timestamps.
|
||||
*/
|
||||
+ peer->org = p_xmt;
|
||||
+ peer->rec = rbufp->recv_time;
|
||||
+
|
||||
peer->received++;
|
||||
peer->timereceived = current_time;
|
||||
if (is_authentic == AUTH_OK)
|
17
share/security/patches/SA-15:07/ntp.patch.asc
Normal file
17
share/security/patches/SA-15:07/ntp.patch.asc
Normal file
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAABCgAGBQJVJD4SAAoJEO1n7NZdz2rnXCUQAJAxDCUySWaZ/XvdHiIXfMfa
|
||||
fcB4oEVQBUuMjmE/hC5CzA/t98M4VM2TtV2oWp53CKhIGsBlte64y3t8a7r2nyBt
|
||||
17x7P6FtV1q6yRS5DPYl/JZV/mbO4cPGto3f8MXOYraNl7MPvZFJcXXEZPXOQDrz
|
||||
2Ek4wasnnuCruTjtwSWoXWgC5dqQch97dQG639EyhUtOQ1a/pS334lbBw8wDGAnA
|
||||
ITsQuEGGqwFBJ2NIVwxW0rHFfz4mSk67OHru0mrnza37TQM8HnYhxvL8nrZNhGcC
|
||||
FhDjWAWDs4VlqrBIuiRC/dTgA6H6PvF3LDAxQ+ODSB5RiGs9g4TvcxF0XJp0EIp4
|
||||
9Kh0rC9wY4nO/q+DBz4nOJXMwJi7rUH2Y7dPSoKsWtgXIuyuefrACD9C2WwZ8EKA
|
||||
GWSuF4YidBOadl2x6kJGiIrjFhdrgRENVL4Nj5oVy1JztSBdb+qJMn3GSgpC1C00
|
||||
7tsvOJmjQgzgRuMnUo/IA++6P8Gj4G3M99K7yN4NcYJOQm1h9opEx7XKZ9W4hnrK
|
||||
qK9rxeXNzGhXi7/sfHER6AQIRgUliqUyl30RBcy6XuNwX5+2e2SwenAUb5Uu1HkX
|
||||
oTWWjm47BeG+sjGzM1QXGcukQFH8YFYaZmhSTk3O1ZoKFpMvzhqZEg9CJqfSOCKC
|
||||
PbrCxYouiyHPXLAIV+OZ
|
||||
=1bd7
|
||||
-----END PGP SIGNATURE-----
|
14
share/security/patches/SA-15:08/bsdinstall.patch
Normal file
14
share/security/patches/SA-15:08/bsdinstall.patch
Normal file
|
@ -0,0 +1,14 @@
|
|||
Index: usr.sbin/bsdinstall/scripts/zfsboot
|
||||
===================================================================
|
||||
--- usr.sbin/bsdinstall/scripts/zfsboot (revision 280920)
|
||||
+++ usr.sbin/bsdinstall/scripts/zfsboot (working copy)
|
||||
@@ -1137,6 +1137,9 @@ zfs_create_boot()
|
||||
f_eval_catch $funcname dd "$DD_WITH_OPTIONS" \
|
||||
/dev/random "$bootpool/$zroot_key" \
|
||||
"bs=4096 count=1" || return $FAILURE
|
||||
+ f_eval_catch $funcname chmod "$CHMOD_MODE" \
|
||||
+ go-wrx "$bootpool/$zroot_key" ||
|
||||
+ return $FAILURE
|
||||
else
|
||||
# Clean up
|
||||
f_eval_catch $funcname zfs "$ZFS_UNMOUNT" \
|
17
share/security/patches/SA-15:08/bsdinstall.patch.asc
Normal file
17
share/security/patches/SA-15:08/bsdinstall.patch.asc
Normal file
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAABCgAGBQJVJD4SAAoJEO1n7NZdz2rnC4MP/RPAtT+h695D7Xi8Gs3GUbSh
|
||||
Ied253cwSMMIH0eVYbUu/NgJpvjulHl4KGJj6hxgvieeBIbE6Vm4o/2EJCqRTsj2
|
||||
dv3ERJQkBYRkuuEQblR8wBFT0EeIcveWPrlKE0btNga0Frj9WuLGFQvNZgwCfRBN
|
||||
Yn72ST/blhsPpp/kdBy7T5YDZRQYQaLMFJ4Onz1JnpxOjyEEOTHax9B1bX1S01+H
|
||||
Y/8Xqi7dTK6IN7+XM/IuSHSVB7S56Zij/LHvkB4WNotwFVSvFDZ47E4NBKSJRU9B
|
||||
35zvDxtt9TV0B9hOk59jUJwUU4WMbe8rXzKnhHJV8ARJ+I1Jx1lAGZuchzcvoiyj
|
||||
qA5Ynb2MT3htxGDQ0Jns0XTjz/w0qV79NwB4IvLirs4S8qtCzpqKB5Iq8KQT/THZ
|
||||
SM4L8zRdWVhJREPyl3P3f5jd/XWiXCHCfrzn6RtLxzxU1u9LC3y7TSghNs6nUf96
|
||||
A6+o82EUIEQPpIT9y51z98Zho0i9LK9fBgawnZHQ1bMRh+Nh3pmtFK8hEqtwpNNK
|
||||
pCceLtl9YphaJmq0eSGlZRkIMpdeJWqV8UBiDcqf2SGwE50/kjPJ2rxQlzc024EF
|
||||
2RxEg7JVOwB2LaNAnaVG0QKmi1ElyX1azIv/hR2zqggyV1BPef8zB6pHXUiehMzd
|
||||
yCxpUpS93C5k0/GeuXRE
|
||||
=FP3O
|
||||
-----END PGP SIGNATURE-----
|
23
share/security/patches/SA-15:09/ipv6.patch
Normal file
23
share/security/patches/SA-15:09/ipv6.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
Index: sys/netinet6/nd6_rtr.c
|
||||
===================================================================
|
||||
--- sys/netinet6/nd6_rtr.c (revision 280920)
|
||||
+++ sys/netinet6/nd6_rtr.c (working copy)
|
||||
@@ -296,8 +296,16 @@ nd6_ra_input(struct mbuf *m, int off, int icmp6len
|
||||
}
|
||||
if (nd_ra->nd_ra_retransmit)
|
||||
ndi->retrans = ntohl(nd_ra->nd_ra_retransmit);
|
||||
- if (nd_ra->nd_ra_curhoplimit)
|
||||
- ndi->chlim = nd_ra->nd_ra_curhoplimit;
|
||||
+ if (nd_ra->nd_ra_curhoplimit) {
|
||||
+ if (ndi->chlim < nd_ra->nd_ra_curhoplimit)
|
||||
+ ndi->chlim = nd_ra->nd_ra_curhoplimit;
|
||||
+ else if (ndi->chlim != nd_ra->nd_ra_curhoplimit) {
|
||||
+ log(LOG_ERR, "RA with a lower CurHopLimit sent from "
|
||||
+ "%s on %s (current = %d, received = %d). "
|
||||
+ "Ignored.\n", ip6_sprintf(ip6bufs, &ip6->ip6_src),
|
||||
+ if_name(ifp), ndi->chlim, nd_ra->nd_ra_curhoplimit);
|
||||
+ }
|
||||
+ }
|
||||
dr = defrtrlist_update(&dr0);
|
||||
}
|
||||
|
17
share/security/patches/SA-15:09/ipv6.patch.asc
Normal file
17
share/security/patches/SA-15:09/ipv6.patch.asc
Normal file
|
@ -0,0 +1,17 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.1.2 (FreeBSD)
|
||||
|
||||
iQIcBAABCgAGBQJVJD4SAAoJEO1n7NZdz2rn1O4QAKXDrEAuvYLgCP81UX0JxXH1
|
||||
0lt0QXnOTKW1WtyQkVK2cJjDO12wksoHbeROjOWKZnuSYqCHjhkBjhvIPn8Crs7X
|
||||
lYMNlPfBsYKzIgDGBvh1AAveWvo/6yZWoaQ4wucDrkqZhP3IYabP3fIiRJsnxykq
|
||||
XPgmtntg2xq91plIPtcrQyf/OHLRx99Gpz6mm/KIhZu5v70Z7xwqMUyZ3a+YXm3N
|
||||
ZPH75E2n/opLC+Ju7LP9jvH+2Jo07fAmZMzxSWiIDa/BFrcfF3QArgk7r/2z7nb2
|
||||
Y2vmYkrKilKgvaYsFm5tx26QCSuVcqUsBm3B8Ren9cAw/PYxF2bAlA5AU1UIqHSS
|
||||
dhdngXMh7lTva3Psx44hE71Iuj4bkK/CaNlI9MLwFqqpMEKC7KoYvuI/UlJEm+uw
|
||||
0SF2UpHSEjykTn1a4dczc1ESShBg3Hea0hVcLkNW+fSrXjlv6Bq/Js1omK9w1Z9m
|
||||
D7yG/b8LgCGjVEIO36OwsXeOZmnK4lemf3D4AvfvtYY76BoyDaHjYS9Uv71scYHg
|
||||
OkE95dZqmcYYp+KMeeFKblJihExGn+cs4/N7xviBgqxgts8ArHWqfoZR0xwsV0WY
|
||||
Npki/cBVegb10YR1l+KbVvhbTd5acNWZFVw1xjReXz0xYKBmj+2+g1ub2G4GS7Tt
|
||||
slndiaYEEnJsulh0q3ut
|
||||
=BTId
|
||||
-----END PGP SIGNATURE-----
|
|
@ -7,6 +7,26 @@
|
|||
<year>
|
||||
<name>2015</name>
|
||||
|
||||
<month>
|
||||
<name>4</name>
|
||||
|
||||
<day>
|
||||
<name>7</name>
|
||||
|
||||
<advisory>
|
||||
<name>FreeBSD-SA-15:09.ipv6</name>
|
||||
</advisory>
|
||||
|
||||
<advisory>
|
||||
<name>FreeBSD-SA-15:08.bsdinstall</name>
|
||||
</advisory>
|
||||
|
||||
<advisory>
|
||||
<name>FreeBSD-SA-15:07.ntp</name>
|
||||
</advisory>
|
||||
</day>
|
||||
</month>
|
||||
|
||||
<month>
|
||||
<name>3</name>
|
||||
|
||||
|
|
Loading…
Reference in a new issue