Notes

Notes, not a blog! I intend to write about things I learn, and things I want to remember. I also update old ones as I revisit topics and learn more.

If you're reading this and you're probably considering a PhD or are already in one please feel to reach out to me if you have any questions or just want to chat. I'm always happy to help.

As a PhD student, you will have your highs and lows just like anything you've put a lot of time and effort into. It's important to recognize both and have a community to share them both equally.

Here are a few resources that have helped me along the way in addition to all the help and support I got from my advisors, friends, and family.

Few more that are just as important but also general good advice:

What I strive to be:

All of these people will play a role in my ultimate success as a dystopian warlord philosopher. However, the most important person in my gang will be a systems programmer. A person who can debug a device driver or a distributed system is a person who can be trusted in a Hobbesian nightmare of breathtaking scope; a systems programmer has seen the terrors of the world and understood the intrinsic horror of existence. The systems programmer has written drivers for buggy devices whose firmware was implemented by a drunken child or a sober goldfish. The systems program- mer has traced a network problem across eight machines, three time zones, and a brief diversion into Amish country, where the problem was transmitted in the front left hoof of a mule named Deliverance. The systems program- mer has read the kernel source, to better understand the deep ways of the universe, and the systems programmer has seen the comment in the scheduler that says β€œDOES THIS WORK LOL,” and the systems programmer has wept instead of LOLed, and the systems programmer has submitted a kernel patch to restore balance to The Force and fix the priority inversion that was causing MySQL to hang. A systems programmer will know what to do when society breaks down, because the systems programmer already lives in a world without law.

βˆ’ The Night Watch, James Mickens

Context

  • The Linux kernel
  • Building the kernel
  • Intermediate Representation
  • [Whole Program Bitcode]
  • Analysis Tools
  • Static Analysis
  • Program Representation
  • Alias Analysis
    • Data-flow Analysis
    • Type-based Analysis

Various analysis tools use the LLVM bitcode representation of the source. Compiling a single source file into bitcode is straightforward.

  1. clang -S -emit-llvm <file.c> to get the readable bitcode.
  2. clang -c -emit-llvm <file.c> to get the binary bitcode.

However, compiling large projects like the Linux kernel into bitcode is not as straightforward.

At a high level, each *.c source file is compiled into an object file. Object files .o in a sub-system are linked together to into an intermediate built-in.a file. Finally, all the built-in.a files are linked together to get the final kernel image vmlinux.

Continue Reading β†’

I worked as a Research Intern at the Computer Science Laboratory at SRI International this 2022 Summer.

The main research objective we started of with was:

How do we protect the integrity of open-source software projects from malicious actors and influence operations within the community?

The motivation for this research comes from the fact that open-source software has become a critical part of our infrastructure. And we have seen multiple attacks on open-source projects that have resulted in supply chain attacks and other security incidents downstream. With this larger goal in mind, we first tried to tackle a smaller problem:

Continue Reading β†’

I interned at the Intelligent Systems Laboratory at PARC during the Summer of 2021. The problem, at the high level was:

How would you go about removing backdoors from a control binary?

I primarily contributed to the binary de-compilation and program analysis work. Dabbed in a bit of program re-synthesis.

More details in the paper CONSTRUCT: A Program Synthesis Approach for Reconstructing Control Algorithms from Embedded System Binaries in Cyber-Physical Systems.

I was part of the Shadow PC for IEEE S&P 2020. THe Shadow PCs replicate the entire peer review process of a conference in parallel to the actual conference. This includes reading and reviewing papers, debating our reviews and scores with other members, and finally arriving at a consensus on the paper's accepted. The results of the shadow PC are then compared with main PC to see if any papers had strong disagreements.

The reading and review is in itself not very different from what we do as graduate stedents. But comparing our reviews with those of others and debating the merits of each paper was a great learning experience. This extended to the comparison of our reviews with those of the main PC. It was interesting to see how the main PC arrived at their decisions and how they differed from ours.

Continue Reading β†’