vslavik / winsparkle

App update framework for Windows, inspired by Sparkle for macOS
http://winsparkle.org
Other
1.31k stars 267 forks source link

Using old TLS 1/1.1 #262

Closed cherpake closed 5 months ago

cherpake commented 1 year ago

Hi, I'm hosting my feed and update files on AWS. Amazon will require minimum version of TLS1.2 for all AWS regions. Is there way to upgrade the connection and use TLS1.2?

Hello,

We have identified TLS 1.0 or TLS 1.1 connections to Amazon Simple Storage Service (Amazon S3) objects hosted in your account, which must be immediately updated for these connections to maintain their access to your S3 objects. Please update your client software as soon as possible to use TLS 1.2 or higher to avoid an availability impact. We recommend considering the time needed to verify your changes in a staging environment before introducing them into production.

As of June 28, 2023, we have begun deploying updates to the TLS configuration for all AWS API endpoints to a minimum of version TLS 1.2 even if you still have connections using these versions. These deployments will complete by no later than December 31, 2023. This update removes the ability to use TLS versions 1.0 and 1.1 with all AWS APIs in all AWS Regions [1]. 

What actions can I take to maintain access?
To avoid potential interruption, you must update all client software accessing your Amazon S3 objects using TLS 1.0 or 1.1, to use TLS 1.2 or higher. If you are unable or would prefer to not update all impacted clients, we recommend replacing direct client access to the S3 objects with use of a proxy, such as an Amazon CloudFront distribution. This will allow clients to access your S3 objects via Amazon CloudFront using any TLS version you choose to allow. Amazon CloudFront will forward the calls to your S3 objects using TLS 1.2 or higher. For more guidance for how to setup your CloudFront distribution to front your S3 object access, please review this Knowledge Center article [2].

How can I determine the client(s) I need to update?
We have provided the affected S3 bucket(s) in your account following this messaging. In order to gather additional information about the affected objects and user agents performing these calls, we recommend enabling Amazon CloudTrail data events on the affected S3 bucket(s) [3] [4]. The information contained in the S3 data events will help you pinpoint your client software that is responsible for using TLS 1.0 or TLS 1.1, so you may update it accordingly. Additionally, our related AWS Security blog post [1] provides information on how you may use TLS information in the CloudTrail tlsDetails field. Please note there is an associated cost for enabling CloudTrail data events, please see the CloudTrail pricing page for more detail [5]. Another alternative is to use Amazon S3 server-access logs, see the S3 Logging options page for more details and pricing information [6].

How can I enforce connections to my bucket(s) be over TLSv1.2 and above?
As a best practice, and to prepare for our enforcement of TLS 1.2 or higher, we recommend you proactively enforce a minimum of TLS 1.2 directly on all of your shared S3 bucket(s). You may do this by applying a bucket policy with the s3:TlsVersion condition key as per the documented this Knowledge Center article [7]

If you need further guidance or assistance, please contact AWS Support [8] or your Technical Account Manager.

[1] https://aws.amazon.com/blogs/security/tls-1-2-required-for-aws-endpoints
[2] https://aws.amazon.com/premiumsupport/knowledge-center/s3-access-old-tls/
[3] https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html#cloudtrail-object-level-tracking
[4] https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-cloudtrail-logging-for-s3.html#enable-cloudtrail-events
[5] https://aws.amazon.com/cloudtrail/pricing/
[6] https://docs.aws.amazon.com/AmazonS3/latest/userguide/logging-with-S3.html
[7] https://aws.amazon.com/premiumsupport/knowledge-center/s3-enforce-modern-tls/
[8] https://aws.amazon.com/support

Please see the following for S3 buckets in which object-level calls were made over TLS 1.0 or TLS 1.1 connections between July 17, 2023 and July 25, 2023 (the UserAgent may be truncated due to a limit in the number of characters that can be displayed):  

Connections details will be in the following format:
Region | Bucket name(s) | APIAction | TLSVersion | NumCalls | UserAgent
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 2 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 4 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 1 | [Remote for Windows/2022.6 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 3 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 3 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 3 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 3 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 4 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 1 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 1 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 2 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 1 | [Remote for Windows/2022.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2022.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2023.2 WinSparkle/0.8.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 4 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2023.1 WinSparkle/0.7.0]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 2 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 2 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1.1 | 5 | [Remote for Windows/2023.1 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2022.6 WinSparkle/0.7.0]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 1 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]
us-east-1 | cherpake | REST.GET.OBJECT | TLSv1 | 5 | [Remote for Windows/2022.8 WinSparkle/0.7.0 (Win64)]

Sincerely,
Amazon Web Services
vslavik commented 1 year ago

WinSparkle uses Windows' networking stack, which does support modern TLS versions. You're probably deploying to some ancient Windows versions.

See e.g. https://stackoverflow.com/questions/26576336/how-to-enforce-tls-1-x-using-wininet (and docs linked from there).

cherpake commented 1 year ago

Earliest version my app will run on is Windows 7 - which should have TLS1.2 support.

vslavik commented 1 year ago

Earliest version my app will run on is Windows 7 - which should have TLS1.2 support.

I don't know what to tell you. Again, WinSparkle uses WinInet. Its TLS stack is AFAIK not adjustable. It's something wrong with the machines you deploy to - old version, Windows stuck without updates, registry overrides of TLS versions etc. The low numbers above and two different TLS versions certainly suggest that.

If you think I'm wrong, that's certainly possible, but in that case please do submit a patch or at least provide reproducible bug report. You are in a position to debug your deployment further and figure it out; I'm not.

vslavik commented 5 months ago

Closing as not reproducible.