Date: Tue, 6 Nov 2012 21:27:04 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: Paul Schenkeveld <freebsd@psconsult.nl> Cc: freebsd-security@freebsd.org Subject: Re: md(4) (swap-base) disks not cleaned on creation Message-ID: <20121106192704.GM73505@kib.kiev.ua> In-Reply-To: <20121106184658.GA24262@psconsult.nl> References: <20121106184658.GA24262@psconsult.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
--MXJOg2djshNyWgx2 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Nov 06, 2012 at 07:46:58PM +0100, Paul Schenkeveld wrote: > Hi, >=20 > When creating a swap based md(4) it may contain data which to me feels > like a security leak: >=20 > # mdconfig -a -t swap -s 1m > md0 > # hd /dev/md0 > 00000000 c0 9b a8 00 08 00 00 00 00 5c 53 00 08 00 00 00 |?.?......\= S.....| > 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |..........= =2E.....| > * > 00000250 38 9f a8 00 08 00 00 00 00 5c 53 00 08 00 00 00 |8.?......\= S.....| > 00000260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |..........= =2E.....| > * > 00000330 88 a0 a8 00 08 00 00 00 00 5c 53 00 08 00 00 00 |.=9A?.....= =2E\S.....| > 00000340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |..........= =2E.....| > * > 00000370 e8 a0 a8 00 08 00 00 00 00 5c 53 00 08 00 00 00 |?=9A?.....= =2E\S.....| > 00000380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |..........= =2E.....| > * > 000005b0 48 a4 a8 00 08 00 00 00 00 5c 53 00 08 00 00 00 |H??......\= S.....| > 000005c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |..........= =2E.....| > * > ^C > # ls -l /dev/md0 > crw-r----- 1 root operator 0xc8 Nov 6 19:42 /dev/md0 > # >=20 > Although not world-readable, it just doesn't feel right to me. >=20 > Any thoughts? It is definitely not a security issue. The md device is not user-accessible, as you noted. A filesystem run over the device need to ensure that user process never get on-disk garbage without first initializing the blocks. That said, the following patch should fix the nit. I am unsure about it, because it fixes mostly non-issue by spending CPU time to zero a page which would be either zeroed or overwritten right now anyway in normal usage. diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c index a86c26a..80982cc 100644 --- a/sys/dev/md/md.c +++ b/sys/dev/md/md.c @@ -677,6 +677,9 @@ mdstart_swap(struct md_s *sc, struct bio *bp) sched_unpin(); vm_page_wakeup(m); break; + } else if (rv =3D=3D VM_PAGER_FAIL) { + /* Pager does not have page */ + bzero((void *)sf_buf_kva(sf), PAGE_SIZE); } bcopy((void *)(sf_buf_kva(sf) + offs), p, len); cpu_flush_dcache(p, len); --MXJOg2djshNyWgx2 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (FreeBSD) iEYEARECAAYFAlCZZIgACgkQC3+MBN1Mb4jJ6gCcDBoqsZufIeTJ+KBmKvhhLn8C wcUAoIAkbCg4TpAFmdXAcMFeUr9WZ/FN =YQ79 -----END PGP SIGNATURE----- --MXJOg2djshNyWgx2--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121106192704.GM73505>