A P
banner
37dzzx.bsky.social
A P
@37dzzx.bsky.social
"Riots are tiny though, systems are huge"
Reposted by A P
‘Welcome to hell’: Inside the megaprison where the U.S. deported migrants
‘Welcome to hell’: Inside the megaprison where the U.S. deported migrants
Interviews with 16 former detainees of El Salvador’s Terrorism Confinement Center offer the most complete view yet of conditions inside the notorious prison.
wapo.st
July 31, 2025 at 8:53 PM
Reposted by A P
"The coldest winter I recall was December 2001. It snowed about 1 foot. I was 15 years old and new to prison. I remember guards would laugh because I was too small to tread the mounds of snow that came to my knees on the way to the yard. That year, my feet froze."
What Extreme Cold Feels Like in Prison
Prison writers from across the U.S. describe how cold their prisons get in the winter — and what small dignities could make it more bearable.
prisonjournalismproject.org
February 26, 2025 at 1:29 PM
Reposted by A P
"disabling cert checks: we have not learned much"

I put my ramblings into a blog post

https://daniel.haxx.se/blog/2025/02/11/disabling-cert-checks-we-have-not-learned-much/
disabling cert checks: we have not learned much
<p>And by that I mean the global “we” as in the world of developers.</p> <h2 class="wp-block-heading">In the beginning there was SSL</h2> <p>When I first learned about SSL and how to use it in the mid to late 1990s, it took me a while to realize and understand the critical importance of having the client verifying the server’s certificate in the handshake. Once I had understood, we made sure that curl would default to doing the check correctly and refuse connecting if the certificate check fails.</p> <p>Since curl and libcurl 7.10 (released in October 2002) we verify server certificates by default. Today, more than twenty-two years later, there should realistically be virtually no users left using a curl version that does not verify certificates by default.</p> <h2 class="wp-block-heading">What’s verifying </h2> <p>The standard way to verify a TLS server certificate is by A) checking that it is signed by a trusted certificate authority (CA) and B) that the cert was created for the thing you interact with; that the domain name is listed in the certificate.</p> <p>Optionally, you can opt to “pin” a certificate which then verifies that the certificate is the one that corresponds to a specific hash. This is generally considered more fragile but avoids the use of a “CA store” (a set of certificates for the certificate authorities “you” trust) needed to verify the digital signature of the server certificate.</p> <h2 class="wp-block-heading">Skipping means insecure</h2> <p><em>Skipping the certificate verification makes the connection <strong>insecure</strong></em>. Because if you do not verify, there is nothing that prevents a middle-man to sit between you and the real server. Or even to just fake being the real server.</p> <h2 class="wp-block-heading">Challenges</h2> <p>If you try to use the production site’s certificate in your development environment, you might connect to the server using a different name and then the verification fails.</p> <p>If you have an active middle man intercepting and wanting to snoop on the TLS traffic, it needs to provide a different certificate and unless that can get signed by a CA you trust, the verification fails.</p> <p>If you have an outdated or maybe no CA store at all, then the verification fails.</p> <p>If the server does not update its certificate correctly, it might expire and then the verification fails. Similarly, in order to do a correct verification your client needs a clock that is at least roughly in sync with reality or the verification might fail.</p> <p>Verification also takes more time compared to how fast it is to just skip the entire step. Sometimes and to some, weirdly enticing.</p> <p>And yet all curl and libcurl documentation for this <em>strongly</em> discourages users from disabling the check.</p> <h2 class="wp-block-heading">A libcurl timeline</h2> <p>curl added support for SSL in April 1998 (years before they renamed it TLS). curl makes certificate checks by default since 2002, both the tool and the library. At the time, I felt I was a little slow to react but at least we <em>finally</em> made sure that curl users would do this check by default.</p> <p>Ten years later, in October 2012, there was a paper published called <a data-id="4458" data-type="post" href="https://daniel.haxx.se/blog/2012/10/25/libcurl-claimed-to-be-dangerous/">The most dangerous code in the world</a>, in which the authors insisted that the widespread problem of applications not verifying TLS certificates with libcurl was because <em>This interface is almost perversely bad</em>. The problem was apparently libcurl’s API.</p> <p>The same “fact” would be repeated later, for example in this <a data-id="6427" data-type="post" href="https://daniel.haxx.se/blog/2014/09/18/using-apis-without-reading-docs/">2014 presentation</a> saying that this is our fault because the API (for PHP) looks like it takes a boolean when in reality it did not.</p> <h2 class="wp-block-heading">The libcurl API for this</h2> <p>I do not claim that we have the best API in libcurl, but I can say that extremely few libraries can boast an API and ABI stability that comes even close to ours. We have not broken the ABI since 2006. We don’t mind carrying a world on our shoulders that have learned to depend on this and us. So we don’t change the API, even though it could have been done a little better.</p> <p><a href="https://curl.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html">CURLOPT_SSL_VERIFYPEER</a> is a boolean option to ask for server certificate verification against the CA store. It is set TRUE by default, so an application needs to set it to FALSE (0) to disable the check. This option works together with the next one.</p> <p><a href="https://curl.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html">CURLOPT_SSL_VERIFYHOST</a> is a separate option to verify that the name embedded in the certificate matches the name in the URL (basically). This option was never a boolean but accepts a number. 0 disables the check, and 2 was for the maximum check level. With 2 being the default.</p> <p>Both options are thus by default set to verify, and an application can lessen the checks by changing one or both of them.</p> <h2 class="wp-block-heading">Adaptations</h2> <p>After that most dangerous article was posted in 2012 that basically said we were worthless, without ever telling that to us or submitting an issue or pull-request with us, we changed how CURLOPT_SSL_VERIFYHOST worked in the 7.28.1 release – shipped in December 2012. </p> <p>Starting then, we made setting the option to 1 an error (and it would just leave the original value untouched). Before that update, setting VERIFYHOST to 1 was a debug-like mode that made libcurl output warnings on mismatches but still let the connection through. A silly mode to offer.</p> <p>In 2019 we tweaked the VERIFYHOST handling a little further and made the value 1 and 2 do the same thing: verify the name.</p> <p>I have no idea what the authors of that 2012 paper would think about this API tweak, but at least the options are now two proper booleans.</p> <p>I did not think the authors were right when the originally published that paper, but yet we improved the API a little. I dare to claim that the problem with disabled certificate checks is not because of a bad libcurl API.</p> <h2 class="wp-block-heading">curl</h2> <p>The curl tool of course is a libcurl using application and it itself offers the <code>--insecure</code> (<code>-k</code>) option which when used switches off both those above mentioned libcurl options. Also strongly discouraged to actually use beyond testing and triaging.</p> <h2 class="wp-block-heading">Other layers on top</h2> <p>libcurl is itself used by a lot of frameworks and languages that expose the options to their respective users. Often they then even use the same option names. We have over 60 documented language bindings for libcurl.</p> <p>For example, the PHP/CURL binding is extremely popular and well used and it has the options provided and exposed using the exact same names, values and behavior.</p> <h2 class="wp-block-heading">Disabling the checks</h2> <p>More than twenty-two years of having this enabled by default. More than twelve years since the <em>most dangerous</em> paper. After countless articles on the topic. Everyone I talk to knows that we all must verify certificates.</p> <p>In almost all cases, you can fix the failed verification the <em>proper</em> way instead of disabling the check. It is just usually a little more work.</p> <h2 class="wp-block-heading">State of checks using libcurl today</h2> <p>I searched GitHub on February 10 2025 for “CURLOPT_SSL_VERIFYPEER, FALSE” and it quickly showed me some 140,000 matching repositories. Sure, not all these matches are bad uses since they can be done conditionally etc and it can also be done using other bindings using different option names that this search does not catch etc. Or they might use pinning, which also is not caught by this simple search term.</p> <p>Searching for “CURLOPT_SSL_VERIFYPEER, 0” shows 153,000 additional matches.</p> <p>A quick walk-through shows that there are lot of genuine, mostly sloppy, certificate disabling curl using code among these matches.</p> <p>We could fool ourselves into thinking that the state of certificate check disabling is better in modern software in wide use, made by big teams.</p> <p>A quick CVE search immediately found several security vulnerabilities for exactly this problem published only last year:</p> <ul class="wp-block-list"> <li><a href="https://github.com/advisories/GHSA-fq29-72jg-5hrj">CVE-2024-32928</a> – The libcurl CURLOPT_SSL_VERIFYPEER option was disabled on a subset of requests made by Nest production devices.</li> <li><a href="https://github.com/advisories/GHSA-9mgx-552f-59p6">CVE-2024-56521</a> – An issue was discovered in TCPDF before 6.8.0. If libcurl is used, CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER are set unsafely.</li> <li><a href="https://github.com/CollaboraOnline/online/security/advisories/GHSA-crg3-fjm2-xvpq">CVE-2024-5261</a> – In affected versions of Collabora Online, in LibreOfficeKit, curl’s TLS certificate verification was disabled (CURLOPT_SSL_VERIFYPEER of false).</li> </ul> <p>If I was into bug-bounties, I would know where to start.</p> <h2 class="wp-block-heading">What do we do?</h2> <p>Clearly, this is work that never gets complete or done – it might arguable actually get worse as the volume of software grows. We need to keep telling people to fix this. To stop encouraging others to do wrong. Lead by good example. Provide good documentation and snippets for people to copy from.</p> <p>I took a very tiny step and <a href="https://github.com/php-mod/curl/issues/108">reported a bug against a documentation</a> that seemed encourage the disabling. If we all submit a bug or two when we see these problems </p> <p>When/if you submit bug reports as well, please remember to stay polite, friendly and to the point. Explain why disabling the check is bad. Why keeping the check is good.</p> <p>Rinse and repeat. Until the end of time.</p> <p></p>
daniel.haxx.se
February 11, 2025 at 3:02 PM
It gets more relevant each week
Lawyer. Passport. Locksmith. Gun. (A Talk About Risk & Preparedness)
YouTube video by DeviantOllam
www.youtube.com
January 26, 2025 at 6:19 PM
Reposted by A P
Meta is laying the narrative groundwork for Trump’s Mass Deportations

Multiple experts drew comparisons between Meta's recent changes around immigration and what happened in Myanmar in 2017, where Facebook contributed to a genocide by allowing the spread of hate.

🔗 www.404media.co/meta-is-layi...
January 16, 2025 at 3:38 PM
Reposted by A P
New issue of Communications in Cryptology is out...

cic.iacr.org/i/1/4

#iacr #cryptography
Volume 1, Issue 4
cic.iacr.org
January 13, 2025 at 7:56 PM
Reposted by A P
NEW EPISODE!

THE QUANTUM COMPUTERS ARE COMING…right? We got Samuel Jacques and John Schanck to answer that question plus a bunch of others about Google’s new quantum computer, Willow.

securitycryptographywhatever.com/2024/12/18/q...

youtu.be/6cENP6v1gpw
Quantum Willow with John Schanck and Samuel Jacques
THE QUANTUM COMPUTERS ARE COMING…right? We got Samuel Jacques and John Schanck at short notice to answer that question plus a bunch of other about error corr...
securitycryptographywhatever.com
December 18, 2024 at 10:26 PM
Reposted by A P
This article from @404media.co @josephcox.bsky.social is actually about workplace surveillance and an employer fantasy about “productivity.” Sociologists told us in the lather half of the 20th century that “mind work” would liberate us from these demands.

www.404media.co/are-overempl...
Are Overemployed ‘Ghost Engineers’ Making Six Figures to Do Nothing?
"We have data on the performance of >50k engineers from 100s of companies. ~9.5% of software engineers do virtually nothing: Ghost Engineers.”
www.404media.co
November 27, 2024 at 8:53 PM