2 research outputs found
Preventing Code Insertion Attacks on Token-Based Software Plagiarism Detectors
Manchen Studierenden fehlt die Zeit oder Arbeitsbereitschaft, ihre Programmieraufgaben selbst zu lösen. Stattdessen plagiieren sie Abgaben ihre Kommilitonen, indem sie deren Code übernehmen und leicht verändern. Um dem vorzubeugen, existieren Programme, die beim Finden von Plagiaten unterstützen. Die geläufigste Art dieser Plagiatserkenner sind Token-basierte Plagiatserkenner. Diese sind resistent gegen viele Verschleierungsversuche, wie beispielsweise Variablenumbenennungen oder Umformatierung des Quelltextes. Sie sind jedoch generell anfällig gegen das Einfügen von Codezeilen, die den Programmfluss und das Ergebnis nicht beeinflussen.
Die bisherige Annahme war, dass das erfolgreiche Verschleiern von Plagiaten mehr Zeit und Können erfordert, als die Aufgabe selbst zu lösen. Automatisierte Plagiatsgeneratoren brechen diese Annahme, indem sie die Anfälligkeit gegen Codeeinfügungen ausnutzten, um automatisiert Plagiate zu erstellen. Ziel dieser Arbeit ist es, Mechanismen zu finden, die in bestehende Token-basierte Plagiatserkenner integriert werden können, um die Resilienz gegen Codeeinfügung zu verbessern. Dazu entwerfen wir zunächst Mechanismen, die den negativen Effekt vieler Codeeinfügungen auf die Plagiatserkennung reduzieren können. Anschließend implementieren wir diese Mechanismen prototypisch in einem modernen Token-basierte Plagiatserkenner. Wir evaluieren unsere Implementierung anhand eines Datensatzes aus echten Programmierabgaben und aus Plagiaten, die wir automatisch generiert haben. Damit zeigen wir, dass die Verwendung unserer Mechanismen die gemessene Ähnlichkeit automatisch generierter Plagiate stark erhöht. Dadurch ist der von uns verwendete Plagiatsgenerator nicht mehr in der Lage, verwendbare Plagiate zu erstellen
JavaScript Dead Code Identification, Elimination, and Empirical Assessment
Web apps are built by using a combination of HTML, CSS, and JavaScript. While
building modern web apps, it is common practice to make use of third-party
libraries and frameworks, as to improve developers' productivity and code
quality. Alongside these benefits, the adoption of such libraries results in
the introduction of JavaScript dead code, i.e., code implementing unused
functionalities. The costs for downloading and parsing dead code can negatively
contribute to the loading time and resource usage of web apps. The goal of our
study is two-fold. First, we present Lacuna, an approach for automatically
detecting and eliminating JavaScript dead code from web apps. The proposed
approach supports both static and dynamic analyses, it is extensible and can be
applied to any JavaScript code base, without imposing constraints on the coding
style or on the use of specific JavaScript constructs. Secondly, by leveraging
Lacuna we conduct an experiment to empirically evaluate the run-time overhead
of JavaScript dead code in terms of energy consumption, performance, network
usage, and resource usage in the context of mobile web apps. We applied Lacuna
four times on 30 mobile web apps independently developed by third-party
developers, each time eliminating dead code according to a different
optimization level provided by Lacuna. Afterward, each different version of the
web app is executed on an Android device, while collecting measures to assess
the potential run-time overhead caused by dead code. Experimental results,
among others, highlight that the removal of JavaScript dead code has a positive
impact on the loading time of mobile web apps, while significantly reducing the
number of bytes transferred over the network