<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: NewLine Break</title>
    <description>The latest articles on DEV Community by NewLine Break (@newlinebreak).</description>
    <link>https://dev.to/newlinebreak</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4162541%2F96cd3bd3-8d7e-4cf2-8a56-f0cd5243ade1.png</url>
      <title>DEV Community: NewLine Break</title>
      <link>https://dev.to/newlinebreak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/newlinebreak"/>
    <language>en</language>
    <item>
      <title>A software update should not be able to stop the fridge</title>
      <dc:creator>NewLine Break</dc:creator>
      <pubDate>Tue, 06 Oct 2026 18:00:21 +0000</pubDate>
      <link>https://dev.to/newlinebreak-studio/a-software-update-should-not-be-able-to-stop-the-fridge-47ph</link>
      <guid>https://dev.to/newlinebreak-studio/a-software-update-should-not-be-able-to-stop-the-fridge-47ph</guid>
      <description>&lt;p&gt;On 22 September 2026 a software update that was still being tested reached Samsung refrigerators in customers' homes in Korea. Owners reported that theirs went dark and stopped cooling. Any team that ships updates can ship a bad one. This note is about how far a bad one should be able to get.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened
&lt;/h2&gt;

&lt;p&gt;Samsung's &lt;a href="https://r1.community.samsung.com/t5/smartthings/%EB%83%89%EC%9E%A5%EA%B3%A0-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%98%A4%EB%A5%98-%EA%B4%80%EB%A0%A8-%EC%95%88%EB%82%B4-9-23/td-p/39603377" rel="noopener noreferrer"&gt;notice to its Korean customers&lt;/a&gt; on 23 September says that an error occurred the day before, during the testing of a refrigerator software update, and that some customers' refrigerators showed abnormal symptoms in their power and screen. The company told &lt;a href="https://arstechnica.com/gadgets/2026/09/owners-mourn-spoiled-food-after-firmware-update-bricks-samsung-smart-fridges/" rel="noopener noreferrer"&gt;Ars Technica&lt;/a&gt; that the issue was limited to Korea and that it suspended the testing as soon as reports came in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.chosun.com/english/industry-en/2026/09/23/XWP675T3DZDGJEBP35UUQAOIQQ/" rel="noopener noreferrer"&gt;The Chosun Daily&lt;/a&gt; names the line, Bespoke AI 4-Door, and what owners saw after updating through SmartThings: interior lights off, cooling lost, the refrigerator shown as offline. The paper reports that Samsung found the update "was incorrectly distributed to some customers during testing", halted the distribution, and will repair the units free of charge. Owners wrote that technicians replaced the main board, &lt;a href="https://www.androidauthority.com/samsung-accidentally-freezes-its-smart-fridges-with-a-software-update-3714472/" rel="noopener noreferrer"&gt;Android Authority&lt;/a&gt; reports.&lt;/p&gt;

&lt;p&gt;Samsung has not said three things: how many units, how an update in testing reached customers, and what failed inside. We do not know how these refrigerators are built, and this note does not guess. What the reports describe is an outcome in four steps. An update still in testing was installed in a kitchen. Owners say the appliance's main job stopped with it. The remedy in Samsung's notice was a call to the service centre and a technician's visit. And it reached enough homes that, according to Ars Technica, the broadcaster SBS reported hundreds of cases. Each step is something a design can guard against.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four things an update path should guard against
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. A build still in testing installs on a customer's unit
&lt;/h3&gt;

&lt;p&gt;Let the device decide, not the server. Sign test builds with one key and releases with another, and give the units that leave the factory only the release key. A test-signed build sent down the wrong channel then ends as a refused image. A release candidate carries the release key, so it still needs the stages below. Keep the test units as a named fleet of their own, so that "all units" never includes them by accident, or the other way round.&lt;/p&gt;

&lt;p&gt;Even the basic check, that an image is genuine, is not a given. A &lt;a href="https://www.moxa.com/en/support/product-support/security-advisory/mpsa-269540-cve-2026-86325,-cve-2026-86326-two-vulnerabilities-in-protocol-gateways" rel="noopener noreferrer"&gt;Moxa advisory of 2 October&lt;/a&gt; describes protocol gateways that do not properly verify the authenticity of a firmware image before installing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. An update stops the main job
&lt;/h3&gt;

&lt;p&gt;Whatever a device's one job is (cooling, heating, dosing, locking a door), give it a controller of its own that keeps its own settings, with firmware that changes rarely, and let the connected side ask it for things instead of running it. Then the part that takes an update every month can hang, restart or sit half written while the main job keeps its schedule. This is decided on the schematic before it is decided in code: which processor switches the load.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. A unit does not come back by itself
&lt;/h3&gt;

&lt;p&gt;Write the new image to a second slot and start it on trial. If it does not mark itself as good, the bootloader returns to the old image at the next reset. &lt;a href="https://docs.mcuboot.com/design.html" rel="noopener noreferrer"&gt;MCUboot&lt;/a&gt;, an open source bootloader for microcontrollers, calls this a test swap, and says it is there "to prevent devices from becoming 'bricked' by bad firmware". Three details decide whether it works. Good has to mean that the job is being done (the sensors read, the controller answers), not that the image started. An image that has not marked itself good within a set time has to reset. And a watchdog, running before the new image starts, has to force the reset when the image hangs instead of crashing.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. A bad build reaches everyone at once
&lt;/h3&gt;

&lt;p&gt;Release in stages: your own units, then a small share of the field, then the rest, with a wait between stages. Have every unit report in after an update, and let the rollout stop by itself when updated units go quiet. A rollout that watches its own units can stop before the first customer has to write.&lt;/p&gt;

&lt;h2&gt;
  
  
  What went right
&lt;/h2&gt;

&lt;p&gt;One part of Samsung's response is worth copying. According to &lt;a href="https://www.chosun.com/english/industry-en/2026/09/23/XWP675T3DZDGJEBP35UUQAOIQQ/" rel="noopener noreferrer"&gt;The Chosun Daily&lt;/a&gt;, it plans to find the affected customers from the update history. A record of which unit took which build, and when, turns "some customers' refrigerators" into a list of units. It is the first question in &lt;a href="https://newlinebreak.com/notes/cyber-resilience-act-24-hours/" rel="noopener noreferrer"&gt;our note on the Cyber Resilience Act&lt;/a&gt;, and the third question there, whether a fix can reach the units, is this note seen from the other side.&lt;/p&gt;

&lt;h2&gt;
  
  
  A drill for the bench
&lt;/h2&gt;

&lt;p&gt;Three tests on the bench, through your real update path. Send a test unit an image that starts and then does nothing: does the unit come back by itself, and does its main job run the whole time? Cut the power while an image is being written, and again while the bootloader is swapping it in. Then offer a production unit a build signed with the test key. What happens in each case shows how far a bad update can get on one unit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://r1.community.samsung.com/t5/smartthings/%EB%83%89%EC%9E%A5%EA%B3%A0-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%98%A4%EB%A5%98-%EA%B4%80%EB%A0%A8-%EC%95%88%EB%82%B4-9-23/td-p/39603377" rel="noopener noreferrer"&gt;Samsung Members: notice on the refrigerator software error&lt;/a&gt; (23 September 2026, in Korean)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arstechnica.com/gadgets/2026/09/owners-mourn-spoiled-food-after-firmware-update-bricks-samsung-smart-fridges/" rel="noopener noreferrer"&gt;Ars Technica: Owners mourn spoiled food after firmware update bricks Samsung smart fridges&lt;/a&gt; (23 September 2026, updated 24 September with Samsung's statement)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.chosun.com/english/industry-en/2026/09/23/XWP675T3DZDGJEBP35UUQAOIQQ/" rel="noopener noreferrer"&gt;The Chosun Daily: Samsung Refrigerators Fail After Update, Repairs During Chuseok&lt;/a&gt; (23 September 2026)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.androidauthority.com/samsung-accidentally-freezes-its-smart-fridges-with-a-software-update-3714472/" rel="noopener noreferrer"&gt;Android Authority: Samsung accidentally freezes its smart fridges with a software update&lt;/a&gt; (23 September 2026)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.moxa.com/en/support/product-support/security-advisory/mpsa-269540-cve-2026-86325,-cve-2026-86326-two-vulnerabilities-in-protocol-gateways" rel="noopener noreferrer"&gt;Moxa security advisory MPSA-269540&lt;/a&gt;, CVE-2026-86326 (2 October 2026)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.mcuboot.com/design.html" rel="noopener noreferrer"&gt;MCUboot: bootloader design&lt;/a&gt;, the section on boot swap types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://newlinebreak.com/notes/" rel="noopener noreferrer"&gt;All notes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;First published at &lt;a href="https://newlinebreak.com/notes/update-that-stopped-the-fridge/" rel="noopener noreferrer"&gt;newlinebreak.com/notes/update-that-stopped-the-fridge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>embedded</category>
      <category>security</category>
      <category>iot</category>
      <category>firmware</category>
    </item>
    <item>
      <title>Cyber Resilience Act: what your devices should be able to tell you</title>
      <dc:creator>NewLine Break</dc:creator>
      <pubDate>Tue, 06 Oct 2026 06:13:27 +0000</pubDate>
      <link>https://dev.to/newlinebreak-studio/cyber-resilience-act-what-your-devices-should-be-able-to-tell-you-8dn</link>
      <guid>https://dev.to/newlinebreak-studio/cyber-resilience-act-what-your-devices-should-be-able-to-tell-you-8dn</guid>
      <description>&lt;p&gt;Since 11 September 2026, a manufacturer that learns one of its connected products is being attacked through a flaw has at most 24 hours to send an early warning. That warning is short. The notification due two days later is not, and most of it can only be answered if the device and the system behind it can tell you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed on 11 September
&lt;/h2&gt;

&lt;p&gt;Article 14 of the EU's Cyber Resilience Act, the manufacturer's reporting duty, applies from that date. Most of the rest of the regulation follows on 11 December 2027 (&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng#art_71" rel="noopener noreferrer"&gt;Article 71&lt;/a&gt;). The &lt;a href="https://digital-strategy.ec.europa.eu/en/policies/cra-reporting" rel="noopener noreferrer"&gt;Commission's summary&lt;/a&gt; gives the clock for a vulnerability that is being actively exploited:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;24 hours&lt;/strong&gt;: An early warning, counted from the moment the manufacturer becomes aware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;72 hours&lt;/strong&gt;: A fuller notification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;14 days&lt;/strong&gt;: A final report, counted from the day a fix or a mitigation is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A severe incident runs on the same first two steps, with its final report due a month after the notification. Everything is filed once, through &lt;a href="https://www.enisa.europa.eu/topics/product-security/single-reporting-platform-srp" rel="noopener noreferrer"&gt;ENISA's Single Reporting Platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng#art_69" rel="noopener noreferrer"&gt;Article 69(3)&lt;/a&gt; says the duty covers products placed on the market before December 2027. If a product is in scope, that includes units shipped three years ago.&lt;/p&gt;

&lt;p&gt;Whether a product is in scope, and who is its manufacturer, is a question for a lawyer. This note is about the engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the reports ask for
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng#art_14" rel="noopener noreferrer"&gt;Article 14&lt;/a&gt; reads like a list of questions. The early warning names the Member States where the product is known to be available. The notification gives general information about the product, the nature of the exploit and of the vulnerability, what has been done about it, and what users can do. The final report describes the vulnerability with its severity and impact, who exploited it where that is known, and the update that fixes it. Paragraph 8 adds one more job: tell the users who are affected.&lt;/p&gt;

&lt;p&gt;None of this is hard to write down. All of it is hard to know in three days, unless the product was built to tell you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four things the device should be able to answer
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Which units run the affected code
&lt;/h3&gt;

&lt;p&gt;Give every build an identity: a version and the commit it was built from, compiled into the image and readable over the wire. Have every unit report the build it runs and its hardware revision. Keep, for each build, the list of what is in it and how it was configured: bootloader, RTOS, TLS library, radio stack, each with its version and its build options.&lt;/p&gt;

&lt;p&gt;The regulation asks for that list as a software bill of materials from December 2027 (&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng#anx_I" rel="noopener noreferrer"&gt;Annex I, Part II&lt;/a&gt;). It is needed sooner: it is what turns "there is a flaw in this library" into a list of serial numbers.&lt;/p&gt;

&lt;p&gt;A test from last week: &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-71973" rel="noopener noreferrer"&gt;CVE-2026-71973&lt;/a&gt;, published on 29 September, is an integer overflow in the SquashFS reader of the U-Boot bootloader, in versions before 2026.10-rc4. Its record describes an out-of-bounds heap write from a crafted image and no known attacks, so on that record it is not "actively exploited" as the regulation defines it. It is still a good question to practise on. SquashFS support is a &lt;a href="https://github.com/u-boot/u-boot/blob/master/fs/squashfs/Kconfig" rel="noopener noreferrer"&gt;build option&lt;/a&gt; in U-Boot. How long would it take to say which of your units carry a U-Boot built with it?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Where they went
&lt;/h3&gt;

&lt;p&gt;The early warning names countries. A device does not know its country. The shipping record does. When a unit leaves for a customer, record who it went to and which country, against its serial number. If it is sold through distributors, record the distributor and its market.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Whether a fix can reach them
&lt;/h3&gt;

&lt;p&gt;The update path has to exist before the problem does: signed images, a version floor so that a fixed unit cannot be put back on the old build, a second slot to fall back to, a rollout that can be staged and stopped. Check what the path covers: on many boards it updates the application and never the bootloader. Know which units have not checked in, and for how long. Send a harmless update through it on a schedule, so its first real use is not its first use.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. What users can do until then
&lt;/h3&gt;

&lt;p&gt;The notification asks for measures users can take. Decide now what they are: a service that can be switched off remotely, a port closed by configuration, an instruction that fits in two lines. Keep a way to reach users that does not depend on the broken feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  How you would find out
&lt;/h2&gt;

&lt;p&gt;The clock starts when the manufacturer becomes aware. The &lt;a href="https://digital-strategy.ec.europa.eu/en/library/commission-publishes-new-guidance-support-timely-cyber-resilience-act-implementation" rel="noopener noreferrer"&gt;Commission's guidance&lt;/a&gt; reads that as the point where, after a first assessment, the manufacturer is reasonably certain that a flaw in its product is being exploited. The first sign arrives in three ways. Someone tells you: publish a security contact, usually a &lt;a href="https://www.rfc-editor.org/rfc/rfc9116" rel="noopener noreferrer"&gt;security.txt&lt;/a&gt; file. Your telemetry shows it: have devices report resets, failed updates and rejected signatures. Or a component you ship gets an advisory that reports attacks: watch the advisories for every entry on the list from point 1.&lt;/p&gt;

&lt;p&gt;Not every flaw starts the clock. The regulation's word is "actively exploited": there is reliable evidence that an attacker has used the flaw against a system without its owner's permission (&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng#art_3" rel="noopener noreferrer"&gt;Article 3&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  A drill for this week
&lt;/h2&gt;

&lt;p&gt;Pick one component in your current firmware. Assume a flaw in it is being used against your product, and start a timer. Which units. Which countries. Can a fix reach them. What do users do meanwhile. Whatever cannot be answered within the hour is the work list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://digital-strategy.ec.europa.eu/en/policies/cra-reporting" rel="noopener noreferrer"&gt;European Commission: CRA reporting obligations&lt;/a&gt; (11 September 2026)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng" rel="noopener noreferrer"&gt;Regulation (EU) 2024/2847&lt;/a&gt;, Articles 3, 14, 69 and 71, Annex I&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://digital-strategy.ec.europa.eu/en/library/commission-publishes-new-guidance-support-timely-cyber-resilience-act-implementation" rel="noopener noreferrer"&gt;European Commission: CRA guidance&lt;/a&gt;, Section 9.1&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.enisa.europa.eu/news/the-cra-single-reporting-platform-is-launched" rel="noopener noreferrer"&gt;ENISA: The CRA Single Reporting Platform is launched&lt;/a&gt; (11 September 2026)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-71973" rel="noopener noreferrer"&gt;NVD: CVE-2026-71973&lt;/a&gt; (published 29 September 2026)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/u-boot/u-boot/blob/master/fs/squashfs/Kconfig" rel="noopener noreferrer"&gt;U-Boot: fs/squashfs/Kconfig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.rfc-editor.org/rfc/rfc9116" rel="noopener noreferrer"&gt;RFC 9116&lt;/a&gt;: security.txt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;First published at &lt;a href="https://newlinebreak.com/notes/cyber-resilience-act-24-hours/" rel="noopener noreferrer"&gt;newlinebreak.com/notes/cyber-resilience-act-24-hours&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>embedded</category>
      <category>security</category>
      <category>iot</category>
      <category>firmware</category>
    </item>
  </channel>
</rss>
