Reverse Fingerprinting
Software connected to the Internet is an attractive target for attackers: as soon as a security flaw is known, services may be taken under attack. In contrast, software developers release updates to add further features and fix flaws in order to increase its security. Consequently, a user of the software wants to have the latest secure version running. However, if the software is provided as a service, e.g., as part of the cloud, the user relies on the service provider (SP) to perform such updates. But when asking for the software version, the user has to trust the output of SP or his software. Latter may be malformed, since updating software costs time and money, i.e., in comparison to changing a (false) version string. Now the question rises how a software service's client can provably determine the real software version of the running service at the SP, also known as Remote Software Identification (RSI). While existing tools provide an answer, they can be tricked by the service to output any forged string because they rely on the information handed directly by the SP. We solve the problem of RSI by introducing Reverse Fingerprinting (RFP), a novel challenge-response scheme which employs the evaluation of inherit functions of software versions depending on certain inputs. That is, RFP does not rely on version number APIs but employs a database consisting of function inputs and according outputs and combines them with a strategy and a randomness source to provably determine the version number. We also provide a theoretical framework for RSI and RFP, and describe how to create databases and strategies. Additionally, RFP can be securely outsourced to a third party, called the auditor, to take away the burden of the user while respecting liability. We also provide an implementation and API to perform RFP in practice, showing that most of the providers have installed the latest versions.
READ FULL TEXT