From 73a229c3a5032d50f21de698869cf2117084d12f Mon Sep 17 00:00:00 2001 From: shugo Date: Fri, 14 Jun 2013 00:53:37 +0000 Subject: [PATCH] * NEWS: add notes for $SAFE. * doc/security.rd: remove the description of $SAFE=4. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ NEWS | 10 ++++++++++ doc/security.rdoc | 7 +------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa0c3769ed..c096c35ff3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Jun 14 09:48:48 2013 Shugo Maeda + + * NEWS: add notes for $SAFE. + + * doc/security.rd: remove the description of $SAFE=4. + Fri Jun 14 00:14:29 2013 Tanaka Akira * bignum.c (bigdivrem): Zero test condition simplified. diff --git a/NEWS b/NEWS index 72662cff59..0a7473870a 100644 --- a/NEWS +++ b/NEWS @@ -43,6 +43,10 @@ with all sufficient information, see the ChangeLog file. === Core classes compatibility issues (excluding feature bug fixes) +* Kernel#untrusted?, untrust, and trust + * These methods are deprecated and their behavior is same as tainted?, + taint, and untaint, respectively. If $VERBOSE is true, they show warnings. + * IO * incompatible changes: * open ignore internal encoding if external encoding is ASCII-8BIT. @@ -120,4 +124,10 @@ with all sufficient information, see the ChangeLog file. It gets encoding argument to convert before percent encode. UTF-16 strings aren't converted to UTF-8 before percent encode by default. +=== Built-in global variables compatibility issues + +* $SAFE + * $SAFE=4 is obsolete. If $SAFE is set to 4 or larger, an ArgumentError + is raised. + === C API updates diff --git a/doc/security.rdoc b/doc/security.rdoc index 2cf6531785..d552f9876c 100644 --- a/doc/security.rdoc +++ b/doc/security.rdoc @@ -21,12 +21,7 @@ Ruby provides a mechanism to restrict what operations can be performed by Ruby code in the form of the $SAFE variable. However, $SAFE does not provide a secure environment for executing -untrusted code even at its maximum level of +4+. $SAFE is -inherently flawed as a security mechanism, as it relies on every unsafe -operation performed by any C method to be guarded by a $SAFE -check. If this check is ever missed, the entire security of the system is -compromised. $SAFE also does not offer any protection against -denial of service attacks. +untrusted code. If you need to execute untrusted code, you should use an operating system level sandboxing mechanism. On Linux, ptrace or LXC can be used to sandbox