Language Selection

English French German Italian Portuguese Spanish

Fuzzing Rumpkernel Syscalls Part 1

Filed under
OS
Development
BSD

It has been a great opportunity to contribute to NetBSD as a part of Google Summer Of Code '20. The aim of the project I am working on is to setup a proper environment to fuzz the rumpkernel syscalls. This is the first report on the progress made so far.

Rumpkernels provide all the necessary components to run applications on baremetal without the necessity of an operating system. Simply put it is way to run kernel code in user space.

The main goal of rumpkernels in netbsd is to run,debug,examine and develop kernel drivers as easy as possible in the user space without having to run the entire kernel but run the exact same kernel code in userspace. This makes most of the components(drivers) easily portable to different environments.

Rump Kernels are constructed out of components, So the drivers are built as libraries and these libraries are linked to an interface(some application) that makes use of the libraries(drivers). So we need not build the entire monolithic kernel just the required parts of the kernel.

Read more

Fuzzing the NetBSD Network Stack and More

  • Fuzzing the NetBSD Network Stack in a Rumpkernel Environment Part 1

    The objective of this project is to fuzz the various protocols and layers of the network stack of NetBSD using rumpkernel. This project is being carried out as a part of GSoC 2020. This blog post is regarding the project, the concepts and tools involved, the objectives and the current progress and next steps.

  • Make system(3) and popen(3) use posix_spawn(3) internally Part 1

    This is my first report for the Google Summer of Code project I am working on for NetBSD.

    Prior work: In GSoC 2012 Charles Zhang added the posix_spawn syscall which according to its SF repository at the time (maybe even now, I have not looked very much into comparing all other systems and libcs + kernels) is an in-kernel implementation of posix_spawn which provides performance benefits compared to FreeBSD and other systems which had a userspace implementation.

    After 1 week of reading POSIX and writing code, 2 weeks of coding and another 1.5 weeks of bugfixes I have successfully implemented posix_spawn in usage in system(3) and popen(3) internally.

    The biggest challenge for me was to understand POSIX, to read the standard. I am used to reading more formal books, but I can't remember working with the posix standard directly before.

    The next part of my Google Summer of Code project will focus on similar rewrites of NetBSD's sh(1).

More Reports About GSoC-Sponsored NetBSD Work

  • GSoC Reports: Curses Library Automated Testing Part 1

    My GSoC project under NetBSD involves the development of test framework of curses library. Automated Test Framework (ATF) was introduced in 2007 but ATF cannot be used directly for curses testing for several reasons most important of them being curses has functions which do timed reads/writes which is hard to do with just piping characters to test applications. Also, stdin is not a tty device and behaves differently and may affect the results. A lot of work regarding this has been done and we have a separate test framework in place for testing curses.

    The aim of project is to build a robust test suite for the library and complete the SUSv2 specification. This includes writing tests for the remaining functions and enhancing the existing ones. Meanwhile, the support for complex character function has to be completed along with fixing some bugs, adding features and improving the test framework.

  • GSoC Reports: Extending the functionality of NetPGP Part 1

    NetPGP is a library and suite of tools implementing OpenPGP under a BSD license. As part of Google Summer of Code 2020, we are working to extend its functionality and work towards greater parity with similar tools. During the first phase, we have made the following contributions

    Added the Blowfish block cipher
    ECDSA key creation
    ECDSA signature and verification
    Symmetric file encryption/decryption
    S2K Iterated+Salt for symmetric encryption

Enhancing Syzkaller support for NetBSD, Part 1

  • Enhancing Syzkaller support for NetBSD, Part 1

    I have been working on the project - Enhance the Syzkaller support for NetBSD, as a part of GSoc’20. Past two months have given me quite an enriching experience, pushing me to comprehend more knowledge on fuzzers. This post would give a peek into the work which has been done so far.

Benchmarking NetBSD, first evaluation report

  • Benchmarking NetBSD, first evaluation report

    This report was written by Apurva Nandan as part of Google Summer of Code 2020.

    My GSoC project under NetBSD involves developing an automated regression and performance test framework for NetBSD that offers reproducible benchmarking results with detailed history and logs across various hardware & architectures.

    To achieve this performance testing framework, I am using the Phoronix Test Suite (PTS) which is an open-source, cross-platform automated testing/benchmarking software for Linux, Windows and BSD environments. It allows the creation of new tests using simple XML files and shell scripts and integrates with revision control systems for per-commit regression testing.

NetBSD Is Making Progress On Benchmarking

  • NetBSD Is Making Progress On Benchmarking For Performance/Regression Testing

    That work for automated benchmarking of NetBSD for GSoC 2020 is, of course, being done via the Phoronix Test Suite and Phoromatic. While the Phoronix Test Suite has been running on BSDs for years, my focus has primarily been on FreeBSD and DragonFlyBSD along with their derivatives.

    Student developer Apurva Nandan is working for the NetBSD project on making the Phoronix Test Suite in good shape for NetBSD, which primarily is about porting of existing test profiles to see that they run gracefully on NetBSD. While there are many BSD and Linux test profiles, adapting to NetBSD often comes down to build system differences or external dependencies not being available for different programs currently on NetBSD.

    Apurva last week wrote a GSoC status update on this initiative via the NetBSD blog. Progress is being made on getting more tests up and running on NetBSD. Great to see good progress is being made on getting more tests up and running and have previously let Apurva know already that those NetBSD improvements will be happily accepted upstream once complete.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

More in Tux Machines

Android Leftovers

GNUnet 0.13.2 released

This is a bugfix release for gnunet 0.13.1. It fixes some build issues and contains changes to the REST API implmementation (no change in the API itself) as well as OpenID Connect related fixes to re:claimID. Read more

What Does Mozilla Firing 25% of its Workforce Tells us About its Future

Mozilla has fired 250 employees which is 25% of its workforce. Why Mozilla did it and what lies ahead for Mozilla? Read more

HeliOS is a Tiny Embedded OS Designed for Arduino Boards

Mannie Peterson (aka FellFromTree) has developed an embedded operating system called HeliOS that’s designed specifically for 8-bit and 32-bit Arduino boards, and can easily be used from the Arduino IDE. HeliOS is said to have only 21 function calls and implements cooperative and event-driven multitasking, task notification/messaging, timers, and memory management. It’s a non-preemptive multitasking kernel so you won’t have to deal with mutexes. The developer explains how scheduling works with HeliOS: HeliOS uses a run-time balanced strategy which ensures tasks with shorter run-times are prioritized over tasks with longer run-times. This ensures all running tasks receive approximately equal total run-time without using context switching. The other multitasking option available in HeliOS is event driven multitasking, which uses the wait/notify and timer interfaces. Mixing cooperative and event driven tasks in HeliOS is not a problem. Read more