You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: master-thesis.md
+5-44Lines changed: 5 additions & 44 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Related Work:
30
30
31
31
[3][Adversarial Analysis of Software Composition Analysis Tools](https://link.springer.com/chapter/10.1007/978-3-031-75764-8_9)
32
32
33
-
### Empirical Study of API Difference Tools for Java Dependencies
33
+
### Empirical Study of API Differencing Tools for Java Dependencies
34
34
Contact: Frank Reyes Garcia
35
35
36
36
Java applications rely extensively on external libraries, which are frequently updated and modified. As these libraries evolve, changes to their public APIs can introduce breaking changes, binary incompatibilities, or subtle behavioral issues that may impact client projects.
@@ -46,7 +46,7 @@ Related Work:
46
46
47
47
[2][Understanding the Impact of APIs Behavioral Breaking Changes on Client Applications](https://dl.acm.org/doi/10.1145/3643782)
48
48
49
-
### How prevalent is Maven Class Hijacking?
49
+
### How prevalent is Dependency Shadowing and Maven Class Hijacking?
50
50
Contact: Aman Sharma, Frank Reyes Garcia
51
51
52
52
Maven Class Hijacking [1] is a supply chain attack where a legitimiate Java class deep in the dependency tree can act malicious by shadowing a legitimate Java class that one declares directly.
@@ -79,7 +79,7 @@ Another question to investigate is if this cache can be repurposed as an allowli
79
79
[1][SBOM.EXE: Countering Dynamic Code Injection based on Software Bill of Materials in Java](https://arxiv.org/abs/2407.00246)
80
80
81
81
82
-
<h3 >Trust Assumptions and Threats in Build Attestation System</h3>
82
+
### Trust Assumptions and Threats in Build Attestation System
83
83
Contact: Larissa Schmid
84
84
<p>Description:
85
85
Build attestations are cryptographically verifiable statements that describe how, when, and by whom a software artifact was produced. They are used for strengthening software supply chain security by ensuring that binaries and container images can be traced back to a documented build process. While standards like SLSA and tools such as Sigstore, Tekton Chains, and GitHub's native attestations promise to ensure trust in build outputs, there is no systematic assessment of their capabilities and limitations. This thesis will examine which trust assumptions different build attestation systems make, what attacker models they use, and how well current implementations satisfy their security goals. The work should evaluate potential attack vectors and propose recommendations for more robust, verifiable provenance. </p>
@@ -97,7 +97,7 @@ Related works:
97
97
4.[Understanding the Quality of Container Security Vulnerability Detection Tools](https://arxiv.org/pdf/2101.03844)
98
98
99
99
100
-
<h3 >Empirical Study of Compilation Reproducibility in Solidity</h3>
100
+
### Empirical Study of Compilation Reproducibility in Solidity
101
101
Contact: Aman Sharma
102
102
<p>Description:
103
103
The reproducibility of software builds is a critical aspect of secure software development This concept has been pushed forward in the context of Solidity, the programming language
<h3 >Dynamic Integrity Verification & Repair for Java Applications</h3>
118
-
Contact: Martin Monperrus
119
-
<p>Description:
120
-
Attackers constantly try to tamper with the code of software applications in production.
121
-
Chang and Attalah have proposed a technique to not only detect modifications and also repairing the code after attacks by a network of small security
122
-
units called guards. These guards can be programmed to perform tasks such as checksumming the program code, and they work in concert to create mutual protection.
123
-
In this thesis, you will devise, implement and evaluate such as an approach in the context of modern Java software with dependencies. An open question is how to set up guard inside or around dependency code.</p>
124
-
<ol>
125
-
<li ><p><ahref="https://link.springer.com/chapter/10.1007/3-540-47870-1_10">Protecting Software Code by Guards</a></p>
126
-
</li>
127
-
<li ><p><ahref="https://dl.acm.org/doi/abs/10.1145/353323.353383">Reflection as a mechanism for software integrity verification</a></p>
128
-
</li>
129
-
<li ><p><ahref="https://dl.acm.org/doi/abs/10.1145/3274694.3274732">Practical integrity protection with oblivious hashing</a></p>
130
-
</li></ol>
131
-
132
-
<h3 >Dynamic Introspection of Dependencies in Java Applications</h3>
133
-
<p>Contact: Aman Sharma</p>
134
-
<p>Description: We aim to design and develop a prototype for dynamic introspection of dependencies in Java applications. This would enable real-time tracking and decision based on the dependency execution context. By leveraging Java's instrumentation capabilities, the proposed system will monitor and identify the active dependencies at any given
135
-
point during program execution. The focus will be on minimizing performance
136
-
overhead to ensure that the introspection process does not significantly impact the application's responsiveness or efficiency, while integrating seamlessly with any existing Java application.
137
-
Rigorous evaluation against various benchmarks will be one to assess its accuracy,
138
-
performance, and usability.</p>
139
-
140
-
<h3 >Automatic Backporting of Java Libraries to Older Bytecode Versions</h3>
141
-
Contact: Aman Sharma
142
-
<p>Description:
143
-
With the rapid evolution of Java, libraries often get updated to new bytecode versions. This causes compatibility issues and breakages for
144
-
applications that are still running on older versions of Java. To address this, a possible solution is to automatically backport Java libraries to older bytecode
145
-
versions. This thesis will focus on designing and implementing an automated tool for backporting Java libraries. The tool should be capable of translating new bytecode
146
-
instructions to their older equivalents, maintaining the functional behavior of the library while ensuring compatibility with older Java versions. An open question is
147
-
how to handle new language features and APIs that do not have direct equivalents in older versions.</p>
148
-
<ol>
149
-
<li ><p><ahref="https://ieeexplore.ieee.org/abstract/document/9540328/">Back to the past–analysing backporting practices in package dependency networks</a></p>
150
-
</li>
151
-
<li ><p><ahref="https://inria.hal.science/hal-01355859/file/icsme_hal.pdf">Recommending code changes for automatic backporting of Linux device drivers</a></p>
152
-
</li>
153
-
<li ><p><ahref="https://arxiv.org/abs/2405.07204">Transforming C++11 Code to C++03 to Support Legacy Compilation Environments</a></p>
<p>This thesis will explore the concept of reproducible JIT compilation, focusing on the challenges and solutions for ensuring consistent and repeatable execution of
159
120
program compilation across different runs. By analyzing the factors that contribute to variability in JIT compilation, such as optimization heuristics, runtime conditions,
0 commit comments