<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>On the road to Bandol &#187; malware</title>
	<atom:link href="https://javacard.vetilles.com/tag/malware/feed/" rel="self" type="application/rss+xml" />
	<link>https://javacard.vetilles.com</link>
	<description>A weblog on Java Card, security, and other things personal</description>
	<lastBuildDate>Mon, 18 Aug 2025 06:48:26 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.32</generator>
	<item>
		<title>Resilience for Connected Objects</title>
		<link>https://javacard.vetilles.com/2016/11/30/resilience-for-connected-objects/</link>
		<comments>https://javacard.vetilles.com/2016/11/30/resilience-for-connected-objects/#comments</comments>
		<pubDate>Wed, 30 Nov 2016 18:06:24 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[IoT Security]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[trust]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=26311</guid>
		<description><![CDATA[Attacks occur, especially on IoT. While it is very hard to avoid an attack altogether, we can minimize its consequences. The first factor to consider is the impact of an attack; there are many ways to analyze such impact, for instance from a financial or technical point of view. In a very simple analysis, we [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Attacks occur, especially on IoT. While it is very hard to avoid an attack altogether, we can minimize its consequences.<br />
The first factor to consider is the impact of an attack; there are many ways to analyze such impact, for instance from a financial or technical point of view. In a very simple analysis, we can consider three main categories of impacts:</p>
<ul>
<li>The device performs its tasks normally, but the attacker also runs other software on it, for instance to make it participate to DDoS attacks.</li>
<li>The device apparently works normally, but its behavior is somehow altered, for instance by providing wrong information.</li>
<li>The device doesnâ€™t work or obviously dysfunctions, for instance a car that wonâ€™t start.</li>
</ul>
<p>A second factor to analyze the consequence of an attack is the duration of the attack, or the delay until recovery. Here, we can consider four situations:</p>
<ul>
<li><strong>Until next reboot</strong>. I am confident that the firmware hasnâ€™t been modified, so a reboot will remove the attack vector from RAM and address the problem.</li>
<li><strong>Until next hard reset</strong>. I am confident that the device will not boot on modified firmware, so a hard reset will restore a Â«&nbsp;good&nbsp;Â» copy of the last known correct firmware.</li>
<li><strong>Until next update</strong>. I am not sure about the full firmware, but I know that a firmware update will remain possible and will address the issue.</li>
<li><strong>Until replacement</strong>. The firmware update mechanism is corrupted as well (or the device is permanently damaged), so the only solution is to replace the device.</li>
</ul>
<p><span id="more-26311"></span></p>
<p>We could go further, but letâ€™s stop here for now. The impact looks essential, but the differences between the three scenarios arenâ€™t that great. An obvious dysfunction is bad, but a device whose behavior has been altered by an attacker can be just as bad, and a device that is controlled by a hacker can easily become dysfunctional. In all three situations, it is obvious that some fix is required.</p>
<p>Thatâ€™s where duration and recovery are important. The two first options (reboot and hard reset) are only temporary fixes. Even if the attack is transient and can be removed, the vulnerabilities that made the attack possible are still present, and the attack can be reproduced easily. Ideally, a reboot or reset/restore must be accompanied with some operational restrictions (like a &#8220;safe mode&#8221;) until an update is performed.</p>
<p>What we are analyzing here with recovery methods is resilience, or according to Random House, &#8220;the power or ability to return to the original form, after being [attacked]&#8221;. It is a valuable property for systems that are submitted to high levels of stress. Resilience is about recovery, in opposition to resistance, which is about protection.</p>
<p>Resilience and resistance are complementary. Resilience is often considered easier to achieve than resistance, but maybe more importantly, resilience may still happen when resistance has failed. Even if an attack on a system has been successful, its recovery is possible is the system is resilient to that attack.</p>
<p>We can here use an analogy with resilience against natural disasters. Although a hurricane can cause massive destruction to coastal areas, (resistance is limited), most U.S. coastal areas are resilient against hurricanes because hurricane evacuation routes have been defined, and shelters are ready to host evacuated people. Such resilience measures rarely fail, and we are shocked when this occurs, like in New Orleans after Katrina.</p>
<p>For an embedded device, resilience is mostly about:</p>
<ul>
<li>Secure boot, to restart from a clean sheet upon reboot, and detect a potentially persistent attack.</li>
<li>Firmware update, to load a new version that is not vulnerable to the attack.</li>
</ul>
<p>More generally, resilience can be achieved through simple infrastructure means like roads and shelters. In the case of connected devices, resilience can be achieved through low-level features, within or below the operating system, and highly independent of the use case.</p>
<p>However, although resilience mechanisms are simple, they also need to be very robust. A hurricane shelter must be built on high ground with strong material like reinforced concrete that offer strong guarantees of resistance against a hurricane. Similarly, the secure boot and firmware updates of a connected device must be designed and implemented to resist attacks. In both cases, this resistance is easier to build because it is applied on a smaller scale, and it is mutualized:</p>
<ul>
<li><strong>Smaller scale</strong>. A shelter is a single building, typically used for other purposes (like a stadium) that is relatively easy to reinforce. Similarly, a secure boot is a small mechanism, so is the security-critical subset of a firmware update mechanism. These mechanisms offer a small attack surface, and are therefore easier to protect than an entire software stack.</li>
<li><strong>Mutualized</strong>. A shelter is shared by all members of a community, who will use it together in case of emergency. Similarly, secure boot and firmware update are independent of the deviceâ€™s role and application. The development and reinforcement efforts can therefore be mutualized, reducing the cost for every device.</li>
</ul>
<h3>Resilience must be proactive</h3>
<p>Resilience is the capacity to recover from an attack, and as such, appears to be a highly reactive technology, that comes after the fact. It is of course true that resilience mechanisms are triggered after the fact, but in order to succeed, they need to be proactively prepared.</p>
<p>Just like evacuation routes and shelters need to be planned in advance and designed to resist a hurricane, resilience measures in IoT devices similarly need to be prepared beforehand. A firmware update mechanism is crucial, and it needs to be prepared with great care proactively. In particular, this mechanism must be designed to be highly resistant against attacks.</p>
<p>In the world of connected devices, we know that resistance to attacks will be difficult to achieve, because it requires a very large investment from vendors to fix all vulnerabilities and make their systems resistant to attacks. Resilience, on the other hand, can be achieved on a wide scale with a limited budget, and has the ability to provide a strong basis on which IoT security can gradually be built.</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2016/11/30/resilience-for-connected-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android malware better, still accessible</title>
		<link>https://javacard.vetilles.com/2011/03/07/android-malware-better-still-accessible/</link>
		<comments>https://javacard.vetilles.com/2011/03/07/android-malware-better-still-accessible/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 22:06:23 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=708</guid>
		<description><![CDATA[I have been lazily looking at the latest Android piece of malware these past few days, until a tweet written this afternoon by @cryptax: Disagree with http://bit.ly/hq5J6H on raising entry fee of #android dev: organized gangs will still pay. Genuine individuals no. It sure sounded to me that I agreed with Axelle, and not only [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I have been lazily looking at the latest Android piece of malware these past few days, until a <a href="http://twitter.com/#!/cryptax/status/44757304083619842" class="liexternal">tweet</a> written this afternoon by <a href="http://twitter.com/#!/cryptax" class="liexternal">@cryptax</a>:</p>
<blockquote><p>
Disagree with http://bit.ly/hq5J6H on raising entry fee of #android dev: organized gangs will still pay. Genuine individuals no.
</p></blockquote>
<p>It sure sounded to me that I agreed with Axelle, and not only because I plan to register as an Android developer one of these days. I checked on the proposal on the <a href="http://nakedsecurity.sophos.com/" class="liexternal">naked security</a> blog, and it confirmed that I do disagree with them. Making developers pay for submitting and testing an application is a bad idea; this is what mobile operators and other application distributors were doing before Apple&#8217;s App Store, and it didn&#8217;t work, because it increasing artificially the cost of developing applications. The cost of vetting an application is an App Store cost, and the idea is that the revenues from the store should cover this cost. Of course, this may not be very easy for Android Market, because their revenue is lower than Apple&#8217;s store revenue, but it nevertheless remains their responsibility.</p>
<p>Making application development accessible to developers always makes it just as accessible to hackers and malware developers, but this remains the way to go. If you consider Java Card, it has never been really accessible (just try to get sample cards to run a Java Card application, and you&#8217;ll understand what I mean); hackers have largely stayed away from it, and so did developers: creativity on the Java Card platform is dismal, and it sure doesn&#8217;t come from independent developers.</p>
<p>So, what can Android Market do about these deliverables? Well, like we said before, vetting is a key element here (<em>i.e.</em>, having Google analyze the applications carefully before to actually put them on the market). This is a part where Apple is far from transparent but potentially efficient: few people know the kind of vetting performed on iPhone applications. Of course, malware developers can test concepts, but the opacity of the process allows Apple to update it rapidly when malware is detected.</p>
<p>Let&#8217;s follow a few of Crypto Girl&#8217;s suggestions, on her <a href="http://blog.fortinet.com/android-droiddream-uses-two-vulnerabilities/" class="liexternal">Fortinet blog</a>, and on <a href="http://blogs.iss.net/archive/Examining%20the%20recent.html" class="liexternal">IBM&#8217;s blog</a>, to get a few more technical detail. These reads are quite interesting, because they show how the exploits have been embedded in the code. I am not an expert on Linux exploits and I may be wrong, but I have the feeling that a static analyzer could identify a few things that would trigger a security analyst&#8217;s interest.</p>
<p>As a lot of people mentioned in the past months, there is increasing interest for mobile malware, especially around Android and iOS, and we expect a race between the good guys and the bad guys. What worries me a bit here is that I don&#8217;t see much sign of Google engaging in the race to protect Android. Applications like DroidDream should be caught and rejected before they are released, rather than recalled after being downloaded by thousands of developers. Let&#8217;s hope for Google that they get serious before their Android Market becomes completely discredited, because Android is an open system, and competitors could show up.</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2011/03/07/android-malware-better-still-accessible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android Malware, Permissions, and Side Channels</title>
		<link>https://javacard.vetilles.com/2011/01/29/android-malware-permissions-and-side-channels/</link>
		<comments>https://javacard.vetilles.com/2011/01/29/android-malware-permissions-and-side-channels/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 21:57:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Discussions]]></category>
		<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[static analysis]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=694</guid>
		<description><![CDATA[New Android malware keeps popping up, and the latest one to be publicly discussed is very typical of what we are seeing these days. And frankly, I haven&#8217;t found them very impressive. In short, the attack consists in recording phone calls, identifying calls to credit card support lines, then analyzing the recording to identify the [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>New Android malware keeps popping up, and the latest one to be <a href="http://www.schneier.com/blog/archives/2011/01/trojan_steals_c.html" class="liexternal">publicly</a> <a href="http://www.thinq.co.uk/2011/1/20/android-trojan-captures-credit-card-details/" class="liexternal">discussed </a>is very typical of what we are seeing these days. And frankly, I haven&#8217;t found them very impressive. In short, the attack consists in recording phone calls, identifying calls to credit card support lines, then analyzing the recording to identify the tones corresponding to a credit card number, and finally transmitting this data to another piece of malware through hardware settings.</p>
<p>Basically, this attack shares the following characteristics with many other ones:</p>
<ul>
<li><strong>Exploit Android permissions</strong>. Android permissions are very wide, and labeled in simple terms. This means that there are many ways to abuse people, especially with combinations. In that particular case, the use of two collaborating applications is a way to hide combinations, but it also makes the attack more difficult.</li>
<li>Use a side channel for leaking data. Some side channels are obvious (like leaking data on Internet together with other data), and this one is trickier. In fact, there is always a tricky way to leak data, especially when you can do it one bit at a time.</li>
<li>Be a proof-of-concept. This malware works, but only in a lab. In the real world, it needs someone to download two pieces of malware, dial a credit card support hotline, type a credit card number, and do that for another reason then blocking the card. Possible, quite unlikely.</li>
</ul>
<p>My main claim is that such a malware is quite unlikely to represent any kind of danger. The scheme is so complex that by the time people get credit card numbers stolen, the malware is very likely to be detected. My second claim is that the Android permission system is not worse than the others around: iOS doesn&#8217;t really use permissions, MIDP uses overly detailed ones (granted by network operators in most cases), <em>etc</em>. My third claim is that what really count is that the Android Market is able to vet applications; even if it doesn&#8217;t do much today, we can rest assured that Google will make sure that 2011 doesn&#8217;t become <a href="http://javacard.vetilles.com/2011/01/20/2011-the-year-of-mobile-malware-nope/" class="liinternal">the year of mobile malware</a>.</p>
<p>Nevertheless, the paper points a few interesting things about Android permissions, and some of them could be fixed:</p>
<ul>
<li>The <em>Read contact data</em> permission gives access to the call history. I am not sure that I see the need for that. In fact, my main issue with that is that, in terms of privacy control, I believe that it&#8217;s very different to know who I know and who I actually call. I believe that this one should be fixed.</li>
<li>The <em>Record audio</em> permission allows an application to record the content of phone communication (as well as recording audio in the background, actually). In fact, that&#8217;s again a privacy issue: an application that records audio while it is the currently running application is fine; allowing that application to record audio from the background is a very different thing, which worries me. This one also deserves to be fixed.</li>
<li>The side channel actually doesn&#8217;t use any permission in most cases, since it uses channels that don&#8217;t require any, like setting the volume repeatedly. Here, I don&#8217;t think that there is a big problem, because getting data out is most likely not the main problem today. Five years ago, everybody was worried about connected applications; today, most people consider it normal for an application to be somehow connected to the net (for instance, an application can always claim to backup things, to have a social side, <em>etc</em>.). Malware doesn&#8217;t need to be bundled with sensitive, intelligent software, so complicated side channels probably represent a futile complexity.</li>
</ul>
<p>To conclude, a word about hidden communication channels. I have worked on information flow static analysis, and we haven&#8217;t found many practical ways to identify hiddne information flows. Usually, these hidden flows do not use variables or communication APIs to leak data. Instead, they often leak a trickle of information using either an unnecesssarily convoluted computation (which is likely to attract the attention of a human reviewer, but is difficult to find for a static analyzer), or by looping on an apparently innocuous API method (this is what is done here, and we may have detected it using a static analyzer).</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2011/01/29/android-malware-permissions-and-side-channels/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android malware hype</title>
		<link>https://javacard.vetilles.com/2010/06/28/android-malware-hype/</link>
		<comments>https://javacard.vetilles.com/2010/06/28/android-malware-hype/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 20:56:03 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[malware]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=586</guid>
		<description><![CDATA[There is no better publicity for a security company than a good scare. Apparently, some guys at Smobile are taking publicity seriously. They have published a report entitled Threat Analysis of the Android Market, which got them some news coverage. The report includes some pretty scary statements, like: 3% of all of the Market submissions [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>There is no better publicity for a security company than a good scare. Apparently, some guys at <a href="http://threatcenter.smobilesystems.com/" class="liexternal">Smobile</a> are taking publicity seriously. They have published a report entitled <a href="http://threatcenter.smobilesystems.com/wp-content/uploads/2010/06/Android-Market-Threat-Analysis-6-22-10-v1.pdf" class="lipdf">Threat Analysis of the Android Market</a>, which got them some news <a href="http://news.cnet.com/8301-27080_3-20008518-245.html" class="liexternal">coverage</a>. The report includes some pretty scary statements, like:</p>
<blockquote><p>
3% of all of the Market submissions that have been analyzed could allow an application to send unknown premium SMS messages without the userâ€™s interaction or authorization.
</p></blockquote>
<p>Premium messages, without the user&#8217;s authorization. That&#8217;s actually true, but not really scary about the applications. This corresponds to the number of applications that request the <code>SEND_SMS</code> privilege (1356 out of 48694). That&#8217;s the way Android works: once you have allowed an application to send SMS&#8217;s, the application can send any SMS, including premium ones, and this happens without any further user interaction. Abuse attempts are likely, but Google is likely to turn on the kill switch before the bad guy can make any real money.</p>
<p>Similarly, the guys at Smobile have identified real <a href="http://threatcenter.smobilesystems.com/wp-content/uploads/2010/03/Malware-in-the-Market-Whitepaper1.pdf" class="lipdf">spyware</a>, which actually fowards to another phone all the SMS&#8217;s sent and received from a given phone. This application actually describes itself as spyware (search for &#8220;spy&#8221; on Market, and you&#8217;ll find several). All the permissions is needs to do that are <code>SEND_SMS</code>, <code>RECEIVE_SMS</code>, and <code>INTERNET</code>. I am sure that you can do a few things using these permissions. When roaming, I could use a messaging application that uses Internet when available and reverts back to SMS when nothing else is available.</p>
<p>Enough of that. I think that Smobile is pointing at a real issue: once you authorize an Android application to do something (like sending SMS&#8217;s or recording audio), it can do it freely until uninstalled. Eventually, a smarter than average hacker will design a good Trojan horse and make some money.</p>
<p>The problem with these reports is that they mislead many people into believing that Android is full of malware. Of course, the reality is that the Android Market is full of apps that could be malware. They just aren&#8217;t.</p>
<p>I am a strong supporter of static code analysis, and I think that Android applications definitely are a good target for static analysis. However, the analysis must be much deeper that looking at the permissions requested by the application. For instance, identifying the numbers to which a SMS is sent is much more discriminating. If an application sends messages to a premium number without warning users, it is much closer to qualify as malware. Let&#8217;s get that working, and I am sure that we will learn interesting things.</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2010/06/28/android-malware-hype/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Should we sign malware?</title>
		<link>https://javacard.vetilles.com/2009/07/22/should-we-sign-malware/</link>
		<comments>https://javacard.vetilles.com/2009/07/22/should-we-sign-malware/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 16:25:24 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[Mobile Security]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[signature]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/?p=406</guid>
		<description><![CDATA[The distribution of mobile applications heavily relies on digital signatures. Applications must be signed before they are distributed. The problem with signatures is that we have often been warned that &#8220;we should not trust applications that have not been signed&#8221;. Although this is absolutely true, and although anybody who has followed a Logics 101 class [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>The distribution of mobile applications heavily relies on digital signatures. Applications must be signed before they are distributed. The problem with signatures is that we have often been warned that &#8220;we should not trust applications that have not been signed&#8221;. Although this is absolutely true, and although anybody who has followed a Logics 101 class knows that it does not say anything about signed applications, most end users tend to understand that &#8220;applications that have been signed can be trusted&#8221;. And of course, this is not true, at least not always.</p>
<p>There has been a case recently, in which a Symbian piece of malware <a href="http://news.cnet.com/8301-1009_3-10290212-83.html" class="liexternal">has been signed</a> by the Symbian Signed program. This case is rather sad, because it somehow gives arguments in favor of security by secrecy, obscurity, and proprietary measures. Symbian has a transparent process, in at least two ways:</p>
<ul>
<li>The antivirus tools used to scan the programs are known by all, which allows malware developers to make sure that their piece of code is not detected.</li>
<li>Symbian Signed is able to revoke signatures, but this revocation is managed in a way that allows users to ignore it.</li>
</ul>
<p>Of course, such problems don&#8217;t happen with obscure, proprietary programs. Apple doesn&#8217;t say anything about their application certification program, and they claim to have the ability to disable any application on any phone (at least as soon as it connects to iTunes or the application store).  Even Amazon has shown that they could unilaterally decide to recall a <a href="http://news.cnet.com/8301-13860_3-10289983-56.html" class="liexternal">fraudulous book</a>. Don&#8217;t get me wrong, I still largely prefer <a href="http://www.zdnetasia.com/insight/communications/0,39044835,62055731,00.htm" class="liexternal">open mobile solutions</a>, but closed systmes score one point here.</p>
<p>So, we get back to the original question: Should we sign malware?</p>
<p>And the answer is &#8230; yes, of course.<br />
<span id="more-406"></span></p>
<p>To justify this answer, we need to get back to the basics. What guarantees do we get through a signature?</p>
<ul>
<li>Some knowledge about the developer&#8217;s identity. In order to submit to most programs, including the Symbian Signed programs, you need to sign your own code with a certificate obtained against a proof of identity. Actually, that&#8217;s a part of the problem that nobody mentioned in the latest Symbian issue: how did the malware develoepr hide, and can we close the loophole?</li>
<li>Some knowledge about the fact that that the application follows some rules. This knowledge can be obtained through automated tools, like antivirus tools or static code analysis tools, or through a human analysis, like interactive testing or code review. Usually, the analysis is mostly automated, because human analysis is much more expensive (and by a lot, like 100 or 1000 times more expensive).</li>
</ul>
<p>These guarantees usually don&#8217;t mean that the application isn&#8217;t malware. Let&#8217;s consider may favorite example: how to make sure that an application does not dump use my Internet connection to spam my entire contact base? Well, in most cases, you can&#8217;t. You may be able to know through permission requests that this application needs to read your contacts and access Internet, but you will have no idea about the relationship between the two.</p>
<p>There is hope that, eventually, some tools will be available that will allow us to prove that an application is not malware (or at least that it does not do anything from a list of known bad things), but we are not there today.</p>
<p>Static analysis addresses a part of the problem: it allows developers to prove that their applications don&#8217;t violate a predefined set of rules. This sounds fine at first: the burden of proof belongs to the developer, which seems fair. However, the problem is in the rules. With today&#8217;s static analysis technology, if you want to prove that an application does not dump you contacts on Internet, you must basically prove that your application either uses Internet or uses contacts, but not both. At the research level, some people may even be able to prove that your contacts data can never get to Internet in any way. But what about real life?</p>
<p>In real life, if an application uses your contacts and Internet, they are also likely to send an e-mail to one of the contacts. In that case, part of the contact (the e-mail address) actually goes on Internet, and things become really, really hard to prove.</p>
<p>Now, is this problem impossible to solve? No, of course. However, the solution is hard to get to. The idea is here to design APIs so that they are more difficult to misuse; a direct consequence is that static analysis will work better, making it much simpler for developers to prove that the applications can&#8217;t do harm.</p>
<p>To get back to our example, one solution is to use a <code>sendMailToContact</code> API that starts an interaction (managed at system level) to select an e-mail address, and then sends a message to this address, without ever letting the application know about the address itself. Such an API addresses the needs of most applications, while making it very easy to prove that contacts aren&#8217;t dumped on Internet: the application does not actually access your contacts.</p>
<p>Of course, this will never work for all applications. If you want to replace the default contact management application on your Android device, you will have to allow this application to access directly your contacts, and also most likely to access Internet. In fact, you will even want this application to dump (backup) your contacts on Internet. But most importantly, you are quite likely to use an application that has been developed by a well-established company or community, and that you trust.</p>
<p>So, once again, as of today, we will most likely keep signing malware. However, when this happens, we should have of some person or some company to be held accountable for it. That&#8217;s what the signature processes bring to us.</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2009/07/22/should-we-sign-malware/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android&#8217;s definition of malware</title>
		<link>https://javacard.vetilles.com/2008/08/26/androids-definition-of-malware/</link>
		<comments>https://javacard.vetilles.com/2008/08/26/androids-definition-of-malware/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 19:30:53 +0000</pubDate>
		<dc:creator><![CDATA[Eric Vétillard]]></dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://javacard.vetilles.com/2008/08/26/androids-definition-of-malware/</guid>
		<description><![CDATA[Android is starting a security review, so there have been some communication about security. Among this communication, there is a Security FAQ, which includes a list of characteristics of malware. Here are a few comments on this list (the items are not in the original order). First, we have the obvious items. Any application doing [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Android is starting a security review, so there have been some communication about security. Among this communication, there is a <a href="http://code.google.com/android/kb/security.html" class="liexternal">Security FAQ</a>, which includes a list of characteristics of malware. Here are a few comments on this list (the items are not in the original order).</p>
<p>First, we have the obvious items. Any application doing any of these things obviously is malware, for Google, and for about anybody else:</p>
<ul>
<li>discloses the user&#8217;s private information to a third party, without the user&#8217;s knowledge and consent;</li>
<li>destroys the user&#8217;s data (or the device itself) without the user&#8217;s knowledge and consent;</li>
<li>attempts to automatically spread itself to other devices;</li>
</ul>
<p>Note the subtle distinction between an action that is performed <em>automatically</em> and an action that is performed <em>without the user&#8217;s knowledge and consent</em>. You can recommend an application to your friends, but your recommendation should not include the application itself.</p>
<p>The next one is just as obvious:</p>
<ul>
<li>impersonates the user (such as by sending email or buying things from a web store) without the user&#8217;s knowledge and consent;</li>
</ul>
<p>This definition of impersonation is very Internet-oriented. However, since there is no rule about &#8220;performing actions that incur a cost to the end user&#8221; such as calling a premium number or sending a SMS, I would say that this has to fall into this rule. If you combine that with the permission model that only provides &#8220;blanket&#8221; permissions at installation time, there is room for a lot of abuse here, or at least for spurious wording from applications that send premium SMS messages.</p>
<p>Next, we have an issue that is specific to mobile devices:</p>
<ul>
<li>drains the device&#8217;s battery very quickly;</li>
</ul>
<p>This one shows how thin the boundary is between buggy software and malware. I am sure that a few games will be labeled as malware on this rule, just because they try a bit too hard to be reactive or to otherwise enhance the user experience.</p>
<p>Another category rules out some irritating behavior from Android applications:</p>
<ul>
<li>shows the user unsolicited messages (especially messages urging the user to buy something);</li>
<li>resists (or attempts to resist) the user&#8217;s effort to uninstall it;</li>
<li>hides its files and/or processes;</li>
</ul>
<p>The first one is quite surprising from a company that lives on advertising, as it somehow rules out any application that performs heavy-handed advertising. Shareware may also be difficult there. The second rule seems to be targeted against Symantec and other security software, and the last one is interesting in many cases.</p>
<p>The last item is the typical catch-all sentence. In that particular case, it goes quite far in being overly broad:</p>
<ul>
<li>otherwise degrades the user&#8217;s experience with the device.</li>
</ul>
<p>Now, what is missing? Not much, in fact, because the definitions are very general. I would like to see an explicit mention of &#8220;incurring cost&#8221;, as well as about attempts to perform unauthorized operations. We would also need the definition of &#8220;private information&#8221;; for instance, the status of location information may need some clarification. But still, it is interesting to get that definition of malware.</p>
]]></content:encoded>
			<wfw:commentRss>https://javacard.vetilles.com/2008/08/26/androids-definition-of-malware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
