Skip to content

Response to concerns about NanoKVM security #301

@Zepan

Description

@Zepan

In apalrd's recent video (https://www.youtube.com/watch?v=plJGZQ35Q6I), apalrd raised several security concerns regarding NanoKVM.
We have carefully watched the video—some parts are fair, while others result from an incomplete understanding of the product.
To help users better understand these concerns, we are providing a unified response under this issue. We welcome objective discussions.

Security vs. Usability Trade-off

Before discussing the details, we want to clarify a fundamental fact: security and usability are inherently contradictory to some extent. If one pursues absolute security, usability will be significantly compromised. apalrd represents a group of users who prioritize security to the extreme. However, based on our customer support records, a large proportion of users care more about ease of use.

For example, we receive multiple emails daily from users who have forgotten their self-set passwords and need help recovering them. apalrd also pointed out that our page "reminds" users to change their passwords rather than "forcing" them to do so, considering this a security risk.

In fact, we did consider forcing password changes during the initial product design. However, after shipping the alpha version, we found that a significant proportion (perhaps over 50%) of our users are beginners. If we force them to change their passwords, they are likely to forget them. Additionally, those who forget their passwords typically do not read the wiki (which contains instructions for physical factory reset). This would leave them unable to use the product or require them to send support emails.

Thus, we chose to remind rather than force users to change their passwords. apalrd mentioned that many IoT devices have similar security issues, but aside from actual security risks, some design choices are compromises for usability.

Responses to Other Concerns Before Discussing Security Details

We understand apalrd’s strong focus on security. However, as a product designed for a wide range of users, we must balance security and usability. We believe different user groups have different needs, so we made trade-offs in our product design accordingly. If apalrd had carefully read the wiki before using the product, some misunderstandings in the video could have been avoided.

Responses to Non-Security Design Issues

  1. Does the full version require disassembly for reflashing?
  • No. We considered factory reset and reflashing methods in the design, as detailed in the wiki. By holding the BOOT button while powering on via USB, the device enters flashing mode. At this point, U-Boot enters UMS mode, allowing users to flash the image via dd or BalenaEtcher.
  1. Is using Type-C for ATX power control an abuse of USB cables?
  • Similar products use RJ11 for ATX power control, but this has two issues:
    1. Size: While RJ11 is acceptable for PiKVM, it is too large for NanoKVM.
    2. Availability: RJ11 cables are not always readily available at home. If users lose them, they must pay extra for replacements.
  • We specifically chose the smaller Type-C interface, allowing users to use readily available A-to-C cables of flexible lengths.
  • Regarding apalrd’s concern about potential damage from plugging in a normal USB cable, we considered this issue during design. Our implementation ensures that even if a standard USB signal is inserted, it will not cause electrical damage.
  1. Issues with PCIe naming and installation
  • The name “PCIe” was chosen based on a Twitter poll. Although it does not use PCIe communication, users still preferred this name for clarity.
  • apalrd did not carefully read the wiki or fully understand the PCIe version’s design. He assumed it was only mechanically fixed and did not address wiring or electrical functions.
  • The PCIe version was specifically designed for ATX case installation. While it has an external USB-C port, our recommended installation method is internal, using the provided DuPont cables to connect to the internal USB header, avoiding extra external wiring.
  • The PCIe slot is not just for mechanical fixation—NanoKVM draws power from PCIe 3.3Vaux, which remains powered even when the PC is off. Thanks to NanoKVM’s ultra-low power consumption (<1W), it can run continuously from 3.3Vaux without external power.
  • In fact, NanoKVM-PCIe requires only an HDMI connection to function externally, contrary to apalrd’s claim that it still needs multiple cables.
  • In an earlier design, we even considered connecting the PCIe wake# signal for wake-on-LAN functionality but later removed it based on overall usage considerations.
  1. Misunderstanding between system images and app versions
  • In the video, apalrd mentioned that the system image was from three months ago and outdated. However, he confused the system image with the app version.
  • The system image serves as a stable base. Once the fundamental drivers are in place, it does not need frequent updates.
  • However, we continuously update the app, incorporating user feedback, feature enhancements, and bug fixes—even modifying original system files when necessary.
  1. Misinterpretation of the open-source repository’s purpose
  • apalrd assumed we rely on the community for development. In reality, most PRs are for UI language translations, with very few for core functionality (for which we offer free new products as rewards).
  • We never intended for the community to take over development. Based on our experience with many prior open-source projects, commercial product development cannot rely on uncertain community contributions.
  • The main reason for open-sourcing NanoKVM is transparency—to prove there are no "Chinese backdoors." As apalrd’s own analysis confirmed, there was no evidence of intentional backdoors.

Response to Security Concerns

To address the security-related concerns, I have categorized all the issues and will respond accordingly.

Design Trade-offs for Usability and Availability

  1. Password Change Policy
    -As mentioned earlier, we chose to "remind" users to change their passwords rather than "force" them to do so.
  2. Forced DNS Modification
  • Some users in certain regions experience domain resolution failures with their local DNS providers, preventing access to Sipeed’s servers and causing update failures. To ensure availability, we enforced the use of reliable DNS services. While this decision may raise security concerns, it was made purely to guarantee usability for all users.
  • The issue you mentioned—"installation failure due to network restrictions in China"—is an example of such network-related problems.
  • Once again, security and usability are often in conflict, and we aim to strike a balance. Some harmless actions may cause unnecessary concerns.
  1. Bundled Outdated Version of Tailscale
  • During the Alpha hardware release, we did not preinstall Tailscale in the image. However, some users in certain regions were unable to access Tailscale's official website, so we used a CDN to distribute a fallback version.
  • In the final official image and hardware versions, this fallback link is not needed.
  • This was purely a usability-driven decision—just because your network can download Tailscale without issues, it doesn't mean all users around the world can do the same.

Non-Security Issues / Other Feature Enhancements

  1. Default Installation of tcpdump and aircrack
  • These packages were enabled by default in the original SDK for the SG2002 platform, and we initially retained the default configuration without much attention.
  • However, these tools have proven useful for diagnosing network issues users encounter. This has been evident in comments under your video and discussions on GitHub issues.
  • Additionally, our PCIe version includes WiFi support, and to avoid fragmenting the image versions, we provide a unified firmware image. As a result, some software packages may be present even if they are not immediately needed for a specific hardware variant.
  1. NanoKVM Lacks MFA Support
  • This is something better suited as a "TODO" item, and we will update the README roadmap accordingly.
  1. Closed-Source Libraries
  • This issue has already been addressed in the corresponding GitHub issue.
  • NanoKVM is a side project of MaixCAM, and for rapid development, we reused some proprietary MaixCAM libraries.
  • However, these libraries only handle chip-specific video encoding/decoding and do not contain anything concerning.
  • In fact, community developers have already reverse-engineered and reimplemented the necessary functionality.
  • In the next version, we will remove these dependencies to eliminate unnecessary speculation.

Security Concerns Stemming from Tailscale or Network Configuration

  1. NanoKVM as a Router
  • The Tailscale startup script sets ip forwarding = 1, effectively turning the device into a router.
  • Since enabling Tailscale automatically configures this setting, we provide users with the option to enable or disable Tailscale.
  • Users can also manually remove /etc/sysctl.d/99-tailscale.conf if needed.
  1. NanoKVM Identified as an "InternetGatewayDevice"
  • It is enabled by default in the original SDK for the SG2002, we can disable it next time

Beneficial Security Recommendations

  1. Potential Issues with SSH Enabled by Default
    Initially, NanoKVM was designed as a product for homelab developers. Therefore, we set the product to "Developer Mode" by default, enabling SSH to facilitate network diagnostics and recovery for developers. Many of our previous designs and configurations, as well as our earlier products like SBCs and AI Cameras, were also tailored for developer users. However, as NanoKVM reaches more general users, it is indeed time to default to a "Regular User" mode, with "Developer Mode" requiring manual activation.

  2. Hardcoded Keys in TypeScript
    Yes, this was an improper practice, a flaw left over from the early rapid development stage. We plan to move the keys into configuration files in the next version, which is expected to be released this month. This improvement will further enhance product security. However, it is worth noting that the primary security risk associated with this issue is man-in-the-middle attacks, meaning that the risk arises mainly when your network is untrusted or malicious. In such cases, the number of potentially compromised devices around you may be greater than expected.

  3. Lack of APP Update Verification

Similar to the previous issue, we will add verification in the next version. The primary risk also comes from man-in-the-middle attacks.

Summary

We are always committed to finding the best balance between security and usability and appreciate the feedback from apalrd and other users.
We will continue improving NanoKVM to ensure it meets the security needs of advanced users while remaining simple and user-friendly for beginners.
We welcome all users to transparently discuss and provide suggestions in an open-source environment. Whether the concerns are genuine security issues or security concerns influenced by bias, they can be properly addressed in a transparent, open discussion.

Additionally, we recommend users read our Wiki documentation before using NanoKVM to fully understand its features and usage.

For any questions, our technical support team is always available: kvm@sipeed.com.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions