Prefinery Security Policy
- We have implemented a formal procedure for security events.
- When security events are detected we are notified immediately and our phones are paged in order to rapidly address the event.
- After a security event is fixed we write up a post-mortem analysis.
- The analysis is reviewed and includes action items that will make the detection and prevention of a similar event easier in the future.
- Prefinery will promptly notify you in writing upon verification of a security breach of the Prefinery services that affects your data. Notification will describe the breach and the status of Prefinery's investigation.
- All of our services run in the cloud. Prefinery does not run our own routers, load balancers, DNS servers, or physical servers.
- The vast majority of our services and data are hosted in AWS facilities in the USA and protected by AWS security, as described at http://aws.amazon.com/security/sharing-the-security-responsibility. Our services which are hosted outside of AWS include:
- For a detailed overview of all AWS security and privacy measures, see the AWS Cloud Security page. For a list of all current security accreditations, see the AWS Compliance Programs page.
- Prefinery services have been built with disaster recovery in mind.
- All of our infrastructure is spread across 3 AWS data centers (availability zones) in the US East (Virginia, USA) region and will continue to work should any one of those data centers fail unexpectedly. Amazon does not disclose the location of its data centers. As such, Prefinery builds on the physical security and environmental controls provided by AWS.
- All of our servers are within our own virtual private cloud (VPC) with network access control lists (ACL’s) that prevent unauthorized requests getting to our internal network.
- Prefinery uses a backup solution for datastores that contain customer data.
Web Application Firewall
We leverage AWS' Web Application Firewall (WAF) to protect the site from:
- Distributed denial of service (DDoS) attacks
- Suspicious activity
- Known, malicious IP addresses
- SQL injection and cross-site scripting (XSS) attacks
- Possibility of quickly blocking IPs, user agents, or entire countries
- All customer data is encrypted at-rest, using an industry-standard AES-256 encryption algorithm, and stored in the USA.
- Static files, such as images, imports, exports, and other documents are persisted using AWS S3 storage.
- Customer data is stored in multi-tenant datastores, we do not have individual datastores for each customer. However strict privacy controls exist in our application code to ensure data privacy and prevent one customer from accessing another customers data.
- Database backups are performed daily and retained for three days. All backup data is encrypted.
- Each Prefinery system used to process customer data is adequately configured and patched regularly using commercially-reasonable methods according to industry-recognized system-hardening standards.
- Prefinery engages certain subprocessors to process customer data. The current list can be found at: Prefinery Sub-processors.
- All data sent to or from Prefinery is encrypted in-transit using 256-bit encryption.
- Prefinery sends a Strict Transport Security Header (HSTS) to the user agent that ensures that all future requests should be made via HTTPS even if a link to Prefinery is specified as HTTP.
- Our API and application endpoints are TLS/SSL only and score an "A+" rating on SSL Labs' tests. The status of our SSL configuration can be found here.
- All cookies are set with a secure flag.
Permissions & Authentication
- Prefinery is served 100% over https. Prefinery runs a zero-trust corporate network.
- There are no corporate resources or additional privileges from being on Prefinery's network.
- Remote access to servers is limited to a select few authorized employees who require it for their job and is restricted by IP and other security measures, including connecting to a bastion host over a VPN using two-factor authentication.
We restrict access to personal data only to our employees, contractors and agents (Workers) who need to know this information in order to operate, develop or improve our service. These individuals are bound by confidentiality obligations and may be subject to discipline, including termination and criminal prosecution, if they fail to meet these obligations.
Workers are required to use strong, unique passwords, and to set up two-factor authentication (2FA) with each device and service where available. This includes Prefinery's accounts with AWS, Constellix, GitHub, Help Scout, Postmark, Stripe, Google and other service providers.
Workers are required to use recognized password managers like 1Password to generate and store strong passwords, and are also required to encrypt local hard drives and enable screen locking for device security.
Workers can only access accounts if they have explicit permission from an account owner or the account is in review for compliance with the Prefinery Terms of Service.
- On an application level, we produce audit logs for all activity, ship logs to AWS for analysis, and use S3 for archival purposes.
- All access to Prefinery applications is logged and audited.
- All actions taken on production consoles are logged.
We use technologies such as AWS Cloudtrail, AWS Cloudwatch Logs and LogDNA to provide an audit trail over our infrastructure and the Preﬁnery application. Auditing allows us to do ad-hoc security analysis, track changes made to our setup and audit access to every layer of our stack.
Even though Prefinery itself has not undergone a SOC audit, our data center has. We can provide a copy of the SOC report for the data center after completing an NDA.
We perform automated security testing using Detectify, which scans for over 2,000 vulnerabilities, including OWASP Top 10, Amazon S3 Bucket, and DNS misconfigurations. We welcome reports from security researchers who follow our our responsible disclosure policy.
All payment instrument processing for purchase of the Prefinery services is performed by Stripe. For more information on Stripe's security practices, please see https://stripe.com/docs/security/stripe.
Password Policy and Storage
During an account creation and password update, Prefinery requires a strong password that has 10 characters or more, and contains numbers as wells as lower- and uppercase letters. We do not store user passwords: we only store one-way encrypted password hashes using open source audited Bcrypt, including:
- Cost ratio 2^12 iterations - delaying brute-force attacks
- Per-user-random-salt - protect against rainbow table attacks and encrypted password matching
- Password concatenated with two individual app-tokens
If a user incorrectly enters an account password on multiple attempts, the account will be temporarily locked to prevent brute-force attacks. To further protect account access, two-factor authentication is available to all Prefinery users and can be turned on via the user account security settings.
Following a password change the user is always notified in order to quickly be able to respond, should an account attack be undergoing.
- Protecting your account and user credentials, including passwords and API keys.
- Compliance with the Terms of Services agreement with Prefinery, including with respect to compliance with laws.
- Promptly notifying Prefinery if a user credential has been compromised or if you suspect possible suspicious activities that could negatively impact security of the Prefinery services or your account.
- Not perform any security penetration tests or security assessment activities without the express advance written consent of Prefinery.
- Report any security issues you discover through our responsible disclosure process.