Andrew Ayer - Blog

https://www.agwa.name/blog (RSS)
visit blog
The Story Behind Last Week's Let's Encrypt Downtime
22 Jun 2023 | original ↗

Last Thursday (June 15th, 2023), Let's Encrypt went down for about an hour, during which time it was not possible to obtain certificates from Let's Encrypt. Immediately prior to the outage, Let's Encrypt issued 645 certificates which did not work in Chrome or Safari. In this post, I'm going to explain what went wrong and how I detected it. The Law of...

The Difference Between Root Certificate Authorities, Intermediates, and Resellers
18 Jun 2023 | original ↗

It happens every so often: some organization that sells publicly-trusted SSL certificates does something monumentally stupid, like generating, storing, and then intentionally disclosing all of their customers' private keys (Trustico), letting private...

The SSL Certificate Issuer Field is a Lie
18 Jan 2023 | original ↗

A surprisingly hard, and widely misunderstood, problem with SSL certificates is figuring out what organization (called a certificate authority, or CA) issued a certificate. This information is useful for several reasons: You've discovered an unauthorized certificate for your domain via Certificate Transparency logs and need to contact the certificate authority to get the certificate revoked.You've discovered a certificate via Certificate Transparency...

whoarethey: Determine Who Can Log In to an SSH Server
10 Jan 2023 | original ↗

Filippo Valsorda has a neat SSH server that reports the GitHub username of the connecting client. Just SSH to whoami.filippo.io, and if you're a GitHub user, there's a good chance it will identify you. This works because of two behaviors: First, GitHub publishes your authorized public keys at https://github.com/USERNAME.keys. Second, your SSH client sends the server the...

No, Google Did Not Hike the Price of a .dev Domain from $12 to $850
12 Dec 2022 | original ↗

It was perfect outrage fodder, quickly gaining hundreds of upvotes on Hacker News: As you know, domain extensions like .dev and .app are owned by Google. Last year, I bought the http://forum.dev domain for one of our projects. When I tried to renew it this year, I was faced with a renewal price of $850 instead of the normal price of $12. It's true that most .dev...

Checking if a Certificate is Revoked: How Hard Can It Be?
1 Dec 2022 | original ↗

This wasn't my first rodeo so I knew it would be hard. And I was right! The only question was what flavor of dysfunction I'd be encountering. SSLMate's Certificate Transparency Search API now returns two new fields that tell you if, why, and when the certificate was...

Parsing a TLS Client Hello with Go's cryptobyte Package
18 May 2022 | original ↗

In my original post about SNI proxying, I showed how you can parse a TLS Client Hello message (the first message that the client sends to the server in a TLS connection) in Go using an amazing hack that involves calling tls.Server with...

How I'm Using SNI Proxying and IPv6 to Share Port 443 Between Webapps
15 Apr 2022 | original ↗

My preferred method for deploying webapps is to have the webapp listen directly on port 443, without any sort of standalone web server or HTTP reverse proxy in front. I have had it with standalone web servers: they're all over-complicated and I always end up with an awkward bifurcation of logic between my app's code and the web server's config. Meanwhile, my preferred language, Go, has a high-quality, memory-safe HTTPS server in the standard library that is

Comcast Shot Themselves in the Foot with MTA-STS
19 Jan 2022 | original ↗

I recently heard from someone, let's call them Alex, who was unable to email comcast.net addresses. Alex's emails were being bounced back with an MTA-STS policy error: MX host mx2h1.comcast.net does not match any MX pattern in MTA-STS policy MTA-STS failure for Comcast.net: Validation error (E_HOST_MISMATCH) MX host mx1a1.comcast.net does not match any MX pattern in MTA-STS policy MTA-STS failure for Comcast.net: Validation error (E_HOST_MISMATCH) MTA-STS...

It's Now Possible To Sign Arbitrary Data With Your SSH Keys
12 Nov 2021 | original ↗

Did you know that you can use the ssh-keygen command to sign and verify signatures on arbitrary data, like files and software releases? Although this feature isn't super new - it was added in 2019 with OpenSSH 8.0 - it seems to be little-known. That's a shame because it's super useful and the most viable alternative to PGP for signing data. If you're currently using PGP to sign data, you should consider switching to SSH signatures. Here's why I like...

How Certificate Transparency Logs Fail and Why It's OK
9 Jul 2021 | original ↗

Last week, a Certificate Transparency log called Yeti 2022 suffered a single bit flip, likely due to a hardware error or cosmic ray, which rendered the log unusable. Although this event will have zero impact on Web users and website operators, and was reported on an obscure mailing list for industry insiders, it captured the interest of people on Hacker News, Twitter, and...

Security Vulnerabilities in Smallstep PKI Software
17 Dec 2020 | original ↗

I recently did a partial security review of Smallstep, a commercially-backed open source private certificate authority written in Go. I found that Smallstep is vulnerable to JSON injection, misuses JWTs, and relies on client-side enforcement of server-side security. These vulnerabilities can be exploited to obtain unauthorized certificates. This post is a...

The Lengths People Go To Just To Avoid DNSSEC
30 Nov 2020 | original ↗

Connecting to a website, say example.com, over TLS is a relatively straightforward affair. The client looks up the DNS A/AAAA record for example.com, connects to the IP address over TLS, and confirms that the presented certificate is valid for example.com. In contrast, connecting to other services, like XMPP or SMTP, over TLS is less straightforward. That's because clients don't directly look up the A/AAAA record for example.com. Instead they look up a SRV record (for...

Writing an SNI Proxy in 115 Lines of Go
25 Jun 2020 | original ↗

The very first message sent in a TLS connection is the Client Hello record, in which the client greets the server and tells it, among other things, the server name it wants to connect to. This is called Server Name Indication, or SNI for short, and it's quite handy as it allows many different servers to be co-located on a single...

Security Review of CFSSL Signer Code
18 Jun 2020 | original ↗

Certificate signing is the most security-sensitive task performed by a certificate authority. The CA has to sign values, like DNS names, that are provided by untrusted sources. The CA must rigorously validate these values before signing them. If an attacker can bypass validation and get untrusted data included in a certificate, the results can be dire. For example, if an attacker can trick a CA into including an arbitrary SAN extension, they can get a certificate for domains they...

Fixing the Breakage from the AddTrust External CA Root Expiration
30 May 2020 | original ↗

A lot of stuff on the Internet is currently broken on account of a Sectigo root certificate expiring at 10:48:38 UTC today. Generally speaking, this is affecting older, non-browser clients (notably OpenSSL 1.0.x) which talk to TLS servers which serve a Sectigo certificate chain ending in the expired certificate. See also

Short Take: Why Trust-On-First-Use Doesn't Work (Even for SSH)
8 Feb 2020 | original ↗

Considering all the progress that has been made over the last decade making SSL certificates on the Web easy, free, automated, and transparent, it's a bit jarring to see

When Will Your DNS Record Be Published?
3 Feb 2020 | original ↗

When publishing a DNS record through an API, it's often useful to know when the DNS record has been fully published and is visible to DNS resolvers. A perfect example which comes up at SSLMate is automatically validating a certificate request by publishing a DNS record. SSLMate must be sure that the DNS record is visible before it tells the certificate authority to validate it, or the certificate request may...

This Is Why You Always Review Your Dependencies, AGPL Edition
4 Jan 2020 | original ↗

Before adding a dependency to one of my software projects, I do some basic vetting of the dependency. Among the things I check are: How is the code licensed?Who are the authors?Are there any serious unresolved issues in the issue tracker?Is there a history of serious bugs in the issue tracker?What kind of code review process is used for pull requests? Finally, I do a cursory review of the code. I look for...

Preventing Server Side Request Forgery in Golang
20 Dec 2019 | original ↗

If your application makes requests to URLs provided by untrusted sources (such as users), you must take care to avoid server side request forgery (SSRF) attacks. Otherwise, an attacker might be able to induce your application to make a request to a service on your server's localhost or internal network. Since the service thinks the request is coming from a trusted source, it might perform a...

Programmatically Accessing Your Customers' Google Cloud Accounts (While Avoiding the Confused Deputy Problem)
3 Dec 2019 | original ↗

SaaS applications often need to access their customers' cloud resources at providers like Amazon Web Services and Google Cloud Platform. For instance, a monitoring service might require read-only access to their customers' AWS accounts so it can inventory resources. At SSLMate, we request access to our customers' DNS zones so we can publish DNS records to automatically validate the certificates that they request. Doing this...

MTA-STS is Hard. Here's how DNS Providers Can Make it Awesome With Automation...
15 Apr 2019 | original ↗

Last week, Gmail became the first major email provider to enable the new MTA-STS standard, which will prevent attackers from intercepting email sent to and from Gmail. If you operate...

Making Certificates Easier and Helping the Ecosystem: Four Years of SSLMate
13 Apr 2018 | original ↗

I'm not actually sure when SSLMate was born. I got the idea, registered the domain name, and wrote the first lines of code in August 2013, but I put it on the backburner until March 2014. I think I "launched" in early April, but since I thought of SSLMate as a side project mainly for my own use, I didn't do anything special. I do know that I sold my first certificate on April 13, 2014, four years ago to this day. I sold...

These Three Companies Are Doing the Internet a Solid By Running Certificate Transparency Logs
29 Mar 2018 | original ↗

When we use the Internet, we rely on the security of the certificate authority system to ensure we are talking with the right people. Unfortunately, the certificate authority system is a bit of a mess. One of the ways we're trying to clean up the mess is Certificate Transparency, an effort to put all SSL certificates issued by public...

Google's Certificate Revocation Server Is Down - What Does It Mean?
21 Jan 2018 | original ↗

Earlier today, someone reported to the mozilla.dev.security.policy mailing list that they were unable to access any Google websites over HTTPS because Google's OCSP responder was down. David E. Ross says the problem started two days ago, and

How will Certificate Transparency Logs be Audited in Practice?
10 Jan 2018 | original ↗

Certificate Transparency, the effort to detect misissued SSL certificates by publishing all certificates in public logs, only works if TLS clients reject certificates that are not logged. Otherwise, certificate authorities could just not log the certificates that they misissue. TLS clients accomplish this by requiring that a certificate be accompanied by a "signed certificate timestamp" (SCT), which is a promise...

Why Man-in-the-Middle Detection is Overrated
28 Sept 2017 | original ↗

Last week, Nick Sullivan launched mitm.watch, a website that purports to tell you whether or not your HTTPS connection is being intercepted by a man-in-the-middle (MitM). mitm.watch uses Caddy's HTTPS MitM Detection Feature, which implements the techniques described in

Thoughts on the Systemd Root Exploit
24 Jan 2017 | original ↗

Sebastian Krahmer of the SUSE Security Team has discovered a local root exploit in systemd v228. A local user on a system running systemd v228 can escalate to root privileges. That's bad. At a high level, the exploit is trivial: Systemd uses -1 to represent an invalid mode_t (filesystem permissions) value. Systemd was accidentally passing this value to...

Systemd is not Magic Security Dust
2 Oct 2016 | original ↗

Systemd maintainer David Strauss has published a response to my blog post about systemd. The first part of his post is replete with ad hominem fallacies, strawmen, and factual errors. Ironically, in the same breath that he attacks me for not understanding the issues around...

How to Crash Systemd in One Tweet
28 Sept 2016 | original ↗

The following command, when run as any user, will crash systemd: NOTIFY_SOCKET=/run/systemd/notify systemd-notify "" After running this command, PID 1 is hung in the pause system call. You can no longer start and stop daemons. inetd-style services no longer accept connections. You cannot cleanly reboot the system. The system feels generally unstable (e.g. ssh and su hang for 30 seconds since systemd is now integrated with the login...

↑ these items are from RSS. Visit the blog itself at https://www.agwa.name/blog to find other articles and to appreciate the author's digital home.