RubyRussia 2019. Mikhail Pronyakin: Ist Ruby sicher?

Auf der RubyRussia- Konferenz wird es viele Vorträge darüber geben , wie man Code schreibt und wie man es besser macht als andere. Wenn das von Ihrem Unternehmen eingeführte Produkt jedoch unsicher ist, kann dies zu großen Problemen führen. Grigory Petrov diskutierte dieses wichtige Thema mit Mikhail Pronyakin von ONSEK, dem Entwickler der integrierten Valarm- Plattform.

Bild

Sag mir, was du machst und wie du Ruby benutzt?

Es war einmal ein Spezialist auf dem Gebiet der Informationssicherheit. Habe so etwas wie das Pentest von Webanwendungen und verschiedenen physischen Geräten gemacht. Parallel dazu beschäftigte er sich in C mit der Systemprogrammierung. Damals wie heute war das Metasploit-Framework beliebt, das mit eigenen Modulen zur Suche und Ausnutzung von Sicherheitslücken erweitert werden konnte. Es wurde in Ruby geschrieben - so begann meine Bekanntschaft mit dieser Sprache. Dann ging ich zu Onsek, wo ich zuerst einige kritische Teile des Projekt-Backends beschleunigte, indem ich den Code von Ruby nach C umschrieb, und dann begann ich, neue Funktionen nur in Ruby zu schreiben. Die Aktivitäten unseres Unternehmens beziehen sich auf die Informationssicherheit. Wir betreiben Valarm, eine Plattform zum Schutz und Testen von Webanwendungen (und nicht nur). Es stellt sich heraus, dass ich sowohl Ruby-Entwickler als auch Spezialist für Informationssicherheit bin.

Ihr Bericht bezieht sich auf dieses Thema. Erzähl mir mehr.

RoR bietet dem Programmierer großartige Möglichkeiten, Code zu schreiben, aber es gibt auch nicht offensichtliche Punkte, die zu Sicherheitsproblemen führen können. Auf der Konferenz werde ich über typische Schwachstellen von Ruby-Anwendungen sprechen und praktische Beispiele geben, die helfen, Fehler zu vermeiden.

Wie ist Rails Ihrer Meinung nach jetzt in Bezug auf die Sicherheit?

In der Philosophie von Ruby and Rails gibt es so etwas wie "Priorität der Vereinbarung gegenüber der Konfiguration". Wenn in der Vereinbarung alles durchdacht ist, treten keine Sicherheitsprobleme auf. Wenn jedoch plötzlich die Situation auftritt, dass Sie standardmäßig anfälligen Code schreiben können, kann dies bereits zu ernsthaften Problemen führen. Besonders für unerfahrene Entwickler, die gerade erst angefangen haben, Rails zu lernen und nicht einmal an die Sicherheit ihres Codes denken. Mit Blick auf die Vergangenheit war es mit Sicherheit überall schlimmer als heute. Dies gilt nicht nur für Ruby, sondern auch für andere Sprachen und Frameworks. Jedes Jahr werden Sicherheitsfunktionen immer tiefer in die Frameworks integriert. Zum Beispiel hat Rails bereits überall CSRF-Token, was sehr gut ist. All dies funktioniert unter der Haube. Wenn Sie jedoch nicht wissen, wie und was Sie benutzerdefinieren möchten, kann die Sicherheit der Anwendung beeinträchtigt werden.

Wenn wir Schwachstellen berücksichtigen, können diese grob in zwei Typen unterteilt werden: Dies sind Schwachstellen in der Laufzeit und Schwachstellen der Sprache selbst. Es war einmal in Python eine traurige Geschichte - es stellte sich heraus, dass in Python der Hash für das Wörterbuch ohne Salz berechnet wird. Man könnte böswillig eine unendliche Anzahl von Kollisionen provozieren. Infolgedessen gingen die Wörterbücher über und die Server starben an mehreren Megabyte an angreifenden Anforderungen. Sagen Sie mir in Ihrer Rails-Welt, nach Ihrer Erfahrung, wie viele Schwachstellen in Ruby selbst und wie viele Schwachstellen in Rails vorhanden sind.

Wenn wir uns das Thema Schwachstellen ansehen, ist es viel umfangreicher als nur Ruby und Rails. Zum Beispiel haben wir Nginx. Wenn es nicht richtig konfiguriert ist, können Sie einfach einige Dateien vom Server lesen und das Geheimnis der Rails-Anwendung erfahren. Und das war's, die Anwendung wird gehackt - mach was du willst. Sie müssen verstehen, dass Sicherheit nicht auf eine Sprache und ein Framework beschränkt ist - es gibt eine Umgebung, in der sie ausgeführt wird, eine Umgebung, in der sie zusammengestellt wird, und eine weitere Million verschiedene Nuancen.

Und können Sie in Bezug auf die Menge irgendwie herausfinden, wo es mehr Schwachstellen gibt? Außerhalb von Ruby und Rails, in der Sprache selbst, in der Laufzeit, in der Standardbibliothek oder in Rails als Framework, das Ruby verwendet?

Ich würde sagen, dass die meisten Sicherheitslücken an der Schnittstelle zwischen der Anwendungslogik und den Rails selbst oder anderen Bibliotheksfunktionen liegen.

Was war in den letzten Jahren die lustigste Sicherheitslücke, die Sie oder Ihre Kollegen gefunden haben? Aus der Serie "Ahh, na ja, das musstest du so vermasseln."

Die denkwürdigste Sicherheitslücke war das Juwel, das Sprachtexte zuließ. Du gibst ihm den Text und er spricht ihn aus. Gem rief das Konsolendienstprogramm auf und übergab ihm Parameter ohne ordnungsgemäße Überprüfung. Infolgedessen wurde in Bash eine Injektion entdeckt, und Sie konnten das Ergebnis der Ausführung eines beliebigen Befehls hören. Sie senden den Befehl "ls /" an den Eingang, und die Antwort diktiert "slash dev slash etc" und so weiter.

In den letzten Jahren hat sich das Ökosystem der Hochsprachen - Python, Ruby, JavaScript - auf eine große Anzahl kleiner Bibliotheken verlassen. Es gibt viele von ihnen, und sie sind voneinander abhängig, so dass einige Pad-Links entfernt werden, und dies tötet das Ökosystem. Angreifer beginnen entweder damit, ihre Bibliotheken zu erstellen, oder übernehmen die Kontrolle über Fremde und fügen ihnen bösartigen Code hinzu, den Sie nicht finden können. Wie groß und schrecklich ist das jetzt?

Es gibt ein Problem, aber bisher denkt niemand wirklich darüber nach, jeder verlässt sich "zufällig". Wenn ein Angreifer das Ziel hat, ein bestimmtes Unternehmen auf eine bestimmte Weise anzugreifen, wird ihn heute niemand mehr aufhalten. Nichts hindert daran, nur ein gutes Juwel zu machen, viele Sterne auf GitHub zu gewinnen und darauf zu warten, dass alle damit anfangen. Betten Sie dann verdeckt bösartigen Code ein, was überhaupt nicht schwierig ist. Ich denke, die Frage der Abhängigkeiten ist heute eine Frage des Vertrauens: Das Problem ist offen und wartet immer noch auf seine Lösung.

Wir sehen uns bei RubyRussia!

Fragen zum Thema Sicherheit können nach dem Bericht an Mikhail gestellt und am Stand seines Unternehmens besprochen werden. Sie können sich auf der Website ansehen, welche anderen Themen die Rubisten am 28. September diskutieren werden .

Neben Referenten und Teilnehmern können Sie auch wunderbare Unternehmen kennenlernen, die die Konferenz unterstützen:

Veranstalter - Evrone
Komplementärin - Toptal
Gold Partner - Gett
Silberpartner - Valarm , JetBrains , Bookmate und Cashwagon
Bronze Partner - InSales

Source: https://habr.com/ru/post/de467369/


All Articles