# ghbuster **Repository Path**: mirrors_DataDog/ghbuster ## Basic Information - **Project Name**: ghbuster - **Description**: A tool to identify and investigate inauthentic GitHub user accounts and repositories. - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-09 - **Last Updated**: 2026-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ghbuster **ghbuster** is a tool to detect suspicious GitHub repositories and users using heuristics. It is designed to help identify potentially malicious or inauthentic accounts and repositories on GitHub.

ghbuster

## Usage Install `uv` if needed: ```bash brew install astral-sh/uv/uv # or see https://docs.astral.sh/uv/getting-started/installation/ for other platforms ``` You can then install ghbuster: ```bash uv pip install "git+https://github.com/DataDog/ghbuster.git" ``` Then run it using: ```bash export GITHUB_TOKEN= ghbuster ``` ## Heuristics ### Repository heuristics | **ID** | **Name** | **Description** | |:-:|:-:|:-:| | [repo.commits_suspicious_unlinked_emails](./ghbuster/heuristics/repo_commits_only_from_suspicious_unlinked_emails.py) | Repository commits only from suspicious unlinked emails | Detects when a repository has commits with unlinked emails that also don't match the owner's username or full name. | | [repo.stargazers_joined_same_day](./ghbuster/heuristics/repo_has_stargazzers_who_joined_the_same_day.py) | Repository has stargazers who joined the same day | Detects when a repository has a large proportion of its stargazers who joined GitHub on the same day, which may indicate a coordinated effort to boost the repository's popularity. | | [repo.starred_by_suspicious_users](./ghbuster/heuristics/repo_starred_by_suspicious_users.py) | Repository starred by suspicious users | Detects when a repository has over 80 % of stars from suspicious users matching heuristics they may be inauthentic. | ### GitHub user heuristics | **ID** | **Name** | **Description** | |:-:|:-:|:-:| | [user.commits_unlinked_emails](./ghbuster/heuristics/user_has_only_commits_from_unlinked_emails.py) | User has only commits from unlinked emails | Detects when all of a user's commits are from emails not linked to their GitHub profiles. This may indicate a threat actor leveraging distinct inauthentic accounts. | | [user.forks_from_taken_down_repos](./ghbuster/heuristics/user_has_forks_from_taken_down_repos.py) | User has forks of taken-down repositories | Detects when a user has forks from repositories that have been taken down. This may indicate that the user is being leveraged as part of a campaign to make inauthentic repositories appear legitimate. | | [user.just_joined](./ghbuster/heuristics/user_metadata_basic.py) | User recently joined GitHub | The GitHub user joined the platform less than 7 days ago. | | [user.low_community_activity](./ghbuster/heuristics/user_has_low_community_activity.py) | User with low community activity | Detects when a user has very low community activity. This may indicate that the user is inauthentic. | | [user.missing_common_fields](./ghbuster/heuristics/user_metadata_basic.py) | User has none of the common profile fields set | Detects when a GitHub is missing a number of highly-common fields (name, company, bio, location) in their profile. | | [user.repos_only_forks](./ghbuster/heuristics/user_has_only_forks.py) | User has only forks | Detects all of a user's repositories are forks. This may be an indication that the user is used solely to make other repositories appear legitimate. | ## Related research - https://media.defcon.org/DEF%20CON%2033/DEF%20CON%2033%20presentations/Christophe%20Tafani-Dereeper%20Matt%20Muir%20-%20Weaponizing%20Trust%20Investigating%20a%20Threat%20Actor%20Targeting%20Security%20Researchers%20and%20Academics.pdf - https://securitylabs.datadoghq.com/articles/mut-1244-targeting-offensive-actors/ ## Development To run the local ghbuster version, use: ```bash uv venv export GITHUB_TOKEN= uv run python -m ghbuster ``` To run the tests, use: ```bash uv run python -m unittest discover tests/heuristics ``` To generate the documentation, use: ```bash uv run python -m scripts.generate_heuristics_docs README.md ```