About
Back in 2016, I decided to try my hand at programming a snake game after watching a YouTube video. That’s when I tumbled head first into the rabbit hole of programming. Fast forward to today, and I hold a Master’s degree in Computer Science from the Norwegian University of Science and Technology. I’m currently expanding my skill set at the University of Tromsø, where I’m studying in organizational leadership with an expected graduation date of June 2024.
Throughout the years, I’ve gained experience in a diverse set of programming languages. Python and backend development are my specialties. That said, my interests extend to frontend development and design, as evidenced by this website! I’ve daily driven Linux for the last five years, so I know my way around the terminal. I currently use Neovim as my editor of choice, on Arch Linux. I’ve even written a popular plugin for Neovim!
Security is another interest of mine. I’ve successfully identified and disclosed critical vulnerabilities that were present on a well-known website. At university, I’ve assisted students in various advanced topics like network protocols, reverse engineering, and cryptography. Through my research, I’ve explored the hidden threat of cryptojacking, where websites secretly use visitors’ computers to mine cryptocurrencies. My findings have been published in several peer-reviewed papers, which you can find in the publications section.
I am currently looking for new job opportunities. If you’d like to discuss potential collaborations or have any questions, feel free to connect with me.
Email: [email protected]
Languages
Frameworks and libraries
Technologies
Projects
![print-buddy](/_next/image?url=%2Fim-print-buddy.webp&w=1080&q=75)
PrintBuddy
Web application that suggests 3D printing tips and settings for platforms like Printables and Thingiverse. Leverages generative artificial intelligence. Currently in beta.
![img-clip](/_next/image?url=%2Fimg-clip.webp&w=1080&q=75)
img-clip.nvim
Cross-platform Neovim plugin for embedding images into markup languages like LaTeX, Markdown and Typst. Endorsed by the community with over 1000 users and 400 stars on GitHub.
![website](/_next/image?url=%2Fwebsite.webp&w=1080&q=75)
Website
Personal website built with modern web technologies, showcasing my projects, skills and experience.
![emcc-obf](/_next/image?url=%2Fwasm.webp&w=1080&q=75)
emcc-obf
Modified Emscripten compiler with LLVM-level obfuscation. This is the first compiler that is able to obfuscate WebAssembly.
Experience
Software engineer
Sep 2022 - May 2023NTNUi Sprint
Trondheim, NorwayDeveloped and maintained the membership system for Norway's largest student organization with over 15,000 members. Optimized the test scripts and worked on payment integration. Collaborated within a 20 person team, extensively using GitHub for pull requests and code reviews.
Internship
Jun 2022 - Aug 2022Variant
Trondheim, NorwayDeveloped a responsive web application for inspectors at the Norwegian Public Roads Administration, enabling on-site photo editing and annotation using tablets. Conducted in-depth user interviews to gather requirements. Collaborated with a cross-functional team using agile methodologies.
Teaching assistant
Jan 2022 - Dec 2022NTNU
Trondheim, NorwayEvaluated assignments and assisted over 100 students in network programming and security. Taught students various advanced topics, including threaded programming, network protocols, reverse engineering, and cryptography.
Education
Organizational Leadership
Aug 2023 - Jun 2024The Arctic University of Norway
Tromsø, NorwayMaster of Science in Computer Science
Aug 2021 - Jun 2023Norwegian University of Science and Technology
Trondheim, NorwayBachelor of Science in Computer Science
Aug 2018 - Jun 2021Norwegian University of Science and Technology
Trondheim, NorwayPublications
Cryptic Bytes: WebAssembly Obfuscation for Evading Cryptojacking Detection
https://arxiv.org/abs/2403.15197
Pre-print
2024WebAssembly has gained significant traction as a high-performance, secure, and portable compilation target for the Web and beyond. However, its growing adoption has also introduced new security challenges. One such threat is cryptojacking, where websites mine cryptocurrencies on visitors' devices without their knowledge or consent, often through the use of WebAssembly. While detection methods have been proposed, research on circumventing them remains limited. In this paper, we present the most comprehensive evaluation of code obfuscation techniques for WebAssembly to date, assessing their effectiveness, detectability, and overhead across multiple abstraction levels. We obfuscate a diverse set of applications, including utilities, games, and crypto miners, using state-of-the-art obfuscation tools like Tigress and wasm-mutate, as well as our novel tool, emcc-obf. Our findings suggest that obfuscation can effectively produce dissimilar WebAssembly binaries, with Tigress proving most effective, followed by emcc-obf and wasm-mutate. The impact on the resulting native code is also significant, although the V8 engine's TurboFan optimizer can reduce native code size by 30% on average. Notably, we find that obfuscation can successfully evade state-of-the-art cryptojacking detectors. Although obfuscation can introduce substantial performance overheads, we demonstrate how obfuscation can be used for evading detection with minimal overhead in real-world scenarios by strategically applying transformations. These insights are valuable for researchers, providing a foundation for developing more robust detection methods. Additionally, we make our dataset of over 20,000 obfuscated WebAssembly binaries and the emcc-obf tool publicly available to stimulate further research.
SoK: Analysis Techniques for WebAssembly
https://doi.org/10.3390/fi16030084
MDPI Future Internet
2024WebAssembly is a low-level bytecode language that enables high-level languages like C, C++, and Rust to be executed in the browser at near-native performance. In recent years, WebAssembly has gained widespread adoption and is now natively supported by all modern browsers. Despite its benefits, WebAssembly has introduced significant security challenges, primarily due to vulnerabilities inherited from memory-unsafe source languages. Moreover, the use of WebAssembly extends beyond traditional web applications to smart contracts on blockchain platforms, where vulnerabilities have led to significant financial losses. WebAssembly has also been used for malicious purposes, like cryptojacking, where website visitors' hardware resources are used for crypto mining without their consent. To address these issues, several analysis techniques for WebAssembly binaries have been proposed. This paper presents a systematic review of these analysis techniques, focusing on vulnerability analysis, cryptojacking detection, and smart contract security. The analysis techniques are categorized into static, dynamic, and hybrid methods, evaluating their strengths and weaknesses based on quantitative data. Our findings reveal that static techniques are efficient but may struggle with complex binaries, while dynamic techniques offer better detection at the cost of increased overhead. Hybrid approaches, which merge the strengths of static and dynamic methods, are not extensively used in the literature and emerge as a promising direction for future research. Lastly, this paper identifies potential future research directions based on the state of the current literature.