Ich bin Gründer und CEO von Apriorit, einem Softwareentwicklungsunternehmen, das weltweit Engineering-Dienstleistungen für Technologieunternehmen anbietet.

 Rückansicht der weiblichen Computerhacker-Codierung am Schreibtisch im Kreativbüro

Heutzutage sind Cyber-Angreifer mit einer beeindruckenden Auswahl an Waffen bewaffnet, von einfacher Malware bis hin zu ausgeklügelten Reverse-Engineering-Tools. Disassembler, Decompiler und andere Tools ermöglichen Hackern den Zugriff auf und die Analyse von Anwendungsquellcode. Mit diesen Informationen können Hacker Ihre Software auf verschiedene Arten missbrauchen: Indem sie vertrauliche Informationen extrahieren, schädlichen Code hinzufügen und sogar Ihre Anwendungen klonen.

Eine aktuelle Studie des Sicherheitsunternehmens Positive Technologies ergab, dass beliebte Mobile-Banking-Anwendungen anfällig für Hacking-Angriffe sind. Die häufigsten identifizierten Cybersicherheitsprobleme hatten mit den Namen von Klassen und Methoden zu tun, die explizit in den Quellcode geschrieben wurden, einem mangelnden Schutz vor Code-Injection und einem Mangel an Code-Verschleierung.

Insbesondere die Code-Verschleierung ist eine vielversprechende Praxis zur Sicherung von Software. Wenn Sie nach Möglichkeiten suchen, Ihre Software vor Eindringlingen zu schützen, sollten Sie zunächst die Verteidigung durch Verschleierung des Codes verbessern.

Wie funktioniert die Code-Verschleierung?

Verschleierungsmethoden ermöglichen es Ihnen, Anwendungscode zu härten, indem Sie ihn transformieren, um implizite Werte und Logik zu verbergen. Diese Maßnahmen erschweren es einem unbefugten Dritten, unter die Haube Ihrer Software zu schauen.

Die meisten Verschleierungstechniken transformieren einen der folgenden Aspekte von Code:

* Daten: Lassen Sie Codeelemente wie etwas anderes aussehen als das, was sie sind

• Kontrollfluss: Machen Sie ausführbare Logik nicht deterministisch, wenn die Software dekompiliert wird

• Layoutstruktur: Daten formatieren, Bezeichner umbenennen und Codekommentare entfernen

Verschleierungstools arbeiten mit Quellcode, Maschinen- oder Binärcode und Bytecode. Um zu bestimmen, welche Art von Code am besten zu verschleiern ist, müssen Sie die Einschränkungen jeder Wahl berücksichtigen.

Beim Verschleiern von Quellcode kann es zu Problemen bei der Handhabung und beim Debuggen des verschleierten Codes kommen. Die binäre Verschleierung ist nicht nur komplizierter als die beiden anderen Optionen, sondern muss auch auf jede Systemarchitektur angewendet werden.

In meiner Firma wählen wir oft die Bytecode-Verschleierung, da wir in diesem Fall nicht mit Quellcode oder Maschinencode umgehen müssen. Wenn wir jedoch Bytecode in Maschinencode umwandeln, ist es schwierig, alle verschleierten Code-Injektionen völlig zufällig zu halten.

Für eines unserer jüngsten Projekte verwendete mein Team den LLVM-Compiler, der uns dabei half, ein hohes Maß an Bytecode-Schutz mit geringen Auswirkungen auf die Softwareleistung sicherzustellen. Zusätzlich zum Härten von Code kann dieser Compiler zufällig Softwarelizenzprüfer platzieren, die es Hackern nahezu unmöglich machen, Software zu knacken.

Wie können Sie Ihre App mit Code-Verschleierung schützen?

Obwohl Verschleierung eine der von OWASP empfohlenen sicheren Codierungspraktiken ist, ist sie bei vielen Entwicklern immer noch nicht so beliebt. Der Hauptgrund dafür ist, dass Code-Verschleierung bei Überbeanspruchung die Softwareleistung beeinträchtigen kann.

Wenn es sich jedoch beispielsweise um eine Mobile Banking-App handelt, ist die Bedeutung der Sicherung der Bankkontodaten eines Benutzers hoch genug, um zusätzliche Zeit und Mühe für eine ausgewogene Code-Härtung zu rechtfertigen.

Wenn Sie Code auf die effektivste Weise verschleiern möchten, sollten Sie Folgendes beachten:

• Bevor Sie Ihren Code verschleiern, sollten Sie entscheiden, welche Teile Ihres Codes verschleiert werden können. Vermeiden Sie die Verschleierung von leistungskritischem Code. Stellen Sie außerdem sicher, dass die Verschleierung die Softwarefunktionalität in keiner Weise beeinträchtigt.

* Achten Sie auf die Größe und Leistung des verschleierten Codes. Beim Härten eines großen Codeteils kann sich die Ausführungszeit um das 1.000-fache erhöhen.

* Fügen Sie dem verschleierten Code undurchsichtige Prädikate hinzu, um nicht zu verstehen, wohin die Codeausführung führen wird. Lassen Sie das Kontrollflussdiagramm eher wie eine Zustandsmaschinenausführung als wie eine lineare Codeausführung aussehen.

* Um eine mehrschichtige Verteidigung zu erstellen, kombinieren Sie mehrere Transformationstechniken. Je mehr Verschleierungstechniken Sie verwenden, desto besser wird Ihr Code geschützt.

* Verwenden Sie die Codeverschleierung nur als zusätzliche Sicherheitsebene, da sie andere Sicherheitspraktiken nicht ersetzen kann.

Bei ordnungsgemäßer Implementierung ist die Code-Verschleierung eine effektive Lösung zum Schutz Ihrer Software vor unbefugter Analyse. Es ist keine Wunderwaffe, aber es wird Versuche, Ihre Software auszunutzen und zu kompromittieren, erheblich erschweren.

Forbes Technology Council ist eine Community nur auf Einladung von Weltklasse-CIOs, CTOs und Technologieführern. Bin ich qualifiziert?

Folgen Sie mir auf Twitter oder LinkedIn. Schauen Sie sich meine Website an.

Laden …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.