-
Notifications
You must be signed in to change notification settings - Fork 105
Google Summer of Code 2023
This page is WIP.
Welcome to the GCP Scanner Google Summer of Code 2023! We are excited you are here and encourage you to read through our ideas list and consider applying to our organization.
Candidate name
Proposal Title
Abstract (150 words max)
Detailed Proposal Description (1000 words max)
Previous work
Link to prototypes, Github profile and open-source contributions
Bibliography
Past GSoC results
Resume
Academic studies, previous work experience, internships
Open-source projects
Summer plan
Any other commitments, vacation, holidays?
Will you be available for full-time work during the GSoC timeslot?
Please note that we follow Google Python Coding Style Guide.
Idea Description: Currently, we have one giant scanning loop from where we launch GCP resource crawlers. We need to split each crawler into individual modules with proper error handling that will improve code readability and quality. We can leverage python classes for the state of execution control, config parsing and enabling/disabling certain functionality in the scanner.
Applicant Considerations: This is a good project for contributors who want to establish good Python coding practices and overall code hygiene.
Expected Outcome: All functions in crawl.py are split into individual Python classes, the main loop is split into individual functions with proper error handling per each function call.
Preferred Skills: Python and its best coding practices.
Mentors: Guillaume Jeanne, Jacob Butler
Project Size: 175h-350h
Difficulty Rating: Medium-Hard
Idea Description: Currently, GCP Scanner relies on Github Actions to perform functional and unit tests. Those tests cover the scanner's basic functionality but ~30% of code base and corner cases are still not covered. Moreover, we rely on GCP API volatile results to identify whether the test was successful or not which often leads to flakiness. The goal of this project is to improve the GCP Scanner test suite. More specifically we plan to
- split unit tests into individual functions;
- implement unit test for currently uncovered functionality such as impersonation, OAuth2 tokens, service account credentials;
- make unit and functional tests more flexible by checking for key components in the output rather than comparing it line by line;
- implement negative unit tests.
Applicant Considerations: The project could be a good learning opportunity for any contributor interested in code quality enhancement through proper testing, software development lifecycle and Github Actions.
Expected Outcome: Improved code coverage and less test failures.
Preferred Skills: Python, experience with Github Actions and software testing.
Possible Mentors: Jacob Butler
Project Size: 175h-350h
Difficulty Rating: Medium-Hard
Reference: Please navigate to our GCP Scanner Testing wiki page to learn more.
Idea Description: GCP Scanner currently supports comprehensive scanning of 13 GCP products. There are many more products which we would like it to cover, such as Cloud Run, Cloud DNS, Datastore, Dataflow, Cloud Composer, Cloud Build, Cloud Tasks, Cloud Scheduler, and other APIs.
Applicant Considerations: This project is good for contributors who are interested in learning about the GCP platform itself, various services offered on that platform and how to interact with them using Cloud API.
Expected Outcome: GCP scanner supports more GCP products.
Preferred Skills: Python, GCP API
Possible Mentors: Jacob Butler, Guillaume Jeanne
Project Size: 175h-350h
Difficulty Rating: Easy
Idea Description: GCP Scanner does not support parallel enumeration of GCP resources and parallel scanning of GCP targets. This project is aimed to address this shortcoming. There might also be a need to perform light-weight refactoring to enable parallelization.
Applicant Considerations: The project is good for candidates who want to get experience with software parallelization in Python.
Expected Outcome: GCP Scanner supports both parallel scanning of GCP resources and scan target parallelism.
Preferred Skills: Python, good understanding of software parallelism.
Possible Mentors: Maksim Shudrak
Project Size: 175h
Difficulty Rating: Medium
Idea Description: GCP scanner saves results in JSON files on disk. We currently recommend using gron Linux tool for parsing results in the terminal. This is not always convenient especially for large scans. In this project, the candidate is offered to implement a visualization tool capable of parsing and rendering GCP Scanner results in a convenient UI with search capabilities and ability to visualize interaction between GCP project resources. There are a couple of tools/frameworks to look for inspiration such as neo4j in BloodHound, cytoscape in Azure Stormspotter or GoJS for nmap in-browser results visualization. Another option would be to generate dot files for Graphviz and convert them into SVG with annotation and/or navigation.
Applicant Considerations: This is quite an ambitious project requiring contributors to quickly get familiar with various data visualization frameworks and ways to implement solutions on top of them. On the other hand, contributors will be able to work more independently and often use their own best judgment on what/how to implement certain functionality.
Expected Outcome: A tool capable of reading GCP Scanner results, rendering that result into UI (browser or standalone tool) with search and resource interaction features.
Preferred Skills: Experience with any data visualization framework.
Possible Mentors: Calle Svensson, Maksim Shudrak
Project Size: 350h
Difficulty Rating: Hard
We are open to any other ideas not listed here. Please describe the idea in your application but make sure it is appropriately sized for a 175 or 350 hours project.