ruby-mine

exploring the mine

Der Ruby-Virus

von quintus am 20.06.2010 (22 Uhr)
Es scheint, das neue Versionen der Virus-Defintionen des Antivirus-Programms Avira Anti-Vir den Ruby-Interpreter des RubyInstallers, oder präziser gesagt rubyw.exe, als das Virus "TR/Dropper.Gen Trojan" erkennen wollen. Es ist aber bereits Entwarnung gegeben worden, Avira selbst hat das Ergebnis als false positive eingestuft. Ihr könnt Ruby also weiterhin gefahrlos auf Windows verwenden ohne Sicherheitsbedenken haben zu müssen. Die Gewähr jedoch, von Ruby selbst infiziert zu werden, gibt aber niemand. ;-)
 
Kommentare (1)

Rails XSS Problem

von bovi am 24.05.2010 (11 Uhr)

Die Rails Entwickler haben wohl beim 2.3.6er Release ein wenig daneben gegriffen, als sie die “HTML Sicherheitsfeatures” gegen XSS Attacken aus Rails 3 zurückportiert haben. “Einige” sicherheitskritische Fehler sind in dem soeben erschienen 2.3.7er Release nun beseitigt.

 
Kommentare (2)

Fehler im WEBrick

von bovi am 10.01.2010 (13 Uhr)

Habe gerade nach langer, langer Zeit mal wieder etwas auf Ruby-Lang im deutschen Bereich nachgezogen. Diesmal geht es um einen Fehler im WEBrick, welcher dazu führt, dass bestimmte Escapesequenzen von entfernten Angreifern mittels der WEBrick Logdatei, auf eurem lokalen Terminalemulator ausgeführt werden können.

Das Ganze sieht dann in etwa so aus:

Es ist also möglich den Titeltext einer Terminalemulation zu ändern. Weltungergang!!! Naja vielleicht auch nicht. Es gibt jedoch auch verschiedene andere Angriffszscenarien.

 
Kommentare (0)

Rails 2.3.4 erschienen

von bovi am 04.09.2009 (16 Uhr)

Heute Morgen ist die Version 2.3.4 von Rails erschienen. Das Interessante an diesem Release ist die Geschichte hinter dem XSS Vulnerability Patch. Brian Mastenbrook hatte vor einiger Zeit einen Fehler in Twitter und Basecamp entdeckt. Durch diesen konnte er JavaScript in beiden Seiten einschleusen und dadurch Cross Site Scripting durchführen. Bei der Meldung dieses Fehlers stieß Brian jedoch auf erhebliche Probleme bei der Kommunikation mit 37Signals, die Ihn zu der Empfehlung führten, dass man in Zukunft lieber keine Daten mehr bei 37Signals speichern sollte.

 
Kommentare (0)

require in Ruby 1.9.2

von skade am 19.07.2009 (10 Uhr)

Ruby 1.9.2 ist draußen und bringt ausser den in den News angekündigten Änderungen noch eine größere Überraschung mit.

Aufgrund eines potentiellen Sicherheitsproblems ist das Verzeichnis . nicht mehr standardmässig in $LOAD_PATH. Das bedeutet:

[ skade HIPE-Machine ~/Downloads/ruby-1.9.2-preview1 ] ls test.rb
test.rb
[ skade HIPE-Machine ~/Downloads/ruby-1.9.2-preview1 ] ./ruby --version
ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-darwin9.7.0]
[ skade HIPE-Machine ~/Downloads/ruby-1.9.2-preview1 ] ./ruby -e "require 'test'"
-e:1:in `require': no such file to load -- test (LoadError)
  from -e:1:in `
'
Der Fix dafür ist einfach und in einer single-user-Umgebung unbedenklich: entweder ihr gebt jedem Aufruf von Ruby -I. mit oder ihr setzt RUBYLIB=".".
 
Kommentare (6)

Rails 1.2.5

von murphy am 14.10.2007 (01 Uhr)

Öhm…die neueste Version von Rails ist da ^^ Schon wieder…diesmal mit HTML-Escaping für JSON.

 
Kommentare (1)

Rails 1.2.4

von murphy am 10.10.2007 (02 Uhr)

Die neueste Version von Rails ist da!

 
Kommentare (0)

PHP Kompatibilität

von bovi am 11.05.2007 (01 Uhr)

(nur zur Sicherheit:)

Vorsicht, dieser Code ist der Nachbau einer PHP-Sicherheitslücke. Bitte nicht benutzen!

Aus aktuellem Anlass eine Nachbesserung im Verhalten von require:

require 'open-uri'

module Kernel
  alias_method :require_old, :require

  def require params
    if params =~ /\A(ftp|http[s]?)/
      eval open(params).read
    else
      require_old params
    end
  end
end

Hier zum Test:

require 'http://www.ruby-mine.de/assets/2007/5/10/remote_1.rb' 
#=> i'm far away

Anhang von murphy

Vergiss nicht:

require 'cgi'
cgi = CGI.new
for name, value in cgi.params 
  eval("#{name}=#{value}")
end
 
Kommentare (8)

Ruby 1.8.5-p12 für Windows

von murphy am 12.02.2007 (21 Uhr)

Update: Man hat mal wieder das readline-Paket vergessen ^^ Also: Neue Version. Windows-User können sich freuen, denn seit Samstag (nach einem halben Jahr ohne Update) steht die finale Version des neuen One-Click-Installers (which you have to double-click afterwards™) zum Download bereit.


Vollständigen Artikel lesen...
 
Kommentare (2)

Ruby Exploit für Quicktime

von bovi am 02.01.2007 (21 Uhr)
Das es hin und wieder Schwachstellen in Software gibt, sollte den meißten ja geläufig sein. Auch das ein passender Exploit veröffentlich wird, ist nix besonderes. Neu ist nun jedoch, dass dieser als Rubyskript bereitgestellt wird. Bei der Schwachstelle handelt es sich um einen Buffer Overflow in dem Mediaplayer Quicktime. Der Ruby Exploit ist trivial programmiert und für interessierte auch gut dokumentiert.
 
Kommentare (2)

Gefährliche Sicherheitslücken in cgi.rb

von murphy am 04.12.2006 (20 Uhr)

Nippon, we have a problem.

Was ist passiert?

Ich möchte versuchen, Licht ins Dunkel zu bringen.

diff -r

Folgende Änderungen unterscheiden Ruby 1.8.5-ps (2006-12-04) von Ruby 1.8.5 (2006-08-29):

ChangeLog
Mon Dec  4 10:22:26 2006  URABE Shyouhei  

    * stable version 1.8.5-p2 relased.

Sun Dec  3 17:11:12 2006  Shugo Maeda  

    * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote
      boundary. JVN#84798830

Sun Nov 26 16:36:46 2006  URABE Shyouhei  

    * version.h: addition of RUBY_PATCHLEVEL.
    * version.c: ditto.

Sat Sep 23 21:34:15 2006  Yukihiro Matsumoto  

    * lib/cgi.rb (CGI::QueryExtension::read_multipart): CGI content
      may be empty.  a patch from Jamis Buck .

Jetzt sehen wir auch mal, wer die Lücke gefunden hat: Danke, Jamis!

lib/cgi.rb
@@ -967,6 +967,7 @@  
       def read_multipart(boundary, content_length)
         params = Hash.new([])
         boundary = "--" + boundary
  +      quoted_boundary = Regexp.quote(boundary, "n")
         buf = "" 
         bufsize = 10 * 1024
         boundary_end="" 
@@ -998,7 +999,7 @@
           end
           body.binmode if defined? body.binmode

  -        until head and /#{boundary}(?:#{EOL}|--)/n.match(buf)
  +        until head and /#{quoted_boundary}(?:#{EOL}|--)/n.match(buf)

             if (not head) and /#{EOL}#{EOL}/n.match(buf)
               buf = buf.sub(/\\\\A((?:.|\\\\n)*?#{EOL})#{EOL}/n) do
@@ -1018,14 +1019,14 @@
                 else
                   stdinput.read(content_length)
                 end
  -          if c.nil?
  +          if c.nil? || c.empty?
               raise EOFError, "bad content body" 
             end
             buf.concat(c)
             content_length -= c.size
           end

  -        buf = buf.sub(/\\\\A((?:.|\\\\n)*?)(?:[\\\\r\\\\n]{1,2})?#{boundary}([\\\\r\\\\n]{1,2}|--)/n) do
  +        buf = buf.sub(/\\\\A((?:.|\\\\n)*?)(?:[\\\\r\\\\n]{1,2})?#{quoted_boundary}([\\\\r\\\\n]{1,2}|--)/n) do
             body.print $1
             if "--" == $2
               content_length = -1
  

Hier stecken also die eigentlichen Fehler.

Ich weiß leider nicht, wer die zweite Lücke gefunden hat.

Bleibt noch das neue Patchlevel:

version.c und version.h
const int ruby_patchlevel = RUBY_PATCHLEVEL;
...
rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL));
...
#define RUBY_PATCHLEVEL 2
...
RUBY_EXTERN const int ruby_patchlevel;

Die Diskussion um die Einführung des Patchlevels und eines neuen CVS-Branches (er schient jetzt ruby_1_8_5 zu heißen) findet ihr im Archiv.

Für Programmierer

Baut folgende Prüfung ein, wenn eure Skripte cgi.rb benutzen (soweit ich weiß, tun das unter anderem alle Rails-Applikationen; laut Jeremy Kemper ist Rails aber nicht betroffen, wenn man im production-Mode unter FastCGI arbeitet.)

if not defined? RUBY_PATCHLEVEL or (RUBY_VERSION <= '1.8.5' and RUBY_PATCHLEVEL < 2)
  raise SecurityError, 'Please use Ruby 1.8.5-p2 or later!'
end

Echo

Based on how the cgi.rb file is coded it's most likely that there will be more of these kinds of defects in the future.
(Zed A .Shaw, der Mongrel-Typ) [Edit: Prüfungscode für Ruby 1.9 angepasst (Patchlevel natürlich nur für bereits veröffentlichte Versionen.)]
 
Kommentare (1)

Deutschsprachige Ausarbeitung "Rails und Sicherheit im Web"

von dethix am 03.03.2006 (23 Uhr)

Murphy alias Kornelius Kalnbach hat im Rahmen des Seminars Der Fehler im System einen Vortrag mit dem Titel “Rails und Sicherheit im Web” gehalten. Die schriftliche Ausarbeitung dazu stellt er nun im Netz zur Verfügung.

Auf lockere Art und Weise versucht er dem Leser die Problematiken und Lösungen näher zu bringen. Unterstützt wird das ganze durch die Beispielapplikation “Monty-Python-Fanshop”.

Themenübersicht:

Im Besonderen werden folgende technische Aspekte behandelt:

Alle Dokumente (Folien zum Vortrag, Monty-Python-Fanshop, Bilder und TeX-Quellen sowie natürlich die Ausarbeitung) stehen auf

 
Kommentare (1)