Socket
Socket
Sign inDemoInstall

@data-leakage-protection/signatures

Package Overview
Dependencies
64
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @data-leakage-protection/signatures

Identify confidential and sensitive info in source code repos with signatures (IT secret definitions).


Version published
Maintainers
1
Created

Readme

Source

signatures (@data-leakage-protection/signatures)

logo

Product summary Identify confidential and sensitive info in source code repositories by data-loss "signatures".

@data-leakage-protection/signatures is a Node.js module offsite web page for storing and accessing to data-leakage detection definitions. We call the data structure that represents a data-leakage detection defintion a "signature." We store a community-tested list of signatures in a file called signatures.json.

Table of Contents

1. Security

citation Data leakage is the unauthorized transmission of data from within an organization to an external destination or recipient.1

One of the most common forms of data-loss (aka, "data leakage") happens when developers (inadvertently) commit and push passwords, access-tokens, and sensitive data to a source-control management system (like Git). Consequently, confidential information "leaks" into search results and commit history.

The signatures.json contains a growing list of definitions to help you detect secrets in your source code repositories.

SignatureDetected in
1.asc file extension
Potential cryptographic key bundle
extension
2.p12 file extension
PKCS#12 (.p12): potential cryptographic key bundle
extension
3.pem file extension
Potential cryptographic private key
extension
4.pfx file extension
PKCS#12 (.pfx): Potential cryptographic key bundle
extension
5.pkcs12 file extension
PKCS#12 (.pkcs12): Potential cryptographic key bundle
extension
61Password password manager database file
Feed it to Hashcat and see if you're lucky
extension
7AWS API Key
__
contents
8AWS CLI credentials file
__
path
9Apache htpasswd file
__
filename
10Apple Keychain database file
__
extension
11Azure service configuration schema file
__
extension
12Carrierwave configuration file
Can contain credentials for cloud storage systems such as Amazon S3 and Google Storage
filename
13Chef Knife configuration file
Can contain references to Chef servers
filename
14Chef private key
Can be used to authenticate against Chef servers
path
15Configuration file for auto-login process
Can contain username and password
filename
16Contains word: credential
__
path
17Contains word: password
__
path
18DBeaver SQL database manager configuration file
__
filename
19Day One journal file
Now it's getting creepy...
extension
20DigitalOcean doctl command-line client configuration file
Contains DigitalOcean API key and other information
path
21Django configuration file
Can contain database credentials, cloud storage system credentials, and other secrets
filename
22Docker configuration file
Can contain credentials for public or private Docker registries
filename
23Environment configuration file
__
filename
24Facebook Oauth
__
contents
25FileZilla FTP configuration file
Can contain credentials for FTP servers
filename
26FileZilla FTP recent servers file
Can contain credentials for FTP servers
filename
27GNOME Keyring database file
__
extension
28Generic API Key
__
contents
29Generic Secret
__
contents
30Git configuration file
__
filename
31GitHub
__
contents
32GitHub Hub command-line client configuration file
Can contain GitHub API access token
path
33GnuCash database file
__
extension
34Google (GCP) Service-account
__
contents
35Google Oauth
__
contents
36Heroku API Key
__
contents
37Hexchat/XChat IRC client server list configuration file
__
path
38Irssi IRC client configuration file
__
path
39Java keystore file
__
extension
40Jenkins publish over SSH plugin file
__
filename
41KDE Wallet Manager database file
__
extension
42KeePass password manager database file
Feed it to Hashcat and see if you're lucky
extension
43Little Snitch firewall configuration file
Contains traffic rules for applications
filename
44Log file
Log files can contain secret HTTP endpoints, session IDs, API keys and other goodies
extension
45Microsoft BitLocker Trusted Platform Module password file
__
extension
46Microsoft BitLocker recovery key file
__
extension
47Microsoft SQL database file
__
extension
48Microsoft SQL server compact database file
__
extension
49Mutt e-mail client configuration file
__
filename
50MySQL client command history file
__
filename
51NPM configuration file
Can contain credentials for NPM registries
filename
52Network traffic capture file
__
extension
53OmniAuth configuration file
The OmniAuth configuration file can contain client application secrets
filename
54OpenVPN client configuration file
__
extension
55PGP private key block
__
contents
56PHP configuration file
__
filename
57Password Safe database file
__
extension
58Password in URL
__
contents
59Pidgin OTR private key
__
filename
60Pidgin chat client account configuration file
__
path
61PostgreSQL client command history file
__
filename
62PostgreSQL password file
__
filename
63Potential Jenkins credentials file
__
filename
64Potential Linux passwd file
Contains system user information
path
65Potential Linux shadow file
Contains hashed passwords for system users
path
66Potential MediaWiki configuration file
__
filename
67Potential Ruby On Rails database configuration file
Can contain database credentials
filename
68Potential cryptographic private key
__
extension
69Potential jrnl journal file
Now it's getting creepy...
filename
70Private SSH key
_rsa
filename
71Private SSH key
_dsa
filename
72Private SSH key
_ed25519
filename
73Private SSH key
_ecdsa
filename
74RSA private key
__
contents
75Recon-ng web reconnaissance framework API key database
__
path
76Remote Desktop connection file
__
extension
77Robomongo MongoDB manager configuration file
Can contain credentials for MongoDB databases
filename
78Ruby IRB console history file
__
filename
79Ruby On Rails secret token configuration file
If the Rails secret token is known, it can allow for remote code execution (http://www.exploit-db.com/exploits/27527/)
filename
80Rubygems credentials file
Can contain API key for a rubygems.org account
path
81S3cmd configuration file
__
filename
82SFTP connection configuration file
__
filename
83SQL dump file
__
extension
84SQLite database file
__
extension
85SSH (DSA) private key
__
contents
86SSH (EC) private key
__
contents
87SSH (OPENSSH) private key
__
contents
88SSH configuration file
__
path
89Sequel Pro MySQL database manager bookmark file
__
filename
90Shell command alias configuration file
Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
91Shell command history file
__
filename
92Shell configuration file
(.exports): Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
93Shell configuration file
(.functions): Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
94Shell configuration file
(.extra): Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
95Shell configuration file
(bash, zsh, csh): Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
96Shell profile configuration file
(profile): Shell configuration files can contain passwords, API keys, hostnames and other goodies
filename
97Slack Token
__
contents
98Slack Webhook
__
contents
99T command-line Twitter client configuration file
__
filename
100Terraform variable config file
Can contain credentials for terraform providers
filename
101Tugboat DigitalOcean management tool configuration
__
filename
102Tunnelblick VPN configuration file
__
extension
103Twilio API Key
__
contents
104Twitter Oauth
__
contents
105Ventrilo server configuration file
Can contain passwords
filename
106Windows BitLocker full volume encrypted data file
__
extension
107cPanel backup ProFTPd credentials file
Contains usernames and password hashes for FTP accounts
filename
108git-credential-store helper credentials file
__
filename
109gitrob configuration file
__
filename

2. Install

Before you begin, you'll need to have these

Terminal Open a Terminal and enter the following command:

# As a dependency in your Node.js app
npm i @data-leakage-protection/signatures --save-prod

3. Usage

Use @data-leakage-protection/signatures.signatures to find file extensions, names, and paths that commonly leak secrets.

const { signatures } = require('@data-leakage-protection/signatures')
// ⚠️ Note: the 'recursive-readdir' module is not bundled with
//    @data-leakage-protection/signatures. 'recursive-readdir' is referenced
//    only as an example.
const recursiveReaddir = require('recursive-readdir')

const potentialLeaks = recursiveReaddir('/path/to/local/repo')
  .then(files => files
    .map(file => signatures
    .map(signature => signature.match(file)))
  )
  .catch(err => err)

4. API

The @data-leakage-protection/signatures module provides a Signatures class, which validates @data-leakage-protection/signatures and converts regular expression strings to RE2 (whenever possible).

The @data-leakage-protection/signatures module's public API provides:

  1. factory method: a convenience function that creates a signature object.
  2. nullSignature: implements a default object literal with all signatures properties set to null.
  3. Signature: a class that constructs a signature object.
  4. signatures: an array of Signature instances.
  5. toArray(data: {String|Array.<Object>}): generates an Array.<Signature> from a JSON string or object literal array.
  6. validParts: a constants enum of valid Signature.prototype.part values.
  7. validTypes: a constants enum of valid Signature.prototype.type values.

4.1. @data-leakage-protection/signatures.Signature

A class that constructs Signature objects.

const { Signature, validParts, validTypes } = require('@data-leakage-protection/signatures')

const signature = new Signature({
  caption: 'Potential cryptographic private key',
  description: '',
  part: validParts.EXTENSION,
  pattern: '.pem',
  type: validTypes.MATCH
})

4.2. @data-leakage-protection/signatures.Signature.prototype.match

Discover possible data leaks by matching a Signature pattern against file extensions, names, and paths.

const rsaTokenSignature = new Signature({
  'caption': 'Private SSH key',
  'description': '',
  'part': 'filename',
  'pattern': '^.*_rsa$',
  'type': 'regex'
})

const suspiciousFilePath = '/hmm/what/might/this/be/id_rsa'
rsaTokenSignature.match(suspiciousFilePath)
// => ['/hmm/what/might/this/be/id_rsa']

const fileThatIsJustBeingCoolBruh = 'file/that/is/just/being/cool/bruh'
rsaTokenSignature.match(suspiciousFilePath)
// => null

source code Review the source code for signature.

5. Accessing signatures with other tools and programming languages

You can access signatures.json without the @data-leakage-protection/signatures Node module. Select a tool or programming language below to view examples.

cURL

You can access data-loss rules using HTTPS. You can GET all signatures directly from Gitlab with cURL.

curl -X GET \
  'https://gitlab.com/data-leakage-protection/signatures/raw/master/signatures.json'

Golang
package main

import (
	"fmt"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://gitlab.com/data-leakage-protection/signatures/raw/master/signatures.json"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Private-Token", "<your-personal-token>")
	req.Header.Add("cache-control", "no-cache")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Java (OK HTTP)
OkHttpClient client = new OkHttpClient();

String signaturesJson = "https://gitlab.com/data-leakage-protection/signatures/raw/master/signatures.json";

Request request = new Request.Builder()
  .url(signaturesJson)
  .get()
  .addHeader("Accept", "*/*")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Host", "gitlab.com")
  .addHeader("accept-encoding", "gzip, deflate")
  .addHeader("Connection", "keep-alive")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();


Node (native)
const http = require('https')

const options = {
  method: 'GET',
  hostname: ['gitlab', 'com'],
  path: ['api', 'v4', 'projects'],
  headers: {
    'Private-Token': '<your-access-token>',
    'cache-control': 'no-cache'
  }
}

const req = http.request(options, res => {
  const chunks = []

  res.on('data', chunk => {
    chunks.push(chunk)
  })

  res.on('end', () => {
    var body = Buffer.concat(chunks)
    console.log(body.toString())
  })
})

req.end()

Python (versions 2 and 3)

Python3

import http.client

conn = http.client.HTTPConnection("gitlab,com")

payload = ""

headers = {
  'Accept': "application/json",
  'cache-control': "no-cache"
}

conn.request("GET", "data-leakage-protection/signatures,raw,master,signatures.json", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Python2

import requests

url = "https://gitlab.com/data-leakage-protection/signatures/raw/master/signatures.json"

payload = ""
headers = {
  'Accept': "application/json",
  'cache-control': "no-cache"
}

response = requests.request("GET", url, data=payload, headers=headers)

print(response.text)

Ruby (NET::Http)
require 'uri'
require 'net/http'

url = URI("'https://gitlab.com/data-leakage-protection/signatures/raw/master/signatures.json")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)
request["Private-Token"] = '<your-personal-token>'
request["cache-control"] = 'no-cache'

response = http.request(request)
puts response.read_body

6. Maintainers

@gregswindle

Information for Maintainers The Maintainer Guide has useful information for Maintainers and Trusted Committers.

7. Contributions

We gratefully accept Merge Requests! Here's what you need to know to get started.

Before submitting a Merge Request, please read Before submitting a Merge Request, please read our:

All Contributors FOSSA Status standard-readme compliant conventional commits JavaScript Style Guide

Thanks goes to our awesome contributors (emoji key):

Semantic Release Bot
Semantic Release Bot

🚧
gregswindle
gregswindle

💻 ⚠️ 📖 🐛 🚧
Christina Valdes
Christina Valdes

👀
sairam pooraj
sairam pooraj

👀

This project follows the all-contributors specification. Contributions of any kind welcome!

7.1. Adding a Signature

Before adding a new Signature, please review all current definitions: the Signature might already exist.

If the Signature does not exist, please be sure to add your Signature with the following properties:

  1. caption: A succinct summary for the Signature. Think of caption as a well-written email subject.

  2. description: Provide more details about the Signature if necessary. description is especially useful for differentiating similar Signatures.

  3. hash: A hexidecimal SHA256 representation of a Signature (with ordered properties).

  4. name: The Signature's caption, converted to kebab-case.

  5. part: An enumeration that defines what the Signature is evaluating. Valid values are:

    • contents: The string(s) within a file.
    • extension: A file extension (which defines the Content-Type or mime-type).
    • filename: The unique name of the file.
    • path: The directory path relative to the repo and without the filename.
  6. pattern: The string or regular expression to look for.

  7. type: An enumeration that defines how to evaluate for secrets. Valid values are:

    • match: A strict string equivalency evaluation.
    • regex: A regular expression "search" or "test".

7.2. Editing a Signature

Edits are welcome! Just be sure to unit test.

7.3. Removing a Signature

Please provide a testable justification for any Signature removal.

8. License

Apache 2.0 License © 2019 Greg Swindle.

FOSSA Status

View detailed legal NOTICEs View all FOSS legal notices.

9. References and Attributions

Footnotes

  1. What is Data Leakage? Defined, Explained, and Explored | Forcepoint. (2019) Retrieved January 27, 2019, from https://www.forcepoint.com/cyber-edu/data-leakage

Keywords

FAQs

Last updated on 15 Apr 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc