Last updated

Introducing XRP Ledger version 1.9.4

Version 1.9.4 of rippled, the reference server implementation of the XRP Ledger protocol, is now available. This release introduces a new amendment to the XRP Ledger protocol, fixRemoveNFTokenAutoTrustLine, to mitigate a potential denial-of-service attack against non-fungible token (NFT) issuers.

Action Required

The new amendment is open for voting according to the XRP Ledger's amendment process, which enables protocol changes following two weeks of >80% support from trusted validators.

If you operate an XRP Ledger server, then you should upgrade to version 1.9.4 within two weeks, to ensure service continuity. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network.

NFT Status

Previously, the NonFungibleTokensV1_1 amendment was on track to become enabled 2022-09-13, but a new bug report on 2022-09-11 described an exploit where malicious users could perform a denial of service attack on a token issuer by abusing the tfTrustLine feature of the XLS-20 standard. Following this report, several validators changed their votes on the NonFungibleTokensV1_1 amendment, causing its support to decrease below 80% and not become enabled.

The fixRemoveNFTokenAutoTrustLine amendment disables the problematic feature. For non-fungible tokens to become enabled on the XRP Ledger Mainnet, both the new amendment and the NonFungibleTokensV1_1 amendment require a new period of two weeks' uninterrupted support from over 80% of trusted validators. The voting period for these amendments can be concurrent, but the fixRemoveNFTokenAutoTrustLine amendment should be enabled first or at the same time as the NonFungibleTokensV1_1 amendment.

Install / Upgrade

On supported platforms, see the instructions on installing or updating rippled.

PackageSHA-256
RPM for Red Hat / CentOS (x86-64)fa6bbcda7781c6b3680e56849566f27d46df4cce16b1d9ff6432262f634f2970
DEB for Ubuntu / Debian (x86-64)2d23b897bc0bd235f2f74cd52eab8d0ac52b416c0294a02112385192285c0169

For other platforms, please build from source. The most recent commit in the git log should be the change setting the version:

commit ba3c0e51455a88d76d90b996f20c0f102ac3f5a0
Author: Nik Bougalis <[email protected]>
Date:   Wed Sep 14 15:52:05 2022 -0700

    Set version to 1.9.4

fixRemoveNFTokenAutoTrustLine

The tfTrustLine feature was designed to allow NFT issuers to collect transfer fees for sales denominated in all possible fungible tokens. If an issuer enabled this setting on an NFT, the protocol would automatically create trust lines as needed to hold the transfer fees when the NFT was bought or sold. However, as the bug report pointed out, an attacker could create new, meaningless fungible tokens and sell an NFT back and forth for those tokens, creating numerous useless trust lines tied to the issuer. Since these trust lines would hold a positive balance, the issuer would be responsible for the reserve requirement of each of trust lines.

The fixRemoveNFTokenAutoTrustLine changes the NFTokenMint transaction to make the tfTrustLine flag invalid. This prevents new NFToken objects from being minted with the flag enabled. However, the amendment does not change the code for NFToken objects that have already been minted. On test networks that already have NonFungibleTokensV1_1 enabled, this means that issuers who have already minted NFTokens with the tfTrustLine flag enabled are still vulnerable to the exploit even after the fixRemoveNFTokenAutoTrustLine amendment. On Mainnet, this means that fixRemoveNFTokenAutoTrustLine should be enabled before NonFungibleTokensV1_1 to protect issuers.

For more information about NFTs on the XRP Ledger, see NFT Conceptual Overview.

Changelog

This release includes the following changes:

  • Introduce the fixRemoveNFTokenAutoTrustLine amendment, which disables the tfTrustLine flag. (#4301)
  • Remove use of deprecated std::iterator (non-functional code cleanup) (#4276)
  • Fix errors when compiling with gcc 12 on platforms including Manjaro Linux (#4298)
  • Pin various Reporting Mode dependencies to stable versions (#4278)
  • Fix a typo in comments (#4283)

GitHub

The public source code repository for rippled is hosted on GitHub at https://github.com/XRPLF/rippled.

We welcome all contributions and invite everyone to join the community of XRP Ledger developers and help us build the Internet of Value.

Credits

The following people contributed directly to this release: