Security

Notes regarding security at Ghost Inspector

Search our documentation:

Toggle Documentation Menu

Security

Security is our top priority and we want to be clear and upfront about how data is stored, used and accessed by Ghost Inspector. If you have questions about our security practices or policies, please contact us from our Support page. If you think you've found a vulnerability in any Ghost Inspector service, please contact us below.

Accessing Data in Ghost Inspector

Ghost Inspector uses best practices for internet security. This helps ensure that your data is safe, secure, and available only to authorized users. Your data will be completely inaccessible to anyone else unless you explicitly choose to share that data with the public.

Ghost Inspector enforces secure HTTPS for our entire website, including the public (unauthenticated) parts of the site. All communications with Ghost Inspector’s API are also protected with SSL. We also use HTTP Strict Transport Security to ensure your web browser never interacts with Ghost Inspector over insecure HTTP.

Ghost Inspector provides each user in your organization with a unique username (e-mail address) and password. These credentials must be entered to access your organization’s data. A private API key is also available within each account which must be used when accessing our API. 2 factor authentication is available for all user accounts.

The Ghost Inspector recording extension allows you to record your actions and make them into a test. It only does this when you manually start recording a test; it’s not tracking your actions otherwise. Active recording is indicated by a green toolbar icon. The recording stops the second you finish (or cancel). Furthermore, the extension only sends the recorded data to our servers when you save the test. It does not send this data to our servers during the recording process — only when you explicitly save it.

The extension is only capable of making a small number of API calls to our servers. It can authenticate your account. We do this with your e-mail address and password, but we do not store a copy of these locally. Instead, we store your API key for future authentication. Other API calls are used to get a list of your current suites and tests. The last type of API call that the extension performs is sending your recording to our servers when you save it. All of these are done over HTTPS.

Storing Data in Ghost Inspector

Ghost Inspector is hosted on Amazon Web Services which provides comprehensive security practices for our underlying infrastructure. We follow AWS recommended best practices for architecting in the cloud. See AWS Cloud Security Documentation for more information. Ghost Inspector runs services and stores data in the us-east-1 region located in Northern Virginia, USA. We do offer various global geolocations for test running. These geolocations are not used by default, only when explicitly enabled for your tests. Each geolocation corresponds with a specific AWS region and operates as a network proxy only; it does not run tests or host databases directly.

Ghost Inspector allows you to store browser actions in a test and execute them from our servers. This can include logging into websites with a set of credentials. We provide an option for making values private. This prevents the value from being displayed in your test results but does not encrypt the actual value in our database. All test information is stored as plain text in our database. While we take the utmost precautions to secure our servers and database (including the use of "data at rest" encryption on database disk volumes), if a database breach were to occur, test data would be accessible. For this reason, we insist that you never use live credentials or any type of sensitive data within a test — whether specified manually or recorded with our extension.

If your test requires an account login, dummy data and/or staging servers should be used. If you're logging into a production application with Ghost Inspector, you should use an account designated for Ghost Inspector that does not contain any sensitive data and can easily be disabled. You should never use your own private credentials.

Why do we take this stance? The nature of browser testing makes encryption of values very challenging to uphold in all situations. We need access to plain text values to assign them into inputs, like a password field in a login form. This means we can't simply hash passwords to some irreversible value the way you typically do when storing passwords. Even when encrypting values in our database, we still need to send them in plaintext to the browser via automation APIs. There's a chance the value could be stored in a log file by the test runner or another service. If assigned improperly, the value could show up in a video or appear in a screenshot. There are many opportunities for a value to be exposed, some of which are out of our control and are instead based on the design of the test itself. For that reason — and because Ghost Inspector is designed as a testing product — our stance is simply that sensitive credentials should not be stored with us.

We understand that this may disqualify some companies from leveraging our service, but we feel that it's the right approach for us considering the risks involved in allowing sensitive information to be stored and used in the way that browser testing requires.

Note: We do hash the password for your actual Ghost Inspector account the same way any secure service would. The discussion above applies specifically to the data in your tests.

Ghost Inspector Employee Access

Ghost Inspector employees will only access your account data when one of the following scenario occurs:

Do you have concerns about security? Get in touch with us.

We're always happy to answer any questions or concerns about security you might have. If you are a Ghost Inspector customer (or potential customer) and have further questions about security, just visit our Support page.

Contacting Ghost Inspector Securely

If you've found a security vulnerability in a Ghost Inspector website or service, please send an email to our security team at security@ghostinspector.com. Your email will be promptly reviewed and we will respond. We request that you not publicly disclose the issue until it has been addressed by us. We do attempt to reward responsible security reports that are sent to us. You can find more details about this on our Bug Bounty Program page.

If you choose to contact our security team, you can encrypt with PGP or the free alternative GnuPG. Our PGP key is listed below. This key is also registered with the MIT Public Key Server. You may use this key to encrypt your communications with Ghost Inspector.

Once you've imported our key, you can verify the signature of emails we send you by running gpg --verify.

User name: Ghost Inspector Security <security@ghostinspector.com>
Key ID: 9E4FD4E8
Key fingerprint: C3AA 059E 305B E982 CBA6  327A E4E6 0722 9E4F D4E8
Expiration date: April 8, 2024

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
=+uBP
-----END PGP PUBLIC KEY BLOCK-----