Import OpenSSH-7.4
OpenSSH 7.4 has just been released. It will be available from the
mirrors listed at http://www.openssh.com/ shortly.
OpenSSH is a 100% complete SSH protocol 2.0 implementation and
includes sftp client and server support. OpenSSH also includes
transitional support for the legacy SSH 1.3 and 1.5 protocols
that may be enabled at compile-time.
Once again, we would like to thank the OpenSSH community for their
continued support of the project, especially those who contributed
code or patches, reported bugs, tested snapshots or donated to the
project. More information on donations may be found at:
http://www.openssh.com/donations.html
Future deprecation notice
=========================
We plan on retiring more legacy cryptography in future releases,
specifically:
* In approximately August 2017, removing remaining support for the
SSH v.1 protocol (client-only and currently compile-time disabled).
* In the same release, removing support for Blowfish and RC4 ciphers
and the RIPE-MD160 HMAC. (These are currently run-time disabled).
* Refusing all RSA keys smaller than 1024 bits (the current minimum
is 768 bits)
* The next release of OpenSSH will remove support for running sshd(8)
with privilege separation disabled.
* The next release of portable OpenSSH will remove support for
OpenSSL version prior to 1.0.1.
This list reflects our current intentions, but please check the final
release notes for future releases.
Potentially-incompatible changes
================================
This release includes a number of changes that may affect existing
configurations:
* This release removes server support for the SSH v.1 protocol.
* ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit
block ciphers are not safe in 2016 and we don't want to wait until
attacks like SWEET32 are extended to SSH. As 3des-cbc was the
only mandatory cipher in the SSH RFCs, this may cause problems
connecting to older devices using the default configuration,
but it's highly likely that such devices already need explicit
configuration for key exchange and hostkey algorithms already
anyway.
* sshd(8): Remove support for pre-authentication compression.
Doing compression early in the protocol probably seemed reasonable
in the 1990s, but today it's clearly a bad idea in terms of both
cryptography (cf. multiple compression oracle attacks in TLS) and
attack surface. Pre-auth compression support has been disabled by
default for >10 years. Support remains in the client.
* ssh-agent will refuse to load PKCS#11 modules outside a whitelist
of trusted paths by default. The path whitelist may be specified
at run-time.
* sshd(8): When a forced-command appears in both a certificate and
an authorized keys/principals command= restriction, sshd will now
refuse to accept the certificate unless they are identical.
The previous (documented) behaviour of having the certificate
forced-command override the other could be a bit confusing and
error-prone.
* sshd(8): Remove the UseLogin configuration directive and support
for having /bin/login manage login sessions.
2016-12-25 03:00:13 +03:00
|
|
|
/* $OpenBSD: sandbox-rlimit.c,v 1.4 2016/09/12 01:22:38 deraadt Exp $ */
|
2011-09-07 00:16:49 +04:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2011 Damien Miller <djm@mindrot.org>
|
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
|
|
* copyright notice and this permission notice appear in all copies.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/time.h>
|
|
|
|
#include <sys/resource.h>
|
|
|
|
|
|
|
|
#include <errno.h>
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
#include "log.h"
|
|
|
|
#include "ssh-sandbox.h"
|
|
|
|
#include "xmalloc.h"
|
|
|
|
|
|
|
|
/* Minimal sandbox that sets zero nfiles, nprocs and filesize rlimits */
|
|
|
|
|
|
|
|
struct ssh_sandbox {
|
|
|
|
pid_t child_pid;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ssh_sandbox *
|
|
|
|
ssh_sandbox_init(void)
|
|
|
|
{
|
|
|
|
struct ssh_sandbox *box;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Strictly, we don't need to maintain any state here but we need
|
|
|
|
* to return non-NULL to satisfy the API.
|
|
|
|
*/
|
|
|
|
debug3("%s: preparing rlimit sandbox", __func__);
|
|
|
|
box = xcalloc(1, sizeof(*box));
|
|
|
|
box->child_pid = 0;
|
|
|
|
|
|
|
|
return box;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ssh_sandbox_child(struct ssh_sandbox *box)
|
|
|
|
{
|
|
|
|
struct rlimit rl_zero;
|
|
|
|
|
|
|
|
rl_zero.rlim_cur = rl_zero.rlim_max = 0;
|
|
|
|
|
|
|
|
if (setrlimit(RLIMIT_FSIZE, &rl_zero) == -1)
|
|
|
|
fatal("%s: setrlimit(RLIMIT_FSIZE, { 0, 0 }): %s",
|
|
|
|
__func__, strerror(errno));
|
|
|
|
if (setrlimit(RLIMIT_NOFILE, &rl_zero) == -1)
|
|
|
|
fatal("%s: setrlimit(RLIMIT_NOFILE, { 0, 0 }): %s",
|
|
|
|
__func__, strerror(errno));
|
|
|
|
if (setrlimit(RLIMIT_NPROC, &rl_zero) == -1)
|
|
|
|
fatal("%s: setrlimit(RLIMIT_NPROC, { 0, 0 }): %s",
|
|
|
|
__func__, strerror(errno));
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ssh_sandbox_parent_finish(struct ssh_sandbox *box)
|
|
|
|
{
|
|
|
|
free(box);
|
|
|
|
debug3("%s: finished", __func__);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
ssh_sandbox_parent_preauth(struct ssh_sandbox *box, pid_t child_pid)
|
|
|
|
{
|
|
|
|
box->child_pid = child_pid;
|
|
|
|
/* Nothing to do here */
|
|
|
|
}
|
|
|
|
|