<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.1.1">Jekyll</generator><link href="https://blog.hackeriet.no/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.hackeriet.no/" rel="alternate" type="text/html" /><updated>2026-01-11T00:17:41+01:00</updated><id>https://blog.hackeriet.no/feed.xml</id><title type="html">Hackeriet Blog</title><subtitle>Ikke akkurat NRK Beta</subtitle><entry><title type="html">Lessons learned after 39C3</title><link href="https://blog.hackeriet.no/lesson-learned-39c3/" rel="alternate" type="text/html" title="Lessons learned after 39C3" /><published>2026-01-10T00:00:00+01:00</published><updated>2026-01-10T00:00:00+01:00</updated><id>https://blog.hackeriet.no/lesson-learned-39c3</id><content type="html" xml:base="https://blog.hackeriet.no/lesson-learned-39c3/">&lt;p&gt;&lt;img src=&quot;/images/39c3-table-cropped.jpg&quot; alt=&quot;assembly-table&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This year, many Hackeriet members attended the 39th Chaos Communication Congress. It was a blast! As part of our efforts to improve how we organize these trips, we held a lessons-learned meetup afterward. Around 15 people joined the meeting, and there was good engagement and a strong willingness to contribute.&lt;/p&gt;

&lt;p&gt;There was broad agreement that this year’s congress worked well. Notes were prepared in advance and added during the meeting; these are available at https://pad.hackeriet.no/40C3. The pad is now read-only unless you are logged in. The discussion itself went far beyond what makes sense to fully document. This post focuses on concrete decisions, with the intent of making it easier for others to join in and contribute.&lt;/p&gt;

&lt;p&gt;We agreed that we need to be better at planning for these events. At the same time, there was general satisfaction with the current voucher process. It is important to stay aware that we are managing vouchers on behalf of the broader Norwegian community, not just ourselves. We decided to set up the voucher list for 40C3 early. Foxboron volunteered to take responsibility for the voucher process as a whole.&lt;/p&gt;

&lt;p&gt;We also agreed to introduce a more explicit “padawan” or second-hand model for roles in general. This lowers the barrier for learning and participation, and helps reduce the bus factor. Xorgic volunteered as voucher padawan, with the primary role holder acting as the elder.&lt;/p&gt;

&lt;p&gt;Another point of agreement was the need to better separate informational communication from general chatter, memes, and noise. Important messages are easy to miss and hard to push through in busy channels. The decision was to create separate Signal groups to address this.&lt;/p&gt;

&lt;p&gt;In addition, we decided to create a dedicated Signal group for people who want to take on organizational roles and actively contribute.&lt;/p&gt;

&lt;p&gt;We also agreed that clearer documentation of how things actually work is needed. This makes it easier for new people to understand both the process and where they can plug in. This blog post is one small step in that direction. A corresponding wiki page has also been created at https://wiki.hackeriet.no/projects/chaos-congress to serve as a more permanent home for this information.&lt;/p&gt;

&lt;p&gt;Atluxity volunteered to take responsibility for planning meetups, likely virtual. The rough idea is to start with wider intervals and then ramp up: March, June, August, and then monthly closer to the event. This role currently lacks a padawan.&lt;/p&gt;

&lt;p&gt;Finally, we want to pursue sponsorships and other financial support. Bilkollektivet, NUUG Foundation, and Hyperion were mentioned as potential supporters. There are also commercial actors in Norway that may be relevant to approach.&lt;/p&gt;

&lt;p&gt;As always, hack the planet.&lt;/p&gt;

&lt;p&gt;kthxby&lt;/p&gt;</content><author><name>atluxity</name></author><category term="meta" /><summary type="html">This year, many Hackeriet members attended the 39th Chaos Communication Congress. It was a blast! As part of our efforts to improve how we organize these trips, we held a lessons-learned meetup afterward. Around 15 people joined the meeting, and there was good engagement and a strong willingness to contribute. There was broad agreement that this year’s congress worked well. Notes were prepared in advance and added during the meeting; these are available at https://pad.hackeriet.no/40C3. The pad is now read-only unless you are logged in. The discussion itself went far beyond what makes sense to fully document. This post focuses on concrete decisions, with the intent of making it easier for others to join in and contribute. We agreed that we need to be better at planning for these events. At the same time, there was general satisfaction with the current voucher process. It is important to stay aware that we are managing vouchers on behalf of the broader Norwegian community, not just ourselves. We decided to set up the voucher list for 40C3 early. Foxboron volunteered to take responsibility for the voucher process as a whole. We also agreed to introduce a more explicit “padawan” or second-hand model for roles in general. This lowers the barrier for learning and participation, and helps reduce the bus factor. Xorgic volunteered as voucher padawan, with the primary role holder acting as the elder. Another point of agreement was the need to better separate informational communication from general chatter, memes, and noise. Important messages are easy to miss and hard to push through in busy channels. The decision was to create separate Signal groups to address this. In addition, we decided to create a dedicated Signal group for people who want to take on organizational roles and actively contribute. We also agreed that clearer documentation of how things actually work is needed. This makes it easier for new people to understand both the process and where they can plug in. This blog post is one small step in that direction. A corresponding wiki page has also been created at https://wiki.hackeriet.no/projects/chaos-congress to serve as a more permanent home for this information. Atluxity volunteered to take responsibility for planning meetups, likely virtual. The rough idea is to start with wider intervals and then ramp up: March, June, August, and then monthly closer to the event. This role currently lacks a padawan. Finally, we want to pursue sponsorships and other financial support. Bilkollektivet, NUUG Foundation, and Hyperion were mentioned as potential supporters. There are also commercial actors in Norway that may be relevant to approach. As always, hack the planet. kthxby</summary></entry><entry><title type="html">Adventures with Fail2Ban and AbuseIPDB</title><link href="https://blog.hackeriet.no/adventures-with-fail2ban/" rel="alternate" type="text/html" title="Adventures with Fail2Ban and AbuseIPDB" /><published>2024-12-13T00:00:00+01:00</published><updated>2024-12-13T00:00:00+01:00</updated><id>https://blog.hackeriet.no/adventures-with-fail2ban</id><content type="html" xml:base="https://blog.hackeriet.no/adventures-with-fail2ban/">&lt;p&gt;Securing systems exposed to the internet is a moving target, especially when dealing with brute-force attacks on authentication services. I run a Zimbra mail server on an Ubuntu 18.04 server (yes, I know it’s time to upgrade), and I decided to tackle these never-ending login attempts. Along the way, I integrated AbuseIPDB for IP reporting, configured the recidive jail for persistent offenders, and encountered a few interesting bugs and quirks worth sharing.&lt;/p&gt;

&lt;p&gt;Fail2Ban is an open-source intrusion prevention software that monitors system logs for signs of automated attacks, such as repeated failed login attempts. When it detects suspicious activity, Fail2Ban temporarily bans the offending IP address by updating the system’s firewall rules. This helps mitigate brute-force attacks and other malicious behavior without requiring constant manual intervention. It is highly configurable and can be extended to monitor various services like SSH, mail servers, and web servers.&lt;/p&gt;

&lt;p&gt;This post details what I did, the tricks I applied, and the lessons I learned to secure my server effectively.&lt;/p&gt;

&lt;h1 id=&quot;setting-up-fail2ban-for-ssh-and-zimbra&quot;&gt;Setting Up Fail2Ban for SSH and Zimbra&lt;/h1&gt;

&lt;p&gt;When I started, the fail2ban configuration already included the following files in /etc/fail2ban/jail.d/:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;root@mail1:~# ls /etc/fail2ban/jail.d/&lt;/p&gt;

  &lt;p&gt;defaults-debian.conf zimbra.local&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;defaults-debian.conf&lt;/code&gt;: This file contained the default sshd jail.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zimbra.local&lt;/code&gt;: Provided by the Zimbra package, this file included configurations for the jails zimbra-smtp and zimbra-web.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I verified the active jails using:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;root@mail1:~# fail2ban-client status&lt;/p&gt;

  &lt;p&gt;Status&lt;/p&gt;

  &lt;table&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;- Number of jail:      3&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

  &lt;p&gt;`- Jail list:   sshd, zimbra-smtp, zimbra-web&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For Zimbra, this config came from the install-packages of Zimbra. At least I have no recolection of setting this up. Zimbra has its &lt;a href=&quot;https://blog.zimbra.com/2022/08/configuring-fail2ban-on-zimbra/&quot;&gt;own documentation regarding this&lt;/a&gt;.
So that is my exposed authentications, sshd, webmail and smtp.&lt;/p&gt;

&lt;h1 id=&quot;adding-abuseipdb-integration&quot;&gt;Adding AbuseIPDB Integration&lt;/h1&gt;

&lt;p&gt;In order to contribute back to the community I wanted to report abusive IP addresses to AbuseIPDB. As a side-effect it also provides better visibility and enriched feedback.
AbuseIPDB is a public database of abusive IP addresses that allows users to report and share information about malicious activity, such as brute-force attacks, spam, and hacking attempts. It provides tools to query and analyze IP reputation, helping system administrators and security professionals identify and block bad actors.&lt;/p&gt;

&lt;h2 id=&quot;fixing-the-abuseipdbconf-action&quot;&gt;Fixing the abuseipdb.conf Action&lt;/h2&gt;

&lt;p&gt;AbuseIPDB has &lt;a href=&quot;https://www.abuseipdb.com/fail2ban.html&quot;&gt;its own documentation for integration with Fail2Ban&lt;/a&gt;, but I noticed a problem with their documentation and it seem a bit outdated. For example it includes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--tlsv1.0&lt;/code&gt;. After some testing, reading &lt;a href=&quot;https://github.com/fail2ban/fail2ban/issues/2334&quot;&gt;some&lt;/a&gt;(1) &lt;a href=&quot;https://github.com/fail2ban/fail2ban/issues/2590&quot;&gt;issues&lt;/a&gt;(2) I figured that using the latest version of Fail2Ban action-file from their main branch worked perfectly.&lt;/p&gt;

&lt;p&gt;This showcased to me that Fail2Ban is just simply running linux-commands, and it is quite flexible in that regard, so I added some &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sed&lt;/code&gt;s to redact hostname and domain. I split them for reasons.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;actionban = lgm=$(printf ‘%%.1000s\n…’ “&lt;matches&gt;&quot; | \                   # Limit log message to 1000 characters&lt;/matches&gt;&lt;/p&gt;

  &lt;table&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;sed ‘s,REDACTED-HOSTNAME,host,g’&lt;/td&gt;
        &lt;td&gt;\                                   # Replace hostname with ‘host’&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

  &lt;p&gt;sed ‘s,REDACTED-DOMAINNAME,domain.tld,g’); \   # Replace domain name with ‘domain.tld’&lt;/p&gt;

  &lt;p&gt;curl -sSf “https://api.abuseipdb.com/api/v2/report” \&lt;/p&gt;

  &lt;p&gt;-H “Accept: application/json” \&lt;/p&gt;

  &lt;p&gt;-H “Key: &lt;abuseipdb_apikey&gt;&quot; \&lt;/abuseipdb_apikey&gt;&lt;/p&gt;

  &lt;p&gt;–data-urlencode “comment=$lgm” \&lt;/p&gt;

  &lt;p&gt;–data-urlencode “ip=&lt;ip&gt;&quot; \&lt;/ip&gt;&lt;/p&gt;

  &lt;p&gt;–data “categories=&lt;abuseipdb_category&gt;&quot;&lt;/abuseipdb_category&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By applying this trick, I ensured reports remain useful without revealing my server’s identity. It just feels better.&lt;/p&gt;

&lt;h1 id=&quot;adding-the-recidive-jail-for-persistent-offenders&quot;&gt;Adding the Recidive Jail for Persistent Offenders&lt;/h1&gt;

&lt;p&gt;To deal with repeat offenders, I enabled the recidive jail. This jail monitors Fail2Ban’s own log file to identify IPs that are repeatedly banned and imposes harsher penalties.&lt;/p&gt;

&lt;h2 id=&quot;recidive-jail-configuration&quot;&gt;Recidive Jail Configuration&lt;/h2&gt;

&lt;p&gt;I created a recidive jail configuration in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/fail2ban/jail.d/recidive.local&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[recidive]&lt;/p&gt;

  &lt;p&gt;enabled = true&lt;/p&gt;

  &lt;p&gt;logpath  = /var/log/fail2ban.log&lt;/p&gt;

  &lt;p&gt;banaction = %(banaction_allports)s&lt;/p&gt;

  &lt;p&gt;bantime  = 26w&lt;/p&gt;

  &lt;p&gt;findtime = 7d&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;lesson-learned-service-restart-is-more-reliable&quot;&gt;Lesson Learned: Service Restart Is More Reliable&lt;/h2&gt;

&lt;p&gt;I encountered an issue where &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fail2ban-client reload&lt;/code&gt; sometimes failed to apply changes, particularly when modifying or adding new jails like recidive or changing actions. It was mighty frustrating. Restarting the Fail2Ban service using systemctl worked reliably:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;systemctl restart fail2ban&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;bugs-and-lessons-learned&quot;&gt;Bugs and Lessons Learned&lt;/h1&gt;

&lt;ol&gt;
  &lt;li&gt;AbuseIPDB Placeholder Bug: Initially, the IP placeholder (&lt;ip&gt;) was not being replaced in the abuseipdb.conf action file. After reviewing the latest version from the Fail2Ban GitHub repository, I realized my version had a bug. Replacing my action file with the updated version fixed the issue.&lt;/ip&gt;&lt;/li&gt;
  &lt;li&gt;Outdated TLS Flag: AbuseIPDB’s documentation included –tlsv1.0 in the curl command. This is insecure and unnecessary; modern curl versions negotiate TLS securely by default. Removing it resolved the issue.&lt;/li&gt;
  &lt;li&gt;Service Reload vs Restart: fail2ban-client reload occasionally failed to apply configuration changes. Restarting the service with systemctl ensured consistency and reliability.&lt;/li&gt;
  &lt;li&gt;Hostname Redaction: Adding redaction to reports before submitting them to AbuseIPDB was a simple but effective way to prevent leaking sensitive server details.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h1&gt;

&lt;p&gt;Deploying Fail2Ban to protect SSH and Zimbra services, integrating AbuseIPDB for info-sharing, and using the recidive jail for persistent offenders I feel significantly improved the security of my server and help mitigate some of my exposure. Along the way, I learned the importance of carefully reviewing documentation, checking for software bugs, and leveraging the flexibility of Fail2Ban actions. I am now considering collecting and sharing the bans done in the recidive-jail between all my servers, because why not. Well, why not, the risk here is if one does not have a way to remote control their server “out of band”, like via VM management interface etc, one might lock themself out from contacting their server. Or if one has customers or users that manages to trigger the ban then it requires manual intervention. For me, these are managed risks. Is it for you?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.abuseipdb.com/user/23612&quot;&gt;This is what my reports on AbuseIPDB&lt;/a&gt; looks like.&lt;/p&gt;

&lt;p&gt;As always, hack the planet.&lt;/p&gt;

&lt;p&gt;kthxby&lt;/p&gt;</content><author><name>atluxity</name></author><category term="linux" /><summary type="html">Securing systems exposed to the internet is a moving target, especially when dealing with brute-force attacks on authentication services. I run a Zimbra mail server on an Ubuntu 18.04 server (yes, I know it’s time to upgrade), and I decided to tackle these never-ending login attempts. Along the way, I integrated AbuseIPDB for IP reporting, configured the recidive jail for persistent offenders, and encountered a few interesting bugs and quirks worth sharing. Fail2Ban is an open-source intrusion prevention software that monitors system logs for signs of automated attacks, such as repeated failed login attempts. When it detects suspicious activity, Fail2Ban temporarily bans the offending IP address by updating the system’s firewall rules. This helps mitigate brute-force attacks and other malicious behavior without requiring constant manual intervention. It is highly configurable and can be extended to monitor various services like SSH, mail servers, and web servers. This post details what I did, the tricks I applied, and the lessons I learned to secure my server effectively. Setting Up Fail2Ban for SSH and Zimbra When I started, the fail2ban configuration already included the following files in /etc/fail2ban/jail.d/: root@mail1:~# ls /etc/fail2ban/jail.d/ defaults-debian.conf zimbra.local defaults-debian.conf: This file contained the default sshd jail. zimbra.local: Provided by the Zimbra package, this file included configurations for the jails zimbra-smtp and zimbra-web. I verified the active jails using: root@mail1:~# fail2ban-client status Status - Number of jail: 3 `- Jail list: sshd, zimbra-smtp, zimbra-web For Zimbra, this config came from the install-packages of Zimbra. At least I have no recolection of setting this up. Zimbra has its own documentation regarding this. So that is my exposed authentications, sshd, webmail and smtp. Adding AbuseIPDB Integration In order to contribute back to the community I wanted to report abusive IP addresses to AbuseIPDB. As a side-effect it also provides better visibility and enriched feedback. AbuseIPDB is a public database of abusive IP addresses that allows users to report and share information about malicious activity, such as brute-force attacks, spam, and hacking attempts. It provides tools to query and analyze IP reputation, helping system administrators and security professionals identify and block bad actors. Fixing the abuseipdb.conf Action AbuseIPDB has its own documentation for integration with Fail2Ban, but I noticed a problem with their documentation and it seem a bit outdated. For example it includes --tlsv1.0. After some testing, reading some(1) issues(2) I figured that using the latest version of Fail2Ban action-file from their main branch worked perfectly. This showcased to me that Fail2Ban is just simply running linux-commands, and it is quite flexible in that regard, so I added some seds to redact hostname and domain. I split them for reasons. actionban = lgm=$(printf ‘%%.1000s\n…’ “&quot; | \ # Limit log message to 1000 characters sed ‘s,REDACTED-HOSTNAME,host,g’ \ # Replace hostname with ‘host’ sed ‘s,REDACTED-DOMAINNAME,domain.tld,g’); \ # Replace domain name with ‘domain.tld’ curl -sSf “https://api.abuseipdb.com/api/v2/report” \ -H “Accept: application/json” \ -H “Key: &quot; \ –data-urlencode “comment=$lgm” \ –data-urlencode “ip=&quot; \ –data “categories=&quot; By applying this trick, I ensured reports remain useful without revealing my server’s identity. It just feels better. Adding the Recidive Jail for Persistent Offenders To deal with repeat offenders, I enabled the recidive jail. This jail monitors Fail2Ban’s own log file to identify IPs that are repeatedly banned and imposes harsher penalties. Recidive Jail Configuration I created a recidive jail configuration in /etc/fail2ban/jail.d/recidive.local: [recidive] enabled = true logpath = /var/log/fail2ban.log banaction = %(banaction_allports)s bantime = 26w findtime = 7d Lesson Learned: Service Restart Is More Reliable I encountered an issue where fail2ban-client reload sometimes failed to apply changes, particularly when modifying or adding new jails like recidive or changing actions. It was mighty frustrating. Restarting the Fail2Ban service using systemctl worked reliably: systemctl restart fail2ban Bugs and Lessons Learned AbuseIPDB Placeholder Bug: Initially, the IP placeholder () was not being replaced in the abuseipdb.conf action file. After reviewing the latest version from the Fail2Ban GitHub repository, I realized my version had a bug. Replacing my action file with the updated version fixed the issue. Outdated TLS Flag: AbuseIPDB’s documentation included –tlsv1.0 in the curl command. This is insecure and unnecessary; modern curl versions negotiate TLS securely by default. Removing it resolved the issue. Service Reload vs Restart: fail2ban-client reload occasionally failed to apply configuration changes. Restarting the service with systemctl ensured consistency and reliability. Hostname Redaction: Adding redaction to reports before submitting them to AbuseIPDB was a simple but effective way to prevent leaking sensitive server details. Final Thoughts Deploying Fail2Ban to protect SSH and Zimbra services, integrating AbuseIPDB for info-sharing, and using the recidive jail for persistent offenders I feel significantly improved the security of my server and help mitigate some of my exposure. Along the way, I learned the importance of carefully reviewing documentation, checking for software bugs, and leveraging the flexibility of Fail2Ban actions. I am now considering collecting and sharing the bans done in the recidive-jail between all my servers, because why not. Well, why not, the risk here is if one does not have a way to remote control their server “out of band”, like via VM management interface etc, one might lock themself out from contacting their server. Or if one has customers or users that manages to trigger the ban then it requires manual intervention. For me, these are managed risks. Is it for you? This is what my reports on AbuseIPDB looks like. As always, hack the planet. kthxby</summary></entry><entry><title type="html">Using udev to disable the built in keyboard on your laptop</title><link href="https://blog.hackeriet.no/udev-disable-keyboard/" rel="alternate" type="text/html" title="Using udev to disable the built in keyboard on your laptop" /><published>2024-11-08T00:00:00+01:00</published><updated>2024-11-08T00:00:00+01:00</updated><id>https://blog.hackeriet.no/udev-disable-keyboard</id><content type="html" xml:base="https://blog.hackeriet.no/udev-disable-keyboard/">&lt;p&gt;The built in keyboard on my laptop is &lt;em&gt;annoying&lt;/em&gt; to use, everything is wrong about it (Dell XPS Plus). To make matters worse, it is also a european layout that i am not used to.
I type at perhaps half my usual speed using the built in keyboard, so i wish to place my regular mechanical keyboard on top and disable the built in keyboard (so i dont accidentally hit the built in keys)&lt;/p&gt;

&lt;h2 id=&quot;how-to&quot;&gt;How to&lt;/h2&gt;

&lt;p&gt;First you must determine the name of your bluetooth keyboard and the device path of your laptop keyboard.
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cat /proc/bus/input/devices | less&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The name of the bluetooth keyboard in my case is “BT Keyboard”, this is probably going to be the same as appears in your DE’s bluetooth settings&lt;/p&gt;

&lt;p&gt;My laptops built in keyboard is named “AT Translated Set 2 keyboard”, you can verify this using something like evtest.
You want the device path for this, located beside the “Sysfs” key (in the output of the above cat command), in my case it is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/devices/platform/i8042/serio0/input/input2/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;We can inhibit the device by writing a 1 to the file located at &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/sys/&amp;lt;your device path&amp;gt;/inhibited&lt;/code&gt;, you can dis-inhibit the device by writing a 0.
This can be done with echo: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo 1 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited&lt;/code&gt;. Upon running that command, your laptop keyboard should be disabled, to reverse it, either reboot or write a 0 to the same file.&lt;/p&gt;

&lt;p&gt;Now that we have the mechanism to disable and enable the device on demand, we can write a udev rule for it. (This is probably possible in a less hacky way, but it works)&lt;/p&gt;

&lt;p&gt;Here are my particular udev rules:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-udev&quot;&gt;SUBSYSTEM==&quot;input&quot;, ATTRS{name}==&quot;BT Keyboard&quot;, ACTION==&quot;add&quot;, RUN+=&quot;/usr/bin/sh -c '/usr/bin/echo 1 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited'&quot;

SUBSYSTEM==&quot;input&quot;, ATTRS{name}==&quot;BT Keyboard&quot;, ACTION==&quot;remove&quot;, RUN+=&quot;/usr/bin/sh -c '/usr/bin/echo 0 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited'&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;each rule (line) matches either the connect or disconnect of the bluetooth keyboard, and each will run the corresponding echo command from before.&lt;/p&gt;

&lt;p&gt;You should be able to copy and paste those rules into your own file inside &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/udev/rules.d/&lt;/code&gt;, as long as you swap the values for the name and the device path.&lt;/p&gt;</content><author><name>eilefsen</name></author><category term="linux" /><summary type="html">The built in keyboard on my laptop is annoying to use, everything is wrong about it (Dell XPS Plus). To make matters worse, it is also a european layout that i am not used to. I type at perhaps half my usual speed using the built in keyboard, so i wish to place my regular mechanical keyboard on top and disable the built in keyboard (so i dont accidentally hit the built in keys) How to First you must determine the name of your bluetooth keyboard and the device path of your laptop keyboard. cat /proc/bus/input/devices | less The name of the bluetooth keyboard in my case is “BT Keyboard”, this is probably going to be the same as appears in your DE’s bluetooth settings My laptops built in keyboard is named “AT Translated Set 2 keyboard”, you can verify this using something like evtest. You want the device path for this, located beside the “Sysfs” key (in the output of the above cat command), in my case it is /devices/platform/i8042/serio0/input/input2/. We can inhibit the device by writing a 1 to the file located at /sys/&amp;lt;your device path&amp;gt;/inhibited, you can dis-inhibit the device by writing a 0. This can be done with echo: echo 1 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited. Upon running that command, your laptop keyboard should be disabled, to reverse it, either reboot or write a 0 to the same file. Now that we have the mechanism to disable and enable the device on demand, we can write a udev rule for it. (This is probably possible in a less hacky way, but it works) Here are my particular udev rules: SUBSYSTEM==&quot;input&quot;, ATTRS{name}==&quot;BT Keyboard&quot;, ACTION==&quot;add&quot;, RUN+=&quot;/usr/bin/sh -c '/usr/bin/echo 1 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited'&quot; SUBSYSTEM==&quot;input&quot;, ATTRS{name}==&quot;BT Keyboard&quot;, ACTION==&quot;remove&quot;, RUN+=&quot;/usr/bin/sh -c '/usr/bin/echo 0 &amp;gt; /sys/devices/platform/i8042/serio0/input/input2/inhibited'&quot; each rule (line) matches either the connect or disconnect of the bluetooth keyboard, and each will run the corresponding echo command from before. You should be able to copy and paste those rules into your own file inside /etc/udev/rules.d/, as long as you swap the values for the name and the device path.</summary></entry><entry><title type="html">DIY Hardware for DMX LED Pot Control with WLED</title><link href="https://blog.hackeriet.no/DIY-WLED-DMX-hardware/" rel="alternate" type="text/html" title="DIY Hardware for DMX LED Pot Control with WLED" /><published>2023-12-29T00:00:00+01:00</published><updated>2023-12-29T00:00:00+01:00</updated><id>https://blog.hackeriet.no/DIY-WLED-DMX-hardware</id><content type="html" xml:base="https://blog.hackeriet.no/DIY-WLED-DMX-hardware/">&lt;p&gt;Hackeriet at one point aquired a few Fun Generation LED pots, and one of the strong selling arguments for us was the knowledge that they supported DMX.&lt;/p&gt;

&lt;p&gt;“DMX (Digital Multiplex) is a protocol used to control devices such as lights or fog machines. The signal is unidirectional, meaning it only travels in one direction; from the controller or first light, all the way to the last. In its most basic form, DMX is just a protocol for lights, like how MIDI is for keyboards or DAW controllers.” &lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;This is not a blogpost about DMX, in this blogpost we will focus on the hardware we put together to be able to control these lights via a web application called WLED.&lt;/p&gt;

&lt;h2 id=&quot;bill-of-materials&quot;&gt;Bill of Materials&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Junction box&lt;/li&gt;
  &lt;li&gt;Sacrificial XLR cable&lt;/li&gt;
  &lt;li&gt;5v power supply&lt;/li&gt;
  &lt;li&gt;D1 mini (ESP-8266EX board) &lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
  &lt;li&gt;MAX485 module&lt;/li&gt;
  &lt;li&gt;A few header pins and wire of choice&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;junction-box&quot;&gt;Junction box&lt;/h3&gt;

&lt;p&gt;My thinking is that this box will probably live many hours on a floor and be in risk of poor threatment for much of its life, so I wanted something a bit rugged. Visiting my closest electronics dealer I just found one who felt right for me. It is 80x80x38mm and closed with a single central screw. It has modular soft walls ment for poking cables through.&lt;/p&gt;

&lt;h3 id=&quot;sacrificial-xlr-cable&quot;&gt;Sacrificial XLR cable&lt;/h3&gt;

&lt;p&gt;I chose to have a bit of a tail out of the box with an XLR-cable rather than a plug into the box. It saves me some space in the box and feels like the more durable and practical solution. This ment I had to cut a cable in two and just make sure to use the correct one (look behind the LED pots, you want the one that goes into the INPUT one)&lt;/p&gt;

&lt;h3 id=&quot;5v-power-supply&quot;&gt;5v power supply&lt;/h3&gt;

&lt;p&gt;This is what the big old drawer with legacy cables and wall sockets is good for. I found one that used to be for some HP palm-like device I had once, it even came with a plug. That part is optional. I like the idea that if someone stumbles in that cable it will just disconnect the plug and not yank the whole thing apart.&lt;/p&gt;

&lt;h3 id=&quot;d1-mini&quot;&gt;D1 mini&lt;/h3&gt;

&lt;p&gt;This is the brain of the operation. ESP-8266 is an amazing ecosphere of geek-enabling technology. It is a lower powered 32-bit RISC CPU running at 160 Mhz and has a built-in WIFI module. Compared to an Arduino with its 8-bit microcontroller, 16Mhz clock speed. The D1 mini supports Micropython, Adruino and nodemcu. We are going to flash this device with a software project called WLED, which also supports DMX although it is made primarily for LED-strips and such.&lt;/p&gt;

&lt;h3 id=&quot;max485&quot;&gt;MAX485&lt;/h3&gt;

&lt;p&gt;This is a requirement from the software we are going to load onto the D1 mini. DMX is a serial format, and such is also RS-485. I dont really know how this part works, I just see that its a requirement. I have been unable to find the site of an actuall manufactorer, but there seem to be tens of tens of similar off brands modules that does the same.&lt;/p&gt;

&lt;h2 id=&quot;schematics&quot;&gt;Schematics&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://blog.hackeriet.no/images/wled-d1-mini-schematic.png&quot; alt=&quot;Schmeatics of rthe WLED d1 mini connections&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;software&quot;&gt;Software&lt;/h2&gt;

&lt;p&gt;I wont copy this part into here, it is better if I just reference the relevant pages.
https://kno.wled.ge/advanced/compiling-wled/
https://kno.wled.ge/interfaces/dmx-output/
Read them both roughly before starting.&lt;/p&gt;

&lt;p&gt;I got friendly advice from people around me to let the lamps use the channels 10, 20, 30 and 40, and set them all to 4 channel setup (this should avoid some issues, altought I am blissfully unaware of any details.) and then it was a trick to set the LED setup in the WLED to the correct number of lamps, this is to ensure that animations know how many points of lights it has available to play with.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;https://www.sweetwater.com/sweetcare/articles/understanding-dmx/#What%20Is%20DMX &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;https://www.wemos.cc/en/latest/d1/d1_mini.html &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;</content><author><name>atluxity</name></author><category term="hardware" /><summary type="html">Hackeriet at one point aquired a few Fun Generation LED pots, and one of the strong selling arguments for us was the knowledge that they supported DMX. “DMX (Digital Multiplex) is a protocol used to control devices such as lights or fog machines. The signal is unidirectional, meaning it only travels in one direction; from the controller or first light, all the way to the last. In its most basic form, DMX is just a protocol for lights, like how MIDI is for keyboards or DAW controllers.” 1 This is not a blogpost about DMX, in this blogpost we will focus on the hardware we put together to be able to control these lights via a web application called WLED. Bill of Materials Junction box Sacrificial XLR cable 5v power supply D1 mini (ESP-8266EX board) 2 MAX485 module A few header pins and wire of choice Junction box My thinking is that this box will probably live many hours on a floor and be in risk of poor threatment for much of its life, so I wanted something a bit rugged. Visiting my closest electronics dealer I just found one who felt right for me. It is 80x80x38mm and closed with a single central screw. It has modular soft walls ment for poking cables through. Sacrificial XLR cable I chose to have a bit of a tail out of the box with an XLR-cable rather than a plug into the box. It saves me some space in the box and feels like the more durable and practical solution. This ment I had to cut a cable in two and just make sure to use the correct one (look behind the LED pots, you want the one that goes into the INPUT one) 5v power supply This is what the big old drawer with legacy cables and wall sockets is good for. I found one that used to be for some HP palm-like device I had once, it even came with a plug. That part is optional. I like the idea that if someone stumbles in that cable it will just disconnect the plug and not yank the whole thing apart. D1 mini This is the brain of the operation. ESP-8266 is an amazing ecosphere of geek-enabling technology. It is a lower powered 32-bit RISC CPU running at 160 Mhz and has a built-in WIFI module. Compared to an Arduino with its 8-bit microcontroller, 16Mhz clock speed. The D1 mini supports Micropython, Adruino and nodemcu. We are going to flash this device with a software project called WLED, which also supports DMX although it is made primarily for LED-strips and such. MAX485 This is a requirement from the software we are going to load onto the D1 mini. DMX is a serial format, and such is also RS-485. I dont really know how this part works, I just see that its a requirement. I have been unable to find the site of an actuall manufactorer, but there seem to be tens of tens of similar off brands modules that does the same. Schematics Software I wont copy this part into here, it is better if I just reference the relevant pages. https://kno.wled.ge/advanced/compiling-wled/ https://kno.wled.ge/interfaces/dmx-output/ Read them both roughly before starting. I got friendly advice from people around me to let the lamps use the channels 10, 20, 30 and 40, and set them all to 4 channel setup (this should avoid some issues, altought I am blissfully unaware of any details.) and then it was a trick to set the LED setup in the WLED to the correct number of lamps, this is to ensure that animations know how many points of lights it has available to play with. References https://www.sweetwater.com/sweetcare/articles/understanding-dmx/#What%20Is%20DMX &amp;#8617; https://www.wemos.cc/en/latest/d1/d1_mini.html &amp;#8617;</summary></entry><entry><title type="html">Supply Chain Issues in PyPI</title><link href="https://blog.hackeriet.no/supply-chain-issues-in-pypi/" rel="alternate" type="text/html" title="Supply Chain Issues in PyPI" /><published>2023-09-21T00:00:00+02:00</published><updated>2023-09-21T00:00:00+02:00</updated><id>https://blog.hackeriet.no/supply-chain-issues-in-pypi</id><content type="html" xml:base="https://blog.hackeriet.no/supply-chain-issues-in-pypi/">&lt;p&gt;&lt;i&gt;
  This is a &lt;a href=&quot;https://stiankri.substack.com/p/supply-chain-issues-in-pypi&quot;&gt;cross post from stiankri.substack.com&lt;/a&gt;
&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Earlier this year I did some security research into the Python Package Index (PyPI) as well as how it’s used by the package managers Pip and Poetry.&lt;/p&gt;

&lt;p&gt;The research is summarized in the following blog posts:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://stiankri.substack.com/p/pypi-upload-denial-of-service&quot;&gt;PyPI Upload Denial of Service&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://stiankri.substack.com/p/reproducibility-in-pypi&quot;&gt;Reproducibility in PyPI&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://stiankri.substack.com/p/distribution-confusion-in-pypi&quot;&gt;Distribution Confusion in PyPI&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://stiankri.substack.com/p/manifest-confusion-in-pypi&quot;&gt;Manifest Confusion in PyPI&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The research was also presented at &lt;a href=&quot;https://bsidesoslo.no/talks/UnexpectedWaystoDistributePythonPackages.html&quot;&gt;BSides Oslo in the talk “Unexpected Ways to Distribute Python Packages”.&lt;/a&gt;&lt;/p&gt;</content><author><name>wayphinder</name></author><category term="security" /><summary type="html">This is a cross post from stiankri.substack.com Earlier this year I did some security research into the Python Package Index (PyPI) as well as how it’s used by the package managers Pip and Poetry. The research is summarized in the following blog posts: PyPI Upload Denial of Service Reproducibility in PyPI Distribution Confusion in PyPI Manifest Confusion in PyPI The research was also presented at BSides Oslo in the talk “Unexpected Ways to Distribute Python Packages”.</summary></entry><entry><title type="html">Perl HTTP::Tiny has insecure TLS default, affecting CPAN.pm and other modules</title><link href="https://blog.hackeriet.no/perl-http-tiny-insecure-tls-default-affects-cpan-modules/" rel="alternate" type="text/html" title="Perl HTTP::Tiny has insecure TLS default, affecting CPAN.pm and other modules" /><published>2023-04-15T00:00:00+02:00</published><updated>2023-04-15T00:00:00+02:00</updated><id>https://blog.hackeriet.no/perl-http-tiny-insecure-tls-default-affects-cpan-modules</id><content type="html" xml:base="https://blog.hackeriet.no/perl-http-tiny-insecure-tls-default-affects-cpan-modules/">&lt;p&gt;&lt;strong&gt;UPDATE 2023-06-12:&lt;/strong&gt; &lt;a href=&quot;https://metacpan.org/release/DAGOLDEN/HTTP-Tiny-0.083-TRIAL/&quot;&gt;v0.083-TRIAL&lt;/a&gt; has been released with a fix.&lt;/p&gt;

&lt;p&gt;[CVE-2023-31486] &lt;a href=&quot;https://metacpan.org/pod/HTTP::Tiny&quot;&gt;HTTP::Tiny&lt;/a&gt; v0.082, is a http client included in
Perl (since v5.13.9) and also a standalone CPAN module. It &lt;a href=&quot;https://metacpan.org/pod/HTTP::Tiny#SSL-SUPPORT&quot;&gt;does not verify TLS
certificates by default&lt;/a&gt; requiring users to opt-in with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;verify_SSL=&amp;gt;1&lt;/code&gt; flag to verify the identity of the HTTPS server they are communicating with.&lt;/p&gt;

&lt;p&gt;The module is used by
&lt;a href=&quot;https://hackeriet.github.io/cpan-http-tiny-overview/&quot;&gt;many&lt;/a&gt; distributions on
CPAN, and likely other open source and proprietary software.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This post summarizes security problems caused by the insecure default
and how it affects code relying on it for https. For a
discussion on how this is being addressed upstream, please see
&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/issues/152&quot;&gt;RFC: Making SSL_verify safer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;affected-cpan-modules&quot;&gt;Affected CPAN Modules&lt;/h2&gt;

&lt;p&gt;After 
&lt;a href=&quot;https://www.reddit.com/r/perl/comments/111tadi/psa_httptiny_disabled_ssl_verification_by_default/&quot;&gt;PSA: HTTP::Tiny disabled SSL verification by
default!&lt;/a&gt; was posted on Reddit, we were reminded that this might be a bigger problem than first thought.&lt;/p&gt;

&lt;p&gt;So we searched trough
&lt;a href=&quot;https://github.com/metacpan/metacpan-cpan-extracted&quot;&gt;metacpan-cpan-extracted&lt;/a&gt;
to find distributions using HTTP::Tiny without specifying the cert verification
behaviour. Distros using it without mentioning &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;verify_SSL&lt;/code&gt; somewhere in the code was flagged. See &lt;a href=&quot;https://hackeriet.github.io/cpan-http-tiny-overview/&quot;&gt;hackeriet.github.io/cpan-http-tiny-overview&lt;/a&gt; for the full list.&lt;/p&gt;

&lt;p&gt;Most distributions we found did not enable the certificate verification feature, potentially exposing users to &lt;a href=&quot;https://www.internetsociety.org/resources/doc/2020/fact-sheet-machine-in-the-middle-attacks/Machine-in-the-middle&quot;&gt;machine-in-the-middle&lt;/a&gt; attacks via a &lt;a href=&quot;https://cwe.mitre.org/data/definitions/295.html&quot;&gt;CWE-295: Improper Certificate Validation&lt;/a&gt; weakness.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;[CVE-2023-31484] &lt;a href=&quot;https://metacpan.org/pod/CPAN&quot;&gt;CPAN.pm&lt;/a&gt; v2.34 downloads and executes code from
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://cpan.org&lt;/code&gt; without verifying server certs. Fixed in &lt;a href=&quot;https://metacpan.org/release/ANDK/CPAN-2.35-TRIAL&quot;&gt;v2.35-TRIAL&lt;/a&gt;.
(&lt;a href=&quot;https://github.com/andk/cpanpm/commit/9c98370287f4e709924aee7c58ef21c85289a7f0&quot;&gt;patch&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;[CVE-2023-31485] &lt;a href=&quot;https://metacpan.org/dist/GitLab-API-v4&quot;&gt;GitLab::API::v4&lt;/a&gt; v0.26 exposes API
secrets to a network attacker. Fixed in &lt;a href=&quot;https://metacpan.org/release/BLUEFEET/GitLab-API-v4-0.27&quot;&gt;v0.27&lt;/a&gt;
(&lt;a href=&quot;https://github.com/bluefeet/GitLab-API-v4/pull/57&quot;&gt;patch&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://metacpan.org/dist/Finance-Robinhood&quot;&gt;Finance::Robinhood&lt;/a&gt; v0.21 is
maybe exposing API secrets and financial information to a network
attacker. (&lt;a href=&quot;https://github.com/sanko/Finance-Robinhood/pull/6&quot;&gt;patch&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://metacpan.org/pod/Paws&quot;&gt;Paws (aws-sdk-perl)&lt;/a&gt; v0.44 is
maybe exposing API secrets to a network attacker. (&lt;a href=&quot;https://github.com/pplu/aws-sdk-perl/pull/426&quot;&gt;patch&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://metacpan.org/pod/CloudHealth::API&quot;&gt;CloudHealth::API&lt;/a&gt; v0.01 is maybe
exposing API secrets to a network attacker.
(&lt;a href=&quot;https://github.com/pplu/cloudhealth-api-perl/pull/2&quot;&gt;patch&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;… and more. We have done a search of CPAN and generated a list of &lt;a href=&quot;https://hackeriet.github.io/cpan-http-tiny-overview/&quot;&gt;381 potentially problematic distributions&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;mitigations&quot;&gt;Mitigations&lt;/h2&gt;

&lt;p&gt;&lt;del&gt;Upstream for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; has not provided a patch or mitigation. Suggestions to change the insecure default has been turned down several times over the years due to backwards compatibility concerns&lt;/del&gt;.&lt;/p&gt;

&lt;p&gt;Upstream for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; has &lt;a href=&quot;https://github.com/chansen/p5-http-tiny/pull/153&quot;&gt;merged a patch&lt;/a&gt; that changes the insecure default from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt;. It is available in the development version &lt;a href=&quot;https://metacpan.org/release/DAGOLDEN/HTTP-Tiny-0.083-TRIAL/&quot;&gt;HTTP::Tiny v0.083-TRIAL&lt;/a&gt; on CPAN, and the change is &lt;a href=&quot;https://blogs.perl.org/users/psc/2023/06/this-week-in-psc-109.html&quot;&gt;planned to be included in perl-5.38.0&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;An escape hatch environment variable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1&lt;/code&gt; has been provided for users who need to restore the previous insecure default after updating.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For additional information, please see the upstream discussion in &lt;a href=&quot;https://github.com/chansen/p5-http-tiny/issues/152&quot;&gt;RFC: Making SSL_verify safer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To mitigate the risk caused by the &lt;a href=&quot;https://cwe.mitre.org/data/definitions/1188.html&quot;&gt;CWE-1188: Insecure Default Initialization of Resource&lt;/a&gt; weakness, you have some options:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Ensure that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; in your include path is &lt;a href=&quot;https://metacpan.org/release/DAGOLDEN/HTTP-Tiny-0.083-TRIAL/&quot;&gt;v0.083-TRIAL&lt;/a&gt; or newer.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Modify affected code using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; and set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;verify_SSL=&amp;gt;1&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Modify affected code to use a http client with secure defaults, like
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mojo::UserAgent&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LWP::UserAgent&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Patch &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; on your system with &lt;a href=&quot;https://github.com/chansen/p5-http-tiny/commit/77f557ef84698efeb6eed04e4a9704eaf85b741d.patch&quot;&gt;a patch&lt;/a&gt; that changes the default to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;verify_SSL=&amp;gt;1&lt;/code&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s recommended that users update &lt;a href=&quot;https://metacpan.org/pod/Mozilla::CA&quot;&gt;Mozilla::CA&lt;/a&gt; as well, since &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP::Tiny&lt;/code&gt; defaults to trusting certificates provided by that module. Alternatively the environment variable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SSL_CERT_FILE&lt;/code&gt; can be set to point to the system trust store.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/pull/153&quot;&gt;chansen/p5-http-tiny: Change verify_SSL default to 1, add ENV var to enable insecure default [CVE-2023-31486] #153&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/issues/152&quot;&gt;chansen/p5-http-tiny: RFC: Making SSL_verify  safer #152&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/pull/151&quot;&gt;chansen/p5-http-tiny: SSL environment controls, and warn about insecure connections #151&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://hackeriet.github.io/cpan-http-tiny-overview/&quot;&gt;hackeriet: cpan-http-tiny-overview&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.reddit.com/r/perl/comments/111tadi/psa_httptiny_disabled_ssl_verification_by_default/&quot;&gt;reddit: PSA: HTTP::Tiny disabled SSL verification by default!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/NixOS/nixpkgs/pull/187480&quot;&gt;NixOS/nixpkgs: perl: verify_SSL=&amp;gt;1 by default in HTTP::Tiny #187480&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962407&quot;&gt;Debian Bug #962407: libhttp-tiny-perl: Default to verifying SSL certificates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954089&quot;&gt;Debian Bug #954089: perl: Default HTTP::Tiny to verifying SSL certificates&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://salsa.debian.org/perl-team/interpreter/perl/-/commit/1490431e40e22052f75a0b3449f1f53cbd27ba92.patch&quot;&gt;Debian Proposed Patch: [PATCH] Enable SSL by default in HTTP::Tiny&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/issues/134&quot;&gt;chansen/p5-http-tiny: verify_SSL being true by default (redux) #134&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chansen/p5-http-tiny/issues/68&quot;&gt;chansen/p5-http-tiny: Shouldn’t verify_SSL be true by default? #68&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;changes&quot;&gt;Changes&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;2023-04-18: Add reference to fixed CPAN.pm v2.35-TRIAL&lt;/li&gt;
  &lt;li&gt;2023-04-29: Add CVE identifiers CVE-2023-31484, CVE-2023-31485, CVE-2023-31486&lt;/li&gt;
  &lt;li&gt;2023-06-12: Add references to fix applied to HTTP::Tiny, GitLab::API::v4, and suggestion to update Mozilla::CA&lt;/li&gt;
&lt;/ul&gt;</content><author><name>sgo</name></author><category term="security" /><summary type="html">UPDATE 2023-06-12: v0.083-TRIAL has been released with a fix. [CVE-2023-31486] HTTP::Tiny v0.082, is a http client included in Perl (since v5.13.9) and also a standalone CPAN module. It does not verify TLS certificates by default requiring users to opt-in with the verify_SSL=&amp;gt;1 flag to verify the identity of the HTTPS server they are communicating with. The module is used by many distributions on CPAN, and likely other open source and proprietary software. NOTE: This post summarizes security problems caused by the insecure default and how it affects code relying on it for https. For a discussion on how this is being addressed upstream, please see RFC: Making SSL_verify safer Affected CPAN Modules After PSA: HTTP::Tiny disabled SSL verification by default! was posted on Reddit, we were reminded that this might be a bigger problem than first thought. So we searched trough metacpan-cpan-extracted to find distributions using HTTP::Tiny without specifying the cert verification behaviour. Distros using it without mentioning verify_SSL somewhere in the code was flagged. See hackeriet.github.io/cpan-http-tiny-overview for the full list. Most distributions we found did not enable the certificate verification feature, potentially exposing users to machine-in-the-middle attacks via a CWE-295: Improper Certificate Validation weakness. [CVE-2023-31484] CPAN.pm v2.34 downloads and executes code from https://cpan.org without verifying server certs. Fixed in v2.35-TRIAL. (patch) [CVE-2023-31485] GitLab::API::v4 v0.26 exposes API secrets to a network attacker. Fixed in v0.27 (patch) Finance::Robinhood v0.21 is maybe exposing API secrets and financial information to a network attacker. (patch) Paws (aws-sdk-perl) v0.44 is maybe exposing API secrets to a network attacker. (patch) CloudHealth::API v0.01 is maybe exposing API secrets to a network attacker. (patch) … and more. We have done a search of CPAN and generated a list of 381 potentially problematic distributions. Mitigations Upstream for HTTP::Tiny has not provided a patch or mitigation. Suggestions to change the insecure default has been turned down several times over the years due to backwards compatibility concerns. Upstream for HTTP::Tiny has merged a patch that changes the insecure default from 0 to 1. It is available in the development version HTTP::Tiny v0.083-TRIAL on CPAN, and the change is planned to be included in perl-5.38.0. An escape hatch environment variable PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1 has been provided for users who need to restore the previous insecure default after updating. For additional information, please see the upstream discussion in RFC: Making SSL_verify safer. To mitigate the risk caused by the CWE-1188: Insecure Default Initialization of Resource weakness, you have some options: Ensure that HTTP::Tiny in your include path is v0.083-TRIAL or newer. Modify affected code using HTTP::Tiny and set verify_SSL=&amp;gt;1. Modify affected code to use a http client with secure defaults, like Mojo::UserAgent or LWP::UserAgent. Patch HTTP::Tiny on your system with a patch that changes the default to verify_SSL=&amp;gt;1. It’s recommended that users update Mozilla::CA as well, since HTTP::Tiny defaults to trusting certificates provided by that module. Alternatively the environment variable SSL_CERT_FILE can be set to point to the system trust store. Links chansen/p5-http-tiny: Change verify_SSL default to 1, add ENV var to enable insecure default [CVE-2023-31486] #153 chansen/p5-http-tiny: RFC: Making SSL_verify safer #152 chansen/p5-http-tiny: SSL environment controls, and warn about insecure connections #151 hackeriet: cpan-http-tiny-overview reddit: PSA: HTTP::Tiny disabled SSL verification by default! NixOS/nixpkgs: perl: verify_SSL=&amp;gt;1 by default in HTTP::Tiny #187480 Debian Bug #962407: libhttp-tiny-perl: Default to verifying SSL certificates Debian Bug #954089: perl: Default HTTP::Tiny to verifying SSL certificates Debian Proposed Patch: [PATCH] Enable SSL by default in HTTP::Tiny chansen/p5-http-tiny: verify_SSL being true by default (redux) #134 chansen/p5-http-tiny: Shouldn’t verify_SSL be true by default? #68 Changes 2023-04-18: Add reference to fixed CPAN.pm v2.35-TRIAL 2023-04-29: Add CVE identifiers CVE-2023-31484, CVE-2023-31485, CVE-2023-31486 2023-06-12: Add references to fix applied to HTTP::Tiny, GitLab::API::v4, and suggestion to update Mozilla::CA</summary></entry><entry><title type="html">Post mortem for oslohack:22</title><link href="https://blog.hackeriet.no/Post-Mortem-Oslohack-22/" rel="alternate" type="text/html" title="Post mortem for oslohack:22" /><published>2023-02-18T00:00:00+01:00</published><updated>2023-02-18T00:00:00+01:00</updated><id>https://blog.hackeriet.no/Post-Mortem-Oslohack-22</id><content type="html" xml:base="https://blog.hackeriet.no/Post-Mortem-Oslohack-22/">&lt;p&gt;&lt;img src=&quot;/images/oslohack22.jpg&quot; alt=&quot;oslohack22&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hackeriet arranged a small conference during 28-30 dec 2022.
With lots of talks, streaming service for those of us who
couldn’t attend in person and lots of good conversations
between the attendants.&lt;/p&gt;

&lt;p&gt;The recording of most of the talks have been available on
youtube since the conference and will soon be reposted
as individual talks.&lt;/p&gt;

&lt;h2 id=&quot;list-of-talks-and-workshops-performed&quot;&gt;List of talks and workshops performed&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;ctx - Native vector graphics for microcontrollers and terminals - Øyvind Kolås&lt;/li&gt;
  &lt;li&gt;Secure messaging deep dive - Stian Kristoffersen&lt;/li&gt;
  &lt;li&gt;Debugging packages on Linux - Morten Linderud&lt;/li&gt;
  &lt;li&gt;Digital Skeleton Keys - micsen&lt;/li&gt;
  &lt;li&gt;Street Epistemology - A technique for difficult conversations - Jared Elgvin &amp;amp; Salve J. Nilsen&lt;/li&gt;
  &lt;li&gt;FreeIPA - Identity and access management system for Linux - xorgic&lt;/li&gt;
  &lt;li&gt;Algorithmic Predictions and Big Decisions - Failures of Machine Learning - Daniel Kinn&lt;/li&gt;
  &lt;li&gt;The road to NRK’s private Terraform registry - Stig Otnes Kolstad&lt;/li&gt;
  &lt;li&gt;Valuable but vulnerable - GNSS timing interference detection and countermeasures - Harald Hauglin, Justervesenet&lt;/li&gt;
  &lt;li&gt;Quantum Threat Inflation - riding the Cyber Wave - Natalie Kilber&lt;/li&gt;
  &lt;li&gt;Vim movements - xorgic&lt;/li&gt;
  &lt;li&gt;Skal EU få se dine private bilder? - Tom Fredrik Blenning&lt;/li&gt;
  &lt;li&gt;CPU-cachen og deg: hvordan skrive cache-effektiv kode - Rune Holm&lt;/li&gt;
  &lt;li&gt;Nanopore DNA sequencing for dummies and smarties - Karl Trygve Kalleberg&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The conference couldn’t have happened without our sponsors, The NUUG Foundation, Kovert and our volunteers
that donated their time to arrange it.&lt;/p&gt;

&lt;h2 id=&quot;economic-transparency&quot;&gt;Economic transparency&lt;/h2&gt;

&lt;p&gt;Generally there isn’t a lot of talk on the internet around what it costs to arrange conferences.&lt;/p&gt;

&lt;p&gt;The lack of transparency is something that we think prevents new persons from attempting
to arrange these sorts of thing, as they might believe there to be a unreasonable risk
connected to arranging.&lt;/p&gt;

&lt;p&gt;As a step of combating that, here is a full transparency around what it costed us to
arrange oslohack:22&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Item&lt;/th&gt;
      &lt;th&gt;Income&lt;/th&gt;
      &lt;th&gt;Cost&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Brus &amp;amp; snacks&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;2275&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Led-lys&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;375&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Pride banner&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;56&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;50m nettverkskabel&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;500&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Engangsvåtmopp&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;60&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;LED-lys&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;2838&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Leie flerbrukshallen&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;7000&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Leie av streamingutstyr, KANDU&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;3125&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Støtte Kovert&lt;/td&gt;
      &lt;td&gt;2275&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Støtte NUUG Foundation&lt;/td&gt;
      &lt;td&gt;13954&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Totalt&lt;/td&gt;
      &lt;td&gt;16229&lt;/td&gt;
      &lt;td&gt;16229&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</content><author><name>capitol</name></author><category term="talks" /><summary type="html">Hackeriet arranged a small conference during 28-30 dec 2022. With lots of talks, streaming service for those of us who couldn’t attend in person and lots of good conversations between the attendants. The recording of most of the talks have been available on youtube since the conference and will soon be reposted as individual talks. List of talks and workshops performed ctx - Native vector graphics for microcontrollers and terminals - Øyvind Kolås Secure messaging deep dive - Stian Kristoffersen Debugging packages on Linux - Morten Linderud Digital Skeleton Keys - micsen Street Epistemology - A technique for difficult conversations - Jared Elgvin &amp;amp; Salve J. Nilsen FreeIPA - Identity and access management system for Linux - xorgic Algorithmic Predictions and Big Decisions - Failures of Machine Learning - Daniel Kinn The road to NRK’s private Terraform registry - Stig Otnes Kolstad Valuable but vulnerable - GNSS timing interference detection and countermeasures - Harald Hauglin, Justervesenet Quantum Threat Inflation - riding the Cyber Wave - Natalie Kilber Vim movements - xorgic Skal EU få se dine private bilder? - Tom Fredrik Blenning CPU-cachen og deg: hvordan skrive cache-effektiv kode - Rune Holm Nanopore DNA sequencing for dummies and smarties - Karl Trygve Kalleberg The conference couldn’t have happened without our sponsors, The NUUG Foundation, Kovert and our volunteers that donated their time to arrange it. Economic transparency Generally there isn’t a lot of talk on the internet around what it costs to arrange conferences. The lack of transparency is something that we think prevents new persons from attempting to arrange these sorts of thing, as they might believe there to be a unreasonable risk connected to arranging. As a step of combating that, here is a full transparency around what it costed us to arrange oslohack:22 Item Income Cost Brus &amp;amp; snacks   2275 Led-lys   375 Pride banner   56 50m nettverkskabel   500 Engangsvåtmopp   60 LED-lys   2838 Leie flerbrukshallen   7000 Leie av streamingutstyr, KANDU   3125 Støtte Kovert 2275   Støtte NUUG Foundation 13954   Totalt 16229 16229</summary></entry><entry><title type="html">Release of Ripasso version 0.6.0</title><link href="https://blog.hackeriet.no/Ripasso-release-0-6-0/" rel="alternate" type="text/html" title="Release of Ripasso version 0.6.0" /><published>2022-11-20T00:00:00+01:00</published><updated>2022-11-20T00:00:00+01:00</updated><id>https://blog.hackeriet.no/Ripasso-release-0-6-0</id><content type="html" xml:base="https://blog.hackeriet.no/Ripasso-release-0-6-0/">&lt;p&gt;&lt;img src=&quot;/images/ripasso-cursive-0.4.0.png&quot; alt=&quot;ripasso-cursive&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Time passes as water under a bridge, it is yet again time to release a version of ripasso.
We present version 0.6.0.&lt;/p&gt;

&lt;h2 id=&quot;new-features&quot;&gt;New Features&lt;/h2&gt;

&lt;h4 id=&quot;choosable-openpgp-backend&quot;&gt;Choosable OpenPGP backend&lt;/h4&gt;

&lt;p&gt;We have implemented support for configuration files. You can now switch between different password
directories from the menu.&lt;/p&gt;

&lt;h4 id=&quot;experimental-new-openpgp-backend-based-on-sequoia&quot;&gt;Experimental new OpenPGP backend based on Sequoia&lt;/h4&gt;

&lt;p&gt;The Sequoia project is a implementation of OpenPGP written in Rust. Since the GPG project
have suffered from multiple security problems due to memory corruption lately it’s time
to start exploring alternative implementations.&lt;/p&gt;

&lt;p&gt;The Sequoia backend can be enabled per store by adding &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pgp_implementation = 'sequoia'&lt;/code&gt; in
your config file.&lt;/p&gt;

&lt;p&gt;The sequoia implementation doesn’t support reading the gpg keyring on the system, so if that
one in chosen all public pgp keys must be imported imported into ripasso. But it can talk
to the gpg-agent, so it doesn’t require that the private key is imported into sequoia.&lt;/p&gt;

&lt;h4 id=&quot;support-for-totp-codes&quot;&gt;Support for TOTP codes&lt;/h4&gt;

&lt;p&gt;Ripasso now supports otpauth urls, if there is a url on the format &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;otpauth://&lt;/code&gt; then a MFA token
can be copied with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ctrl-b&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;support-the-wayland-copy-buffer&quot;&gt;Support the Wayland copy buffer&lt;/h4&gt;

&lt;p&gt;If running ripasso in a Wayland environment, we now support the Wayland copy buffer.&lt;/p&gt;

&lt;h4 id=&quot;comments-in-gpg-id-file&quot;&gt;Comments in .gpg-id file&lt;/h4&gt;

&lt;p&gt;The Pass project have added support for comments in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.gpg-id&lt;/code&gt; file, comments start
with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#&lt;/code&gt; character.&lt;/p&gt;

&lt;h4 id=&quot;download-openpgp-certs-from-keysopenpgporg&quot;&gt;Download OpenPGP certs from keys.openpgp.org&lt;/h4&gt;

&lt;p&gt;Added support for downloading pgp keys from keys.openpgp.org.&lt;/p&gt;

&lt;h2 id=&quot;bugs-fixed&quot;&gt;Bugs Fixed&lt;/h2&gt;

&lt;h4 id=&quot;compression-in-gpg&quot;&gt;Compression in gpg&lt;/h4&gt;

&lt;p&gt;Disabled compression when encrypting secrets with gpg. Compressing before encrypting can sometimes
lead to a compression oracle vulnerability. These kind of vulnerabilities typically require that
an attacker can automate the creation of secrets in some way, so we don’t think it’s applicable here.&lt;/p&gt;

&lt;h4 id=&quot;copy-behaviour-between--and-&quot;&gt;Copy behaviour between &lt;enter&gt; and &lt;ctrl-y&gt;&lt;/ctrl-y&gt;&lt;/enter&gt;&lt;/h4&gt;

&lt;p&gt;Enter now copies the first line of the secret, and ctrl-y copies the whole secret.&lt;/p&gt;

&lt;h2 id=&quot;credits&quot;&gt;Credits&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Joakim Lundborg - Developer&lt;/li&gt;
  &lt;li&gt;Alexander Kjäll - Developer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also a big thanks to everyone who contributed with bug reports and patches.&lt;/p&gt;</content><author><name>capitol</name></author><category term="infrastructure" /><summary type="html">Time passes as water under a bridge, it is yet again time to release a version of ripasso. We present version 0.6.0. New Features Choosable OpenPGP backend We have implemented support for configuration files. You can now switch between different password directories from the menu. Experimental new OpenPGP backend based on Sequoia The Sequoia project is a implementation of OpenPGP written in Rust. Since the GPG project have suffered from multiple security problems due to memory corruption lately it’s time to start exploring alternative implementations. The Sequoia backend can be enabled per store by adding pgp_implementation = 'sequoia' in your config file. The sequoia implementation doesn’t support reading the gpg keyring on the system, so if that one in chosen all public pgp keys must be imported imported into ripasso. But it can talk to the gpg-agent, so it doesn’t require that the private key is imported into sequoia. Support for TOTP codes Ripasso now supports otpauth urls, if there is a url on the format otpauth:// then a MFA token can be copied with ctrl-b. Support the Wayland copy buffer If running ripasso in a Wayland environment, we now support the Wayland copy buffer. Comments in .gpg-id file The Pass project have added support for comments in the .gpg-id file, comments start with a # character. Download OpenPGP certs from keys.openpgp.org Added support for downloading pgp keys from keys.openpgp.org. Bugs Fixed Compression in gpg Disabled compression when encrypting secrets with gpg. Compressing before encrypting can sometimes lead to a compression oracle vulnerability. These kind of vulnerabilities typically require that an attacker can automate the creation of secrets in some way, so we don’t think it’s applicable here. Copy behaviour between and Enter now copies the first line of the secret, and ctrl-y copies the whole secret. Credits Joakim Lundborg - Developer Alexander Kjäll - Developer Also a big thanks to everyone who contributed with bug reports and patches.</summary></entry><entry><title type="html">Packaging Rust for Debian - Side Effects</title><link href="https://blog.hackeriet.no/packaging-rust-for-debian-side-effects/" rel="alternate" type="text/html" title="Packaging Rust for Debian - Side Effects" /><published>2022-09-25T00:00:00+02:00</published><updated>2022-09-25T00:00:00+02:00</updated><id>https://blog.hackeriet.no/packaging-rust-for-debian-side-effects</id><content type="html" xml:base="https://blog.hackeriet.no/packaging-rust-for-debian-side-effects/">&lt;p&gt;&lt;img src=&quot;/images/fuzzy-growth-on-rusted-metal-disk-top.jpg&quot; alt=&quot;rusted-metal-disk-top&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When packaging a rust crate for Debian, bug fixing is a part of the
process. There is of course multiple sources of bugs, but a common
one is that the crate doesn’t build on all architectures.&lt;/p&gt;

&lt;p&gt;The builds in Debian happens on a lot of different architectures, and
normally you only have an x86_64 machine to test on before pushing a new
version of a package.&lt;/p&gt;

&lt;p&gt;The full list of different architectures is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;amd64&lt;/li&gt;
  &lt;li&gt;arm64&lt;/li&gt;
  &lt;li&gt;armel&lt;/li&gt;
  &lt;li&gt;armhf&lt;/li&gt;
  &lt;li&gt;i386&lt;/li&gt;
  &lt;li&gt;mips64el&lt;/li&gt;
  &lt;li&gt;mipsel&lt;/li&gt;
  &lt;li&gt;ppc64el&lt;/li&gt;
  &lt;li&gt;s390x&lt;/li&gt;
  &lt;li&gt;alpha&lt;/li&gt;
  &lt;li&gt;arc&lt;/li&gt;
  &lt;li&gt;hppa&lt;/li&gt;
  &lt;li&gt;hurd-i386&lt;/li&gt;
  &lt;li&gt;ia64&lt;/li&gt;
  &lt;li&gt;kfreebsd-amd64&lt;/li&gt;
  &lt;li&gt;kfreebsd-i386&lt;/li&gt;
  &lt;li&gt;m68k&lt;/li&gt;
  &lt;li&gt;powerpc&lt;/li&gt;
  &lt;li&gt;ppc64&lt;/li&gt;
  &lt;li&gt;riscv64&lt;/li&gt;
  &lt;li&gt;sh4&lt;/li&gt;
  &lt;li&gt;sparc64&lt;/li&gt;
  &lt;li&gt;x32&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it’s not mandatory that the build succeeds on all of them, only the top 9
have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Supported&lt;/code&gt; status and the rest are more of a nice-to-have.&lt;/p&gt;

&lt;p&gt;As an example I got this failure on riscv64 recently:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;failures:

---- src/xy.rs - xy::XY&amp;lt;bool&amp;gt;::both (line 502) stdout ----
malloc_consolidate(): unaligned fastbin chunk detected
Couldn't compile the test.

failures:
    src/xy.rs - xy::XY&amp;lt;bool&amp;gt;::both (line 502)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What happens then is that I will investigate the error, try to produce
a patch for it, and send that as a pull request to the upstream sources.&lt;/p&gt;

&lt;p&gt;If all is well and good the patch is accepted and included in the next
release of that package. But releases are often infrequent and to stop
the packaging effort of everything that depends on the package is too
time consuming.&lt;/p&gt;

&lt;p&gt;Therefore we add the fix as a patch to the Debian package directly. This
keeps the original part of the debian version number and bumps the
debian part, version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.3.4-1&lt;/code&gt; becomes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0.3.4-2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Normally this is an uncomplicated process, a new file is dropped into
the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;patches&lt;/code&gt; directory, it’s added to the end of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;series&lt;/code&gt; file
in that directory, and then it’s shipped off to the build farm.&lt;/p&gt;

&lt;p&gt;But there is a not very well documented gotcha in this process,
when the debian rust tooling produces an updated package it reuses the
original &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.orig.tar.gz&lt;/code&gt; file from the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-1&lt;/code&gt; package. This means that
all changes that would alter the content of that file are ignored.&lt;/p&gt;

&lt;p&gt;For example if you add a line like this to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;debcargo.conf&lt;/code&gt; in an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-2&lt;/code&gt; update:&lt;/p&gt;
&lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;py&quot;&gt;excludes&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;examples/**&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;benches/**&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That will not have any effect, until a new upstream release is made and that
gets packaged.&lt;/p&gt;

&lt;p&gt;To summarize, be careful when adding new configuration that alters the original
source code package when you are fixing bugs.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/fuzzy-growth-on-rusted-metal-disk-bottom.jpg&quot; alt=&quot;rusted-metal-disk-bottom&quot; /&gt;&lt;/p&gt;</content><author><name>capitol</name></author><category term="infrastructure" /><summary type="html">When packaging a rust crate for Debian, bug fixing is a part of the process. There is of course multiple sources of bugs, but a common one is that the crate doesn’t build on all architectures. The builds in Debian happens on a lot of different architectures, and normally you only have an x86_64 machine to test on before pushing a new version of a package. The full list of different architectures is: amd64 arm64 armel armhf i386 mips64el mipsel ppc64el s390x alpha arc hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k powerpc ppc64 riscv64 sh4 sparc64 x32 But it’s not mandatory that the build succeeds on all of them, only the top 9 have Supported status and the rest are more of a nice-to-have. As an example I got this failure on riscv64 recently: failures: ---- src/xy.rs - xy::XY&amp;lt;bool&amp;gt;::both (line 502) stdout ---- malloc_consolidate(): unaligned fastbin chunk detected Couldn't compile the test. failures: src/xy.rs - xy::XY&amp;lt;bool&amp;gt;::both (line 502) What happens then is that I will investigate the error, try to produce a patch for it, and send that as a pull request to the upstream sources. If all is well and good the patch is accepted and included in the next release of that package. But releases are often infrequent and to stop the packaging effort of everything that depends on the package is too time consuming. Therefore we add the fix as a patch to the Debian package directly. This keeps the original part of the debian version number and bumps the debian part, version 0.3.4-1 becomes 0.3.4-2. Normally this is an uncomplicated process, a new file is dropped into the patches directory, it’s added to the end of the series file in that directory, and then it’s shipped off to the build farm. But there is a not very well documented gotcha in this process, when the debian rust tooling produces an updated package it reuses the original .orig.tar.gz file from the -1 package. This means that all changes that would alter the content of that file are ignored. For example if you add a line like this to debcargo.conf in an -2 update: excludes = [&quot;examples/**&quot;, &quot;benches/**&quot;] That will not have any effect, until a new upstream release is made and that gets packaged. To summarize, be careful when adding new configuration that alters the original source code package when you are fixing bugs.</summary></entry><entry><title type="html">Hackeriet has been appointed a ham club signal</title><link href="https://blog.hackeriet.no/kfh-la1hax-appointed/" rel="alternate" type="text/html" title="Hackeriet has been appointed a ham club signal" /><published>2021-11-24T00:00:00+01:00</published><updated>2021-11-24T00:00:00+01:00</updated><id>https://blog.hackeriet.no/kfh-la1hax-appointed</id><content type="html" xml:base="https://blog.hackeriet.no/kfh-la1hax-appointed/">&lt;p&gt;&lt;img src=&quot;/images/la1hax-callsign-letter.jpg&quot; alt=&quot;callsign-letter&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;cq-cq-de-la1hax&quot;&gt;CQ CQ DE LA1HAX!&lt;/h2&gt;

&lt;p&gt;Hackeriet (Oslo Hackerspace) has been appointed the ham club signal LA1HAX, effective from 2021-11-16.&lt;/p&gt;

&lt;h2 id=&quot;the-hobby&quot;&gt;The hobby&lt;/h2&gt;

&lt;p&gt;Amateur radio, or “ham radio”, is a hobby which focueses on connecting the world and a shared interest of technology and
electronics. The operators, often callled “hams”, are free to build and use radio equipment to transmit in different
ways as long as they operate within the parameters set by the licensing authority.&lt;/p&gt;

&lt;p&gt;Operating a ham radio station requires the operator to be licensed by an official entity. In Norway, this entity is NKOM
(“Nasjonal kommunikasjonsmyndighet” or “Norwegian Communications Authority”). Each licensed operator is given their own
personal callsign, which starts with “LA”, “LB” or “LC” for Norwegian operators. The callsign is personal, and the
prefix is specific to the country where the operator gains their license.&lt;/p&gt;

&lt;p&gt;The hobby itself is broad, and covers multiple technical fields and all continents.&lt;/p&gt;

&lt;p&gt;[…something more about what hams do and how they operate]&lt;/p&gt;

&lt;h2 id=&quot;the-callsign&quot;&gt;The callsign&lt;/h2&gt;

&lt;p&gt;The issue of applying for a club callsign was first raised on IRC in October of 2021, following renewed interest among
the members to increase radio activity (pun intended).&lt;/p&gt;

&lt;p&gt;[…more on the process and why we applied for LA1HAX]&lt;/p&gt;

&lt;h2 id=&quot;activities&quot;&gt;Activities&lt;/h2&gt;

&lt;p&gt;[…short summary of ideas for what we want to do at the hackerpsace]&lt;/p&gt;

&lt;p&gt;73 DE LA1HAX&lt;/p&gt;</content><author><name>kfh</name></author><category term="hamradio" /><summary type="html">CQ CQ DE LA1HAX! Hackeriet (Oslo Hackerspace) has been appointed the ham club signal LA1HAX, effective from 2021-11-16. The hobby Amateur radio, or “ham radio”, is a hobby which focueses on connecting the world and a shared interest of technology and electronics. The operators, often callled “hams”, are free to build and use radio equipment to transmit in different ways as long as they operate within the parameters set by the licensing authority. Operating a ham radio station requires the operator to be licensed by an official entity. In Norway, this entity is NKOM (“Nasjonal kommunikasjonsmyndighet” or “Norwegian Communications Authority”). Each licensed operator is given their own personal callsign, which starts with “LA”, “LB” or “LC” for Norwegian operators. The callsign is personal, and the prefix is specific to the country where the operator gains their license. The hobby itself is broad, and covers multiple technical fields and all continents. […something more about what hams do and how they operate] The callsign The issue of applying for a club callsign was first raised on IRC in October of 2021, following renewed interest among the members to increase radio activity (pun intended). […more on the process and why we applied for LA1HAX] Activities […short summary of ideas for what we want to do at the hackerpsace] 73 DE LA1HAX</summary></entry></feed>