We take security seriously and actively maintain the following versions of pushfile:
| Version | Supported |
|---|---|
| 4.x | ✅ |
| 3.x | ❌ |
| < 3.0 | ❌ |
We recommend always using the latest version to ensure you have the most recent security updates.
We appreciate responsible disclosure of security vulnerabilities. If you discover a security issue, please follow these steps:
Please do NOT report security vulnerabilities through public GitHub issues.
Instead, report security vulnerabilities by emailing:
Please include the following information in your report:
- Description: Clear description of the vulnerability
- Impact: What an attacker could potentially do
- Steps to Reproduce: Detailed steps to reproduce the issue
- Affected Versions: Which versions are affected
- Proof of Concept: Code or commands that demonstrate the vulnerability (if applicable)
- Suggested Fix: Your ideas for fixing the issue (optional)
When you report a vulnerability, here's what you can expect:
- Acknowledgment: We will acknowledge receipt of your report within 48 hours
- Investigation: We will investigate and validate the issue
- Updates: We will keep you informed of our progress
- Timeline: We aim to address critical vulnerabilities within 7 days
- Credit: With your permission, we will credit you in the security advisory
- We will confirm the vulnerability and determine its severity
- We will develop and test a fix
- We will release a security update
- We will publish a security advisory
- We will update this document if needed
When using pushfile, follow these security best practices:
- Never commit credentials to version control
- Use environment variables for sensitive configuration:
export PUSHFILE_AWS_KEY="your-key" export PUSHFILE_AWS_SECRET="your-secret" export PUSHFILE_S3_BUCKET="your-bucket"
- Use IAM roles when running on AWS infrastructure
- Apply least privilege - only grant necessary S3 permissions:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
- Protect config files with appropriate permissions:
chmod 600 ~/.pushfile.json chmod 600 .pushfilerc.json - Add to .gitignore:
.pushfilerc.json .pushfile.json
- Don't share config files containing credentials
- Review bucket policies regularly
- Enable bucket versioning to recover from accidents
- Use bucket encryption for sensitive files
- Monitor access logs for suspicious activity
- Be aware that files are uploaded with
public-readACL
Pushfile includes built-in validation for:
- File existence and readability
- File size limits (5GB maximum)
- S3 bucket name format
- Configuration completeness
By default, pushfile uploads files with public-read ACL, making them publicly accessible. This is intentional for the use case of sharing files, but be aware:
- Do not upload sensitive files unless you intend them to be public
- Review files before uploading to ensure they don't contain sensitive data
- Use bucket policies to restrict access if needed
- Credentials are stored in plain text in configuration files
- On Unix-like systems, use file permissions to restrict access
- Consider using AWS IAM roles instead of static credentials when possible
- Migrated to AWS SDK v3 (improved security and maintenance)
- Added comprehensive input validation
- Implemented S3 bucket name validation
- Added file size limits
- Enabled strict TypeScript mode
We follow the principle of responsible disclosure:
- Confidentiality: We will keep your identity confidential unless you request otherwise
- No Legal Action: We will not pursue legal action against security researchers who:
- Report vulnerabilities in good faith
- Do not exploit vulnerabilities beyond what's necessary to demonstrate the issue
- Do not access or modify data belonging to others
- Follow this disclosure process
- Recognition: We will acknowledge your contribution (with your permission)
This project uses:
- Biome: For code quality and catching potential issues
- TypeScript: With strict mode for type safety
- c8: For test coverage to ensure code paths are tested
- GitHub Dependabot: For automated dependency updates
For security-related questions or concerns:
- Email: josh@jfin.us
- GitHub: @joshfinnie
For general questions or non-security issues, please use GitHub Issues.
Thank you for helping keep pushfile and its users safe!