tolarian-academy.net - 追伸:Rubyのサンドボックスを作って、evalするBotを作った









Search Preview

追伸:Rubyのサンドボックスを作って、evalするBotを作った

tolarian-academy.net
Tolarian Academy 創作サークル『トレイリアのアカデミー』のブログ
.net > tolarian-academy.net

SEO audit: Content analysis

Language Error! No language localisation is found.
Title 追伸:Rubyのサンドボックスを作って、evalするBotを作った
Text / HTML ratio 27 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud end puts => stringto_s CleanRoom refine Rubyのサンドボックスを作って、evalするBotを作った override Sandbox module string 技術書展5で、Sinatraのコードリーディング本を頒布します dataurl=> class= title= title=> to_s def String Ruby
Keywords consistency
Keyword Content Title Description Headings
end 10
puts 6
=> 6
stringto_s 6
CleanRoom 5
refine 5
Headings
H1 H2 H3 H4 H5 H6
5 3 7 0 0 0
Images We found 3 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
end 10 0.50 %
puts 6 0.30 %
=> 6 0.30 %
stringto_s 6 0.30 %
CleanRoom 5 0.25 %
refine 5 0.25 %
Rubyのサンドボックスを作って、evalするBotを作った 5 0.25 %
override 4 0.20 %
Sandbox 4 0.20 %
module 4 0.20 %
string 4 0.20 %
技術書展5で、Sinatraのコードリーディング本を頒布します 3 0.15 %
dataurl=> 3 0.15 %
class= 3 0.15 %
title= 3 0.15 %
title=> 3 0.15 %
to_s 2 0.10 %
def 2 0.10 %
String 2 0.10 %
Ruby 2 0.10 %

SEO Keywords (Two Word)

Keyword Occurrence Density
end end 6 0.30 %
puts stringto_s 6 0.30 %
=> string 4 0.20 %
CleanRoom do 3 0.15 %
title= dataurl=> 3 0.15 %
class= title= 3 0.15 %
Sandbox refine 2 0.10 %
stringto_s => 2 0.10 %
end puts 2 0.10 %
stringto_s end 2 0.10 %
do puts 2 0.10 %
refine CleanRoom 2 0.10 %
stringto_s refine 2 0.10 %
Sandbox puts 2 0.10 %
using Sandbox 2 0.10 %
CleanRoom using 2 0.10 %
module CleanRoom 2 0.10 %
end module 2 0.10 %
module Sandbox 2 0.10 %
refine String 2 0.10 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
class= title= dataurl=> 3 0.15 % No
String do def 2 0.10 % No
Sandbox puts stringto_s 2 0.10 % No
end end puts 2 0.10 % No
stringto_s end end 2 0.10 % No
puts stringto_s end 2 0.10 % No
do puts stringto_s 2 0.10 % No
CleanRoom do puts 2 0.10 % No
refine CleanRoom do 2 0.10 % No
stringto_s refine CleanRoom 2 0.10 % No
puts stringto_s refine 2 0.10 % No
using Sandbox puts 2 0.10 % No
puts stringto_s => 2 0.10 % No
CleanRoom using Sandbox 2 0.10 % No
module CleanRoom using 2 0.10 % No
end module CleanRoom 2 0.10 % No
module Sandbox refine 2 0.10 % No
Sandbox refine String 2 0.10 % No
refine String do 2 0.10 % No
end end module 2 0.10 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
String do def to_s 2 0.10 % No
using Sandbox puts stringto_s 2 0.10 % No
stringto_s end end puts 2 0.10 % No
puts stringto_s end end 2 0.10 % No
do puts stringto_s end 2 0.10 % No
CleanRoom do puts stringto_s 2 0.10 % No
refine CleanRoom do puts 2 0.10 % No
stringto_s refine CleanRoom do 2 0.10 % No
puts stringto_s refine CleanRoom 2 0.10 % No
Sandbox puts stringto_s refine 2 0.10 % No
CleanRoom using Sandbox puts 2 0.10 % No
end puts stringto_s => 2 0.10 % No
module CleanRoom using Sandbox 2 0.10 % No
end module CleanRoom using 2 0.10 % No
end end module CleanRoom 2 0.10 % No
end end end module 2 0.10 % No
module Sandbox refine String 2 0.10 % No
Sandbox refine String do 2 0.10 % No
refine String do def 2 0.10 % No
override end end end 2 0.10 % No

Internal links in - tolarian-academy.net

このブログについて
このブログについて
« 古い記事へ
Tolarian Academy | 創作サークル『トレイリアのアカデミー』のブログ | Page 2
Mobb 0.3 をリリースしました、これで実践的に毎秒クソボットをリリースできます
Mobb 0.3 をリリースしました、これで実践的に毎秒クソボットをリリースできます
Kinoppyd
創作サークル『トレイリアのアカデミー』のブログ
未分類
カテゴリーアーカイブ: 未分類
Mobb 0.2.0 out now
Mobb 0.2.0 out now
Ruby
カテゴリーアーカイブ: Ruby
プログラミング
カテゴリーアーカイブ: プログラミング
技術書展5で、Sinatraのコードリーディング本を頒布します
技術書展5で、Sinatraのコードリーディング本を頒布します
追伸:Rubyのサンドボックスを作って、evalするBotを作った
追伸:Rubyのサンドボックスを作って、evalするBotを作った
Rubyのサンドボックスを作って、evalするBotを作った
Rubyのサンドボックスを作って、evalするBotを作った
2018年9月
創作サークル『トレイリアのアカデミー』のブログ
2018年8月
創作サークル『トレイリアのアカデミー』のブログ
2018年7月
創作サークル『トレイリアのアカデミー』のブログ
2018年3月
創作サークル『トレイリアのアカデミー』のブログ
2017年12月
創作サークル『トレイリアのアカデミー』のブログ
2017年10月
創作サークル『トレイリアのアカデミー』のブログ
2017年7月
創作サークル『トレイリアのアカデミー』のブログ
2017年1月
創作サークル『トレイリアのアカデミー』のブログ
2016年12月
創作サークル『トレイリアのアカデミー』のブログ
2016年9月
創作サークル『トレイリアのアカデミー』のブログ
2016年7月
創作サークル『トレイリアのアカデミー』のブログ
2016年5月
創作サークル『トレイリアのアカデミー』のブログ
2016年3月
創作サークル『トレイリアのアカデミー』のブログ
2015年12月
創作サークル『トレイリアのアカデミー』のブログ
2015年11月
創作サークル『トレイリアのアカデミー』のブログ
2015年10月
創作サークル『トレイリアのアカデミー』のブログ
2015年9月
創作サークル『トレイリアのアカデミー』のブログ
2015年8月
創作サークル『トレイリアのアカデミー』のブログ
2015年7月
創作サークル『トレイリアのアカデミー』のブログ
2015年5月
創作サークル『トレイリアのアカデミー』のブログ
2015年2月
創作サークル『トレイリアのアカデミー』のブログ
2014年12月
創作サークル『トレイリアのアカデミー』のブログ
2014年11月
創作サークル『トレイリアのアカデミー』のブログ
2014年10月
創作サークル『トレイリアのアカデミー』のブログ
2014年9月
創作サークル『トレイリアのアカデミー』のブログ
2014年7月
創作サークル『トレイリアのアカデミー』のブログ
2014年6月
創作サークル『トレイリアのアカデミー』のブログ
2014年4月
創作サークル『トレイリアのアカデミー』のブログ
2014年2月
創作サークル『トレイリアのアカデミー』のブログ
2014年1月
創作サークル『トレイリアのアカデミー』のブログ
2013年7月
創作サークル『トレイリアのアカデミー』のブログ
2013年5月
創作サークル『トレイリアのアカデミー』のブログ
2013年4月
創作サークル『トレイリアのアカデミー』のブログ
CentOS
カテゴリーアーカイブ: CentOS
Debian
カテゴリーアーカイブ: Debian
dokku
カテゴリーアーカイブ: dokku
Elixir
カテゴリーアーカイブ: Elixir
Fedora
カテゴリーアーカイブ: Fedora
Linux
カテゴリーアーカイブ: Linux
Mac
カテゴリーアーカイブ: Mac
MySQL
カテゴリーアーカイブ: MySQL
Perl
カテゴリーアーカイブ: Perl
Rails
カテゴリーアーカイブ: Rails
Scala
カテゴリーアーカイブ: Scala
Slack
カテゴリーアーカイブ: Slack
Windows
カテゴリーアーカイブ: Windows
アニメ
カテゴリーアーカイブ: アニメ
ポエム
カテゴリーアーカイブ: ポエム
自然言語解析
カテゴリーアーカイブ: 自然言語解析
ログイン
Tolarian Academy ‹ ログイン

Tolarian-academy.net Spined HTML


追伸:Rubyのサンドボックスを作って、evalするBotを作った Tolarian Academy 創作サークル『トレイリアのアカデミー』のブログ コンテンツへ このブログについて « Rubyのサンドボックスを作って、evalするBotを作った 技術書展5で、Sinatraのコードリーディング本を頒布します » 追伸:Rubyのサンドボックスを作って、evalするBotを作った 投稿者: Kinoppyd | 公開日: 2018年7月14日 注意:安全じゃないです あらすじ 入力されたRubyのコード文字列を安全にEvalするBotを作ったと主張する 次々と安全ではないことがわかる ちょっとずつ安全に向けて改良したが、まだまだ安全じゃない 詳細はここ↓ Rubyのサンドボックスを作って、evalするBotを作った たくさん届いた指摘 前回の最後の追伸から一夜明けて、またいくつかの指摘を頂いた。それぞれに関して対策を講じていく。 refine CleanRoomできる @GhostBrain ‘refine CleanRoom do system(“ls”) end’ とかでusing無視できるっぽい! — GTO (@mtgto) 2018年7月10日 こういう指摘がきたので実行してみたところ、確かに壊れた。 検証のためにこういうコードを書いてみると、確かにusingしているオブジェクトの中で自身をrefineすると、すでに効いているusingが無効になるようだった。 refine.rb Ruby module Sandbox refine String do def to_s; "override"; end end end module CleanRoom using Sandbox puts "string".to_s refine CleanRoom do puts "string".to_s end end puts "string".to_s # => override # => string # => string 12345678910111213141516171819 module Sandbox  refine String do    def to_s; "override"; end  endend module CleanRoom  using Sandbox  puts "string".to_s  refine CleanRoom do    puts "string".to_s  endend puts "string".to_s # => override# => string# => string 試しにusingのなかのrefileのなかで self を見てみると、#<refinement:CleanRoom@CleanRoom> というオブジェクトが得られた。CRubyのコードを追うのは大変なのでこれがどういうものなのかがよくわからないけれど、ここに書かれた仕様を読むと、特定のスコープでrefinementという匿名オブジェクトを継承クラスに加えているだけなので、どうしてusingの内容が無効化されるのかはよくわかりません。 https://magazine.rubyist.net/articles/0041/0041-200Special-refinement.html 他にもいろいろ検証コードを書いてみた途中で思い出しましたが、RubyにはModule#ancestorsなどでは参照できない隠れたオブジェクトが存在することを、メタプログラミングRubyで読んだ気がします。オフィスに置きっぱなしで今手元にないので、後日確認して追記します。 ともあれ、対策はModule#reineを呼び出させないことで、こういう対応になりました。 https://github.com/kinoppyd/ruby-eval-bot/commit/7d67df5853c302aad168c6df94e80fd470a780d5 Sandboxモジュールの先頭でselfに名前をつけて、Moduleのrefineの中でprivate_methodsをbannned_methodにaliasしました。 ただ、このやり方一つ問題があって、どこかでbannned_methodの呼び出しが無限ループし、SystemStackErrorが発生します。どっちにしろ例外でCleanRoomの外に出るのでいいんですが、あまり健康的ではない解決策なので、無限ループの対応をする必要があります。 const_getできる Rubyのサンドボックスを作って、evalするBotを作った const_get(“\x45NV”) 2018/07/11 05:42 文字列のエスケープは、以前にENVのアクセスを封じてたときにすでにリスクとして認識していましたが、const_getの存在を忘れていました。なので、Moduleのメソッドへのアクセスを禁止しました。 https://github.com/kinoppyd/ruby-eval-bot/commit/3953b1b252057ffbeca4e34acfb9f5f312b0297c TOPLEVEL_BINDINGに触れる @GhostBrain に mention しないと気づかれてない気がするので、mention 付きで態度ツイートしておくと、 TOPLEVEL_BINDING.eval で抜けられそうです。 — Kazuhiro NISHIYAMA (@znz) 2018年7月11日 なるほどって感じでした、グローバル変数もかなりマズイです。 RubyのObjectに定義されたグローバル関数は、モジュール定義内で上書きすることができます。よく考えたら、ENVとかもここで書き換えておけば安全(なはず)なので、ENVの文字列チェックをやめこっちに移行しました。 https://github.com/kinoppyd/ruby-eval-bot/commit/8f0d06bc19d4d30ceca68723589391b6868604b8 気軽にSandboxということの楽しさとつらさ 社内で気軽にRubyのコードを実行できるBotが欲しくて、ものすごいマズイことが起きなければいいかなくらいの気持ちで作った実装を公開したら、思った以上の反響と邪悪な人たちと素敵な人達に反応してもらいました。もらった指摘はとても役立つもので、原因や対応策を考えるのはとても楽しかったです。 しかし、気軽なSandboxは当然気軽なものでしかなく、無限に襲ってくる脆弱性に対応するのはやっぱり大変です。ちょっと仕事の時間に遊びすぎたと反省しました。 願わくば、このエントリに追記が増えていきませんように。 この記事はRubyに投稿されました. このパーマリンクをブックマークする。 コメントを投稿するか、トラックバックをどうぞ: トラックバック URL. « Rubyのサンドボックスを作って、evalするBotを作った 技術書展5で、Sinatraのコードリーディング本を頒布します » コメントする コメントをキャンセル あなたのメールは 絶対に 公開されたり共有されたりしません。 * が付いている欄は必須項目ですコメント次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> 名前 * メールアドレス * ウェブサイト 書いてる人 kinoppyd 検索 最近の投稿 Mobb 0.3 をリリースしました、これで実践的に毎秒クソボットをリリースできます Mobb 0.2.0 out now 技術書展5で、Sinatraのコードリーディング本を頒布します 追伸:Rubyのサンドボックスを作って、evalするBotを作った Rubyのサンドボックスを作って、evalするBotを作った アーカイブ 2018年9月 2018年8月 2018年7月 2018年3月 2017年12月 2017年10月 2017年7月 2017年1月 2016年12月 2016年9月 2016年7月 2016年5月 2016年3月 2015年12月 2015年11月 2015年10月 2015年9月 2015年8月 2015年7月 2015年5月 2015年2月 2014年12月 2014年11月 2014年10月 2014年9月 2014年7月 2014年6月 2014年4月 2014年2月 2014年1月 2013年7月 2013年5月 2013年4月 @GhostBrainさんのツイート カテゴリー CentOS Debian dokku Elixir Fedora Linux Mac MySQL Perl Rails Ruby Scala Slack Windows アニメ プログラミング ポエム 未分類 自然言語解析 メタ情報 ログイン Powered by WordPress. Built on the Thematic Theme Framework.