Skip to content

Commit 151c823

Browse files
authored
Expand thesis with new topics on dependency management
Added new sections on hermetic build tools and dependency fingerprinting to the thesis.
1 parent a2da26b commit 151c823

1 file changed

Lines changed: 34 additions & 35 deletions

File tree

master-thesis.md

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,40 @@ trustworthy software systems.</p>
127127
<li > <a href="https://github.com/rschwietzke/jmh-C2-compile">https://github.com/rschwietzke/jmh-C2-compile</a> </li>
128128
</ol>
129129

130+
### Beyond Declared Dependencies: The Limits of Hermetic Build Tools
131+
Contact: Aman Sharma
132+
133+
Tools like [Hermeto][herm1] promise hermetic container builds by prefetching all declared dependencies before network isolation kicks in. In theory, the build runs against a closed, auditable set of inputs. In practice, the hermetic guarantee is layered and partial: Hermeto addresses the *declared dependency layer* — what appears in lockfiles like `package-lock.json`, `Cargo.lock`, or `requirements.txt` — but leaves the *toolchain and native dependency layer* to the user. Nix offers a theoretically stronger model: content-addressed derivations, sandboxed builds, and a store that captures the full dependency closure including compilers and system libraries. An ecosystem of automated translation tools — `dream2nix`, `poetry2nix`, `cargo2nix` [2] — attempts to generate these derivations from standard lockfiles, but the two models rest on different assumptions about what a hermetic boundary even means.
134+
135+
This thesis investigates the *hermetic gap*: the delta between what a tool declares as its dependency set and what a build actually consumes. The central question is whether Nix's stronger closure model translates into a meaningfully tighter boundary in practice, and what classes of dependencies — undeclared system libraries, toolchain leakage, native extension bindings, implicit platform assumptions — fall outside the boundary regardless of which model is used.
136+
137+
Related Work:
138+
139+
[1] [Hermeto — prefetch CLI for hermetic container builds](https://github.com/hermetoproject/hermeto)
140+
141+
[2] [dream2nix — automated Nix derivation generation from package manager metadata](https://github.com/nix-community/dream2nix)
142+
143+
[3] [Zheng, Adams, Hassan — On Build Hermeticity in Bazel-Based Build Systems, IEEE Software 2025](https://mcislab.github.io/publications/2025/ieeesw-shenyu.pdf)
144+
145+
[4] [Lamb & Zacchiroli — Reproducible Builds: Increasing the Integrity of Software Supply Chains, IEEE Software 2021](https://arxiv.org/pdf/2104.06020)
146+
147+
[5] [SLSA — Supply-chain Levels for Software Artifacts framework](https://slsa.dev/)
148+
149+
[6] [The Design Space of Lockfiles Across Package Managers, Empirical Software Engineering 2025](https://arxiv.org/abs/2505.04834)
150+
151+
[herm1]: https://github.com/hermetoproject/hermeto
152+
153+
154+
### Dependency Fingerprinting: Reconstructing Full Dependency Trees from Partial Observations
155+
Contact: Aman Sharma, Eric Cornelissen
156+
157+
Package registries expose rich dependency metadata, but in some settings (e.g., private registries, zero-knowledge SBOMs, or obfuscated build manifests) only a subset of a package's dependencies is known.
158+
This thesis investigates how much of a package's full dependency tree can be inferred from a partial observation of its dependencies.
159+
Given a set of seed dependencies — a few known direct or transitive packages — the goal is to reconstruct the remaining dependency graph using statistical co-occurrence patterns mined from public registries.
160+
The study will evaluate inference accuracy as a function of the number and "uniqueness" of seed packages, and compare reconstruction fidelity across ecosystems (Maven, NPM, Go, Rust).
161+
The results have direct implications for the privacy guarantees of partial SBOM disclosures and zero-knowledge proofs over dependency sets.
162+
163+
130164
### Cross-Ecosystem Dependency Resolution: Applying Foreign Resolver Algorithms Across Build Toolchains
131165
Contact: Aman Sharma
132166

@@ -243,41 +277,6 @@ The stages of package installation
243277
</ol>
244278

245279

246-
### Beyond Declared Dependencies: The Limits of Hermetic Build Tools
247-
Contact: Aman Sharma
248-
249-
Tools like [Hermeto][herm1] promise hermetic container builds by prefetching all declared dependencies before network isolation kicks in. In theory, the build runs against a closed, auditable set of inputs. In practice, the hermetic guarantee is layered and partial: Hermeto addresses the *declared dependency layer* — what appears in lockfiles like `package-lock.json`, `Cargo.lock`, or `requirements.txt` — but leaves the *toolchain and native dependency layer* to the user. Nix offers a theoretically stronger model: content-addressed derivations, sandboxed builds, and a store that captures the full dependency closure including compilers and system libraries. An ecosystem of automated translation tools — `dream2nix`, `poetry2nix`, `cargo2nix` [2] — attempts to generate these derivations from standard lockfiles, but the two models rest on different assumptions about what a hermetic boundary even means.
250-
251-
This thesis investigates the *hermetic gap*: the delta between what a tool declares as its dependency set and what a build actually consumes. The central question is whether Nix's stronger closure model translates into a meaningfully tighter boundary in practice, and what classes of dependencies — undeclared system libraries, toolchain leakage, native extension bindings, implicit platform assumptions — fall outside the boundary regardless of which model is used.
252-
253-
Related Work:
254-
255-
[1] [Hermeto — prefetch CLI for hermetic container builds](https://github.com/hermetoproject/hermeto)
256-
257-
[2] [dream2nix — automated Nix derivation generation from package manager metadata](https://github.com/nix-community/dream2nix)
258-
259-
[3] [Zheng, Adams, Hassan — On Build Hermeticity in Bazel-Based Build Systems, IEEE Software 2025](https://mcislab.github.io/publications/2025/ieeesw-shenyu.pdf)
260-
261-
[4] [Lamb & Zacchiroli — Reproducible Builds: Increasing the Integrity of Software Supply Chains, IEEE Software 2021](https://arxiv.org/pdf/2104.06020)
262-
263-
[5] [SLSA — Supply-chain Levels for Software Artifacts framework](https://slsa.dev/)
264-
265-
[6] [The Design Space of Lockfiles Across Package Managers, Empirical Software Engineering 2025](https://arxiv.org/abs/2505.04834)
266-
267-
[herm1]: https://github.com/hermetoproject/hermeto
268-
269-
270-
### Dependency Fingerprinting: Reconstructing Full Dependency Trees from Partial Observations
271-
Contact: Aman Sharma, Eric Cornelissen
272-
273-
Package registries expose rich dependency metadata, but in some settings (e.g., private registries, zero-knowledge SBOMs, or obfuscated build manifests) only a subset of a package's dependencies is known.
274-
This thesis investigates how much of a package's full dependency tree can be inferred from a partial observation of its dependencies.
275-
Given a set of seed dependencies — a few known direct or transitive packages — the goal is to reconstruct the remaining dependency graph using statistical co-occurrence patterns mined from public registries.
276-
The study will evaluate inference accuracy as a function of the number and "uniqueness" of seed packages, and compare reconstruction fidelity across ecosystems (Maven, NPM, Go, Rust).
277-
The results have direct implications for the privacy guarantees of partial SBOM disclosures and zero-knowledge proofs over dependency sets.
278-
279-
280-
281280

282281

283282

0 commit comments

Comments
 (0)