100

GitHub - tleyden/keynuker: ?? KeyNuker - nuke AWS keys accidentally leaked to Gi...

 6 years ago
source link: https://github.com/tleyden/keynuker
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

If you accidentally leak your AWS keys on GitHub, it won’t be long before attackers scrape this information and hijack your account for nefarious purposes.

KeyNuker scans public activity across all Github users in your Github organization(s) and proactively deletes any AWS keys that are accidentally leaked. It gets the list of AWS keys to scan by directly connecting to the AWS API.

helicopter System Overview

  • Polling loop to monitor all AWS keys for users of the AWS account

  • Polling loop to monitor Github activity of all users in your github organization(s)

  • Reactively nuke any AWS keys detected to have leaked to Github via the AWS API

stopwatch System Interaction w/ Timeline

hammer_and_wrench Installing KeyNuker closed_lock_with_keyboom

KeyNuker is packaged as a series of Apache OpenWhisk actions, and can run anywhere that OpenWhisk can run.

Get the code:

$ go get -u -v -t github.com/tleyden/keynuker

Follow the steps in the Installation Instructions to setup OpenWhisk and set the required environment variables, and then run the installation script.

$ cd $GOPATH/src/github.com/tleyden/keynuker/
$ python install.py

After the installation script completes, you will have several OpenWhisk actions:

$ wsk action list
/yourusername_dev/github-user-events-scanner-nuker                     private sequence
/yourusername_dev/fetch-aws-keys-write-doc                             private sequence
etc ...

white_check_mark Features

  1. Never has access to AWS Secret Access Keys, only to AWS Access Key IDs.

  2. Noise-free because it scans actual AWS keys rather than taking a pattern matching approach that produces false positives

  3. Takes actions rather than sending alerts, since depending on people to respond to alerts might introduce a costly delay in reaction time

  4. Covers all public github activity of users in your github org(s), since they might leak AWS keys on their personal repos or even 3rd party repos

  5. Requires minimal IAM Permissions: iam:DeleteAccessKey, iam:ListAccessKeys, iam:ListUsers

  6. Ultra-low baseline running cost due to serverless architecture

  7. Lowest common denominator and requires zero effort or workflow change for users

white_circle Roadmap / Goals

  1. Low-latency round trip between AWS keys leaking and being nuked. Currently uses polling approach, but the goal is to layer a webhook approach on top in order to lower the latency.

  2. Scale up to monitoring hundreds of AWS accounts and thousands of github organizations/repos/users.

  3. Cove as much of the Github API surface area as possible (gists, issue comments, etc)

  4. Pluggable architecture so that other cloud key providers (Google Cloud Platform, Azure, etc) and other leak sources (BitBucket, Jira, etc) can be added later.

checkered_flag Project status: Early alpha stage

The basic end-to-end functionality is working, except for notifications, but there are still a lot of places where AWS keys can leak to Github and go undetected:

  • Github Gists

  • Other Github API surface area that isn’t covered yet

notebook Documentation

Table 1. Documentation

Doc Link

README (this document)

README

Installation guide

Installation Instructions

Post-installation verification

Verify Installation

Developer guide

Developer guide

AWS Security Resources

AWS Security Resources

file_folder Related Projects

  • Git Secrets — Prevents you from committing secrets and credentials into git repositories

  • Git Hound —  Git plugin that helps prevent sensitive data from being committed into a repository by sniffing potential commits against PCRE regular expressions.

  • GitRob — Reconnaissance tool for GitHub organizations

  • pre-commit - A pre-commit framework, that includes the detect-aws-credentials plugin

  • TruffleHog — A tool that Searches Entire Commit History in Git Repositories for High Entropy Strings to Find Secrets Accidentally Committed to Version Control

  • BFG Repo cleaner - Removes large or troublesome blobs like git-filter-branch does

  • AWS_RISK_CREDENTIALS_EXPOSED CloudWatch Event

gear Related Services

lock Security At Depth

Taking a security-at-depth approach, in addition to running KeyNuker you should also consider the following precautions:

  • Limit ec2 actions to only the regions that you use, eg ("StringEquals": {"ec2:Region": "us-east-1"})

  • Limit ec2 actions to only the instance types that you use, eg ("StringLikeIfExists": {"ec2:InstanceType": ["t1.*"]})

  • Use temporary AWS keys that require MFA

  • Minimize chance of AWS keys from ever leaking in the first place using tools such as Git Secrets which can be configured as a pre-commit hook.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK