Crypto exchange Coinbase disclosed a potential vulnerability Friday, announcing that a tiny fraction of its customersâ passwords were stored in plain text on an internal server log. However, the information was not improperly accessed by outside parties, the exchange said.
In a post-mortem shared with CoinDesk, Coinbase outlined âa password storage issue,â impacting less than 3,500 customers (out of more than 30 million worldwide) that briefly resulted in personal information, including the passwords, being stored in clear text on internal logging systems.
âUnder a very specific and rare error condition, the registration form on our signup page wouldnât load correctly, which meant that any attempt to create a new Coinbase account under those conditions would fail,â the post explained. âUnfortunately, it also meant that the individualâs name, email address, and proposed password (and state of residence, if in the US) would be sent to our internal logs.â
In 3,420 instances, the potential customers used the same password on their second signup attempt, which would be successful but would result in their having a password that matches the hashed version on the companyâs logs. Those customers were notified by Coinbase via email on Friday.
The bug occurred due to Coinbaseâs use of React.js server-side rendering on the signup page. Essentially, when a user visits the page to sign up for an account, React helps display the form that needs to be filled out.
âAny user attempting to register needs to have JavaScript enabled, and needs to have that JavaScript load correctly,â the post explained, adding:
âIn virtually all circumstances, both of these things are true, and React handles form validation and submission to the server. However, if a user had JavaScript disabled or their browser received a React.js error when loading, there was enough pre-rendered HTML that a user could fill out and attempt to submit our registration form.â
Because the HTML form âwas extremely basic,â no âactionâ or âmethodâ attributes were set. Due to default behaviors, this resulted in some browsers defaulting to âGET,â which encoded form variables as part of the log data.
The exchange fixed the issue by switching the default form method to âPOST,â to ensure data is no longer logged.
While Coinbase searched for other forms âwith that problematic behavior,â the exchange did not identify any.
âWeâre also in the process of implementing additional mechanisms to detect and prevent the inadvertent introduction of this sort of bug in the future,â the blog post said.
In response to the discovery, Coinbase said it tracked the various location where the logs might be stored, which included a system hosted on Amazon Web Services and some âlog analysis service providers.â
âA thorough review of access to these logging systems did not reveal any unauthorized access to this data,â the post said, adding that access to each of the systems is âtightly restricted and audited.â
Coinbase said it has also triggered password resets for any individual whose account was impacted. (The blog post added that it requires two-factor authentication on top of a password in order for users to log into accounts.)
âWhile we are confident that weâve fixed the root cause and that the logged information was not improperly accessed, misused, or compromised, we are requiring those customers to change their passwords as a best-practice precaution,â the post explained.
âAs a reminder, Coinbase also maintains an active bug bounty program on HackerOne, which has paid out over a quarter of a million dollars to date. While this particular bug was discovered internally, we welcome security researchers to submit reports any time they believe they may have uncovered a flaw in one of our systems,â the exchange concluded.
Coinbaseâs disclosure comes on the heels of Binance and Huobi suffering from actual data breaches. Unlike Coinbase, Binance and Huobi appear to have lost control of client know-your-customer data, including identity verification documents.
Brian Armstrong image via CoinDesk archives