A simple-to-exploit vulnerability in the website of real estate insurance giant First American Financial that could have resulted in the theft of hundreds of millions of sensitive records underscores the importance of verifying basic security measures and implementing secure programming practices, experts said this week.
The vulnerability, first reported by KrebsOnSecurity, allowed anyone with a valid link to a document on the site to increment the identifier to access the next document in sequence, as processed by the firm. The journalist found that the first record accessible through the site, document 000000075, dated back to 2003.
The basic error is a major misstep for the financial firm. The class of vulnerability is so well known that it had its own slot on the popular Open Web Application Security Project (OWASP) Top 10 list of web security vulnerabilities, "A4-Insecure Direct Object References," for four years, and is so easy to find that a simple Google search often turns up the issue.
"You don't need a sophisticated security solution to find these issues," says Greg Pollock, vice president of products for cloud-security firm UpGuard. "It's not about bulking up on cutting-edge DevOps or continuous integration testing, but back-to-basics engineering practices and having a culture that, if an engineer sees something wrong — and they should have seen something wrong here — they raise the issue and it gets fixed."
Beyond the Top 10
The incident underscores that while many security firms urge customers to "go beyond the OWASP Top 10," a large portion of companies still need to make sure their software developers, application security specialists, and operations teams are meeting basic hurdles. The problem is that developers who do not consider the security implications in the design of their software application may look at a database of millions of records and decide to just index them using a sequential code and, worse, expose that code through the URL in a web application.
"[Y]ou should never expose direct references to your data," Jeff Williams, chief technology officer for Contrast Security, said in a statement on the incident. "Instead, you should always use an indirect reference that only allows access to authorized resources. This takes a bit of extra work, but this is a mandatory part of any internet web application or API."
While there is currently no evidence that anyone accessed the data, the information held by First American is a treasure trove for financial fraudsters and identity thieves. First American is a title insurance company, a critical supplier of information used during the process of selling and buying homes. Title insurance companies collect information from both the buyer and the seller in a real estate transaction, verifying and taking custody of a great deal of sensitive information.
Among the documents that could be accessed through the website were bank account statements, mortgage records, tax information, Social Security numbers, driver's license images, and receipt of money transfers, according to KrebsOnSecurity.
First American acknowledged the vulnerability, calling it "a reported design defect that created the potential for unauthorized access to customer data" in a statement released on May 28.
"We deeply regret the concern this defect has caused," Dennis J. Gilmore, CEO at First American Financial, said in the statement. "We are thoroughly investigating this matter and are fully committed to protecting the security, privacy and confidentiality of the information entrusted to us by our customers."
A real estate developer originally found the issue and reached out to KrebsOnSecurity, which verified the security flaw and contacted First American. After the company had fixed the issue, KrebsOnSecurity published its report.
Although the latest version of the OWASP Top 10, published in 2017, no longer has a category named for the specific class of vulnerabilities, insecure direct object references are one of the two categories that make up a new entry in the top 10 list known as "A5-Broken Access Control."
"Access control weaknesses are common due to the lack of automated detection, and lack of effective functional testing by application developers," OWASP states on its site, adding: "Access control enforces policy such that users cannot act outside of their intended permissions. Failures typically lead to unauthorized information disclosure, modification or destruction of all data, or performing a business function outside of the limits of the user."
Two years ago, most companies had to worry about denial-of-service attacks on their web applications. Today, a wide variety of access control issues dominate the list of cloud security issues, according to the SANS Institute's annual survey. Account or credential hijacking is the top issue, followed by misconfiguration, privileged user abuse, unauthorized application components, and insecure APIs or interfaces, according to the SANS Institute's "2019 State of Cloud Security" report.
Developers need to be knowledgeable about such common issues and create tests to check code for any errors that could undermine security, UpGuard's Pollock says.
"While it is trivial to iterate through and pull out as many documents as you want, the flip side of it — and again why this one has gone undetected so long — is that it is much harder to do mass scans for these direct object references," he says. "Companies need to be mindful that this is a problem [and] have some sort of penetration testing or dynamic testing that looks for data leaks."