Håkon Harnes

I'm a developer from Norway.

$

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

Python
TypeScript
Lua
Bash
WebAssembly
Java
Rust
SQL
C
C++

Frameworks and libraries

FastAPI
Django
Next.js
Sveltekit
Express.js
Tailwind

Technologies

Linux
Docker
Git
AWS
CI/CD
OAuth
JWT

Projects

print-buddy

PrintBuddy

SvelteKit
FastAPI

Web application that suggests 3D printing tips and settings for platforms like Printables and Thingiverse. Leverages generative artificial intelligence. Currently in beta.

img-clip

img-clip.nvim

Lua
Bash
.NET

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

Website

TypeScript
Next.js
Tailwind

Personal website built with modern web technologies, showcasing my projects, skills and experience.

emcc-obf

emcc-obf

Docker
LLVM
WebAssembly

Modified Emscripten compiler with LLVM-level obfuscation. This is the first compiler that is able to obfuscate WebAssembly.

Experience

Software engineer

Sep 2022 - May 2023

NTNUi Sprint

Trondheim, Norway

Developed 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.

Python
Django
Pytest

Internship

Jun 2022 - Aug 2022

Variant

Trondheim, Norway

Developed 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.

TypeScript
Next.js

Teaching assistant

Jan 2022 - Dec 2022

NTNU

Trondheim, Norway

Evaluated 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.

Python
Java
JavaScript
Rust
Go
C
C#
C++

Education

Organizational Leadership

Aug 2023 - Jun 2024

The Arctic University of Norway

Tromsø, Norway
Marketing
Recruitment
Project management
Organizational theory
Organizational psychology
Employment law
Contract law

Master of Science in Computer Science

Aug 2021 - Jun 2023

Norwegian University of Science and Technology

Trondheim, Norway
Parallel computing
Security and privacy
Cryptography and network security
Low-level programming
Computer design
Computer architecture
Visual computing
Visual communication

Bachelor of Science in Computer Science

Aug 2018 - Jun 2021

Norwegian University of Science and Technology

Trondheim, Norway
Machine learning
Operating systems
Databases
Web development
Systems engineering
Network programming
Network and software security
Algorithms and datastructures
Computer architecture
Mathematics
Statistics

Publications

Cryptic Bytes: WebAssembly Obfuscation for Evading Cryptojacking Detection

https://arxiv.org/abs/2403.15197

WebAssembly 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.

WebAssembly
Obfuscation
Cybersecurity
Cryptojacking

SoK: Analysis Techniques for WebAssembly

https://doi.org/10.3390/fi16030084

MDPI Future Internet

2024

WebAssembly 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.

WebAssembly
Vulnerability analysis
Browser security
Cryptojacking
Smart contracts
© Håkon Harnes 2024