Blog.josefsson.org is a subdomain of Josefsson.org, which was created on 1999-12-22,making it 24 years ago.
Discover blog.josefsson.org website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site
HomePage size: 158.713 KB |
Page Load Time: 0.565218 Seconds |
Website IP Address: 178.174.241.102 |
Norton Simon Museum new.nortonsimon.org |
Longbow Software Blog | by Simon Booth blog.longbowsoftware.com |
Simon.the.Photo – Top 5 Hong Kong Wedding Photographer blog.simonthephoto.com |
PSR Registration | St. Simon the Apostle | by Faith Enroll stsimonchurch.psrenroll.com |
Simon Careers - Discover Your Potential. Discover Simon. careers.simon.com |
Corporate Anthropology Consultants | Simon Associates blog.simonassociates.net |
SIMON Web Server's Default Page kitchenscience.sci-toys.com |
Simon Wiesenthal Center motlc.wiesenthal.com |
Simon Business School | Simon Business School simon.rochester.edu |
Saint Simon School – Saint Simon Parish School Los Altos California school.stsimon.org |
New Book Releases, Bestsellers, Author Info and more at Simon & Schuster | Simon & Schuster authors.simonandschuster.com |
Simon Josefsson's blog https://blog.josefsson.org/ |
2021 - Simon Josefsson's blog https://blog.josefsson.org/2021/ |
2022 - Simon Josefsson's blog https://blog.josefsson.org/2022/ |
programming - Simon Josefsson's blog https://blog.josefsson.org/category/programming/ |
July 2022 - Simon Josefsson's blog https://blog.josefsson.org/2022/07/ |
Coping with non-free software in Debian - Simon Josefsson's blog https://blog.josefsson.org/2023/07/11/coping-with-non-free-debian/ |
June 2021 - Simon Josefsson's blog https://blog.josefsson.org/2021/06/ |
Second impressions of Guix 1.4 - Simon Josefsson's blog https://blog.josefsson.org/2022/12/19/second-impressions-of-guix-1-4/ |
April 2023 - Simon Josefsson's blog https://blog.josefsson.org/2023/04/ |
security - Simon Josefsson's blog https://blog.josefsson.org/category/security/ |
About - Simon Josefsson's blog https://blog.josefsson.org/about/ |
August 2022 - Simon Josefsson's blog https://blog.josefsson.org/2022/08/ |
general - Simon Josefsson's blog https://blog.josefsson.org/category/general/ |
Simon Josefsson's blog - Page 2 https://blog.josefsson.org/page/2/ |
Date: Tue, 14 May 2024 23:26:45 GMT |
Server: Apache/2.4.59 (Debian) |
Link: https://blog.josefsson.org/wp-json/; rel="https://api.w.org/" |
Strict-Transport-Security: max-age=63072000 |
Content-Security-Policy: upgrade-insecure-requests |
X-Frame-Options: SAMEORIGIN |
X-Content-Type-Options: nosniff |
X-Permitted-Cross-Domain-Policies: none |
Referrer-Policy: no-referrer |
Expect-CT: enforce, max-age=30, report-uri="https://568196465ce39e9153d27d3dafc07f9b.report-uri.com/r/d/ct/enforce" |
Upgrade: h2 |
Connection: Upgrade |
Vary: Accept-Encoding |
Transfer-Encoding: chunked |
Content-Type: text/html; charset=UTF-8 |
charset="utf-8"/ |
content="width=device-width, initial-scale=1" name="viewport"/ |
content="max-image-preview:large" name="robots" |
content="WordPress 6.5.3" name="generator"/ |
content="https://blog.josefsson.org/wp-content/uploads/2021/05/favicon.ico" name="msapplication-TileImage"/ |
Ip Country: Sweden |
City Name: Sollentuna |
Latitude: 59.4284 |
Longitude: 17.9653 |
for: Search Menu Primary menu Home About Reproducible and minimal source-only tarballs Posted on 2024-04-13 by simon — 1 Comment ↓ With the release of Libntlm version 1.8 the release tarball can be reproduced on several distributions. We also publish a signed minimal source-only tarball, produced by git-archive which is the same format used by Savannah , Codeberg , GitLab , GitHub and others. Reproducibility of both tarballs are tested continuously for regressions on GitLab through a CI/CD pipeline. If that wasn’t enough to excite you, the Debian packages of Libntlm are now built from the reproducible minimal source-only tarball. The resulting binaries are reproducible on several architectures. What does that even mean? Why should you care? How you can do the same for your project? What are the open issues? Read on, dear reader… This article describes my practical experiments with reproducible release artifacts, following up on my earlier thoughts that lead to discussion on Fosstodon and a patch by Janneke Nieuwenhuizen to make Guix tarballs reproducible that inspired me to some practical work. Let’s look at how a maintainer release some software, and how a user can reproduce the released artifacts from the source code. Libntlm provides a shared library written in C and uses GNU Make , GNU Autoconf , GNU Automake , GNU Libtool and gnulib for build management, but these ideas should apply to most project and build system. The following illustrate the steps a maintainer would take to prepare a release: git clone https://gitlab.com/gsasl/libntlm.git cd libntlm git checkout v1.8 ./bootstrap ./configure make distcheck gpg -b libntlm-1.8.tar.gz The generated files libntlm-1.8.tar.gz and libntlm-1.8.tar.gz.sig are published, and users download and use them. This is how the GNU project have been doing releases since the late 1980’s. That is a testament to how successful this pattern has been! These tarballs contain source code and some generated files, typically shell scripts generated by autoconf, makefile templates generated by automake, documentation in formats like Info , HTML, or PDF. Rarely do they contain binary object code, but historically that happened. The XZUtils incident illustrate that tarballs with files that are not included in the git archive offer an opportunity to disguise malicious backdoors. I blogged earlier how to mitigate this risk by using signed minimal source-only tarballs. The risk of hiding malware is not the only motivation to publish signed minimal source-only tarballs. With pre-generated content in tarballs, there is a risk that GNU/Linux distributions such as Trisquel , Guix , Debian / Ubuntu or Fedora ship generated files coming from the tarball into the binary *.deb or *.rpm package file. Typically the person packaging the upstream project never realized that some installed artifacts was not re-built through a typical autoconf -fi && ./configure && make install sequence, and never wrote the code to rebuild everything. This can also happen if the build rules are written but are buggy, shipping the old artifact. When a security problem is found, this can lead to time-consuming situations, as it may be that patching the relevant source code and rebuilding the package is not sufficient: the vulnerable generated object from the tarball would be shipped into the binary package instead of a rebuilt artifact. For architecture-specific binaries this rarely happens, since object code is usually not included in tarballs — although for 10+ years I shipped the binary Java JAR file in the GNU Libidn release tarball, until I stopped shipping it. For interpreted languages and especially for generated content such as HTML, PDF, shell scripts this happens more than you would like. Publishing minimal source-only tarballs enable easier auditing of a project’s code, to avoid the need to read through all generated files looking for malicious content. I have taken care to generate the source-only minimal tarball using git-archive . This is the same format that GitLab, GitHub etc offer for the automated download links on git tags. The minimal source-only tarballs can thus serve as a way to audit GitLab and GitHub download material! Consider if/when hosting sites like GitLab or GitHub has a security incident that cause generated tarballs to include a backdoor that is not present in the git repository. If people rely on the tag download artifact without verifying the maintainer PGP signature using GnuPG , this can lead to similar backdoor scenarios that we had for XZUtils but originated with the hosting provider instead of the release manager. This is even more concerning, since this attack can be mounted for some selected IP address that you want to target and not on everyone, thereby making it harder to discover. With all that discussion and rationale out of the way, let’s return to the release process. I have added another step here: make srcdist gpg -b libntlm-1.8-src.tar.gz Now the release is ready. I publish these four files in the Libntlm’s Savannah Download area , but they can be uploaded to a GitLab/GitHub release area as well. These are the SHA256 checksums I got after building the tarballs on my Trisquel 11 aramo laptop : 91de864224913b9493c7a6cec2890e6eded3610d34c3d983132823de348ec2ca libntlm-1.8-src.tar.gz ce6569a47a21173ba69c990965f73eb82d9a093eb871f935ab64ee13df47fda1 libntlm-1.8.tar.gz So how can you reproduce my artifacts? Here is how to reproduce them in a Ubuntu 22.04 container: podman run -it rm ubuntu:22.04 apt-get update apt-get install -y no-install-recommends autoconf automake libtool make git ca-certificates git clone https://gitlab.com/gsasl/libntlm.git cd libntlm git checkout v1.8 ./bootstrap ./configure make dist srcdist sha256sum libntlm-*.tar.gz You should see the exact same SHA256 checksum values. Hooray! This works because Trisquel 11 and Ubuntu 22.04 uses the same version of git, autoconf, automake, and libtool. These tools do not guarantee the same output content for all versions, similar to how GNU GCC does not generate the same binary output for all versions. So there is still some delicate version pairing needed. Ideally, the artifacts should be possible to reproduce from the release artifacts themselves, and not only directly from git. It is possible to reproduce the full tarball in a AlmaLinux 8 container – replace almalinux:8 with rockylinux:8 if you prefer RockyLinux : podman run -it rm almalinux:8 dnf update -y dnf install -y make wget gcc wget https://download.savannah.nongnu.org/releases/libntlm/libntlm-1.8.tar.gz tar xfa libntlm-1.8.tar.gz cd libntlm-1.8 ./configure make dist sha256sum libntlm-1.8.tar.gz The source-only minimal tarball can be regenerated on Debian 11 : podman run -it rm debian:11 apt-get update apt-get install -y no-install-recommends make git ca-certificates git clone https://gitlab.com/gsasl/libntlm.git cd libntlm git checkout v1.8 make -f cfg.mk srcdist sha256sum libntlm-1.8-src.tar.gz As the Magnus Opus or chef-d’œuvre, let’s recreate the full tarball directly from the minimal source-only tarball on Trisquel 11 – replace docker.io/kpengboy/trisquel:11.0 with ubuntu:22.04 if you prefer. podman run -it rm docker.io/kpengboy/trisquel:11.0 apt-get update apt-get install -y no-install-recommends autoconf automake libtool make wget git ca-certificates wget https://download.savannah.nongnu.org/releases/libntlm/libntlm-1.8-src.tar.gz tar xfa libntlm-1.8-src.tar.gz cd libntlm-v1.8 ./bootstrap ./configure make dist sha256sum libntlm-1.8.tar.gz Yay! You should now have great confidence in that the release artifacts correspond to what’s in version control and also to what the maintainer intended to release. Your remaining job is to audit the source code for vulnerabilities, including the source code of the dependencies used in the build. You no longer have to worry about auditing the release artifacts. I find it somewhat amusing that the build infrastructure for Libntlm is now in a...
Domain Name: josefsson.org Registry Domain ID: e213033642ca4a09bc561d75a2a73d94-LROR Registrar WHOIS Server: http://whois.rrpproxy.net Registrar URL: http://www.key-systems.net Updated Date: 2024-02-05T13:24:28Z Creation Date: 1999-12-22T13:23:55Z Registry Expiry Date: 2024-12-22T13:23:54Z Registrar: Key-Systems GmbH Registrar IANA ID: 269 Registrar Abuse Contact Email: abuse@key-systems.net Registrar Abuse Contact Phone: +49.68949396850 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Registrant Organization: Simon Josefsson Registrant Country: SE Name Server: kil.sjd.se Name Server: yxa-vi.extundo.com Name Server: gaffel.josefsson.org DNSSEC: unsigned >>> Last update of WHOIS database: 2024-05-18T01:19:36Z <<<