<?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>Technology Blog &#187; aplicatie</title>
	<atom:link href="http://ro.m-sec.net/tag/aplicatie/feed/" rel="self" type="application/rss+xml" />
	<link>http://ro.m-sec.net</link>
	<description>Omul este cel mai extraordinar computer</description>
	<lastBuildDate>Sat, 18 Jul 2015 10:45:40 +0000</lastBuildDate>
	<language>ro-RO</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Securitatea aplicatiilor mobile (II): Stirile ProTV</title>
		<link>http://ro.m-sec.net/2012/06/securitatea-aplicatiilor-mobile-ii-stirile-protv/</link>
		<comments>http://ro.m-sec.net/2012/06/securitatea-aplicatiilor-mobile-ii-stirile-protv/#comments</comments>
		<pubDate>Mon, 04 Jun 2012 19:03:51 +0000</pubDate>
		<dc:creator><![CDATA[Bogdan Alecu]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Securitate]]></category>
		<category><![CDATA[aplicatie]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[protv]]></category>

		<guid isPermaLink="false">http://ro.m-sec.net/?p=455</guid>
		<description><![CDATA[În această săptămână vom discuta, conform voturilor, despre cât de sigură este aplicaţia Ştirile ProTV disponibila pe Google Play. Funcţionarea este simplă: după instalare sunt prezentate ultimele ştiri ce pot fi citite în totalitate. În plus se poate face share pe Facebook la o anumită ştire. Ca şi permisiuni cerute, acestea sunt: Hardware controls change<a href="http://ro.m-sec.net/2012/06/securitatea-aplicatiilor-mobile-ii-stirile-protv/"> <br /><br /> (Read More...)</a>]]></description>
				<content:encoded><![CDATA[<p>În această săptămână vom discuta, conform voturilor, despre cât de sigură este aplicaţia Ştirile ProTV <a title="Stirile ProTV Android" href="https://play.google.com/store/apps/details?id=com.cme.newsreader.stirileprotv.ro" target="_blank">disponibila pe Google Play</a>.</p>
<p>Funcţionarea este simplă: după instalare sunt prezentate ultimele ştiri ce pot fi citite în totalitate. În plus se poate face share pe Facebook la o anumită ştire.</p>
<p>Ca şi permisiuni cerute, acestea sunt:</p>
<blockquote><p>Hardware controls<br />
change your audio settings<br />
Allows the app to modify global audio settings such as volume and routing.</p>
<p>take pictures and videos<br />
Allows the app to take pictures and videos with the camera. This allows the app at any time to collect images the camera is seeing.</p>
<p>record audio<br />
Allows the app to access the audio record path.</p>
<p>Network communication<br />
full Internet access<br />
Allows the app to create network sockets.</p>
<p>Storage<br />
modify/delete USB storage contents modify/delete SD card contents<br />
Allows the app to write to the USB storage. Allows the app to write to the SD card.</p>
<p>Network communication<br />
view network state<br />
Allows the app to view the state of all networks.</p></blockquote>
<p>Permisiunile pentru audio si video sunt cerute pentru a putea raporta o ştire interesantă direct din aplicaţie.</p>
<p>Analizând codul, încă de la iniţializarea aplicaţiei se face o raportare către Google Analytics cu următoarele informaţii:</p>
<ul>
<li> versiunea aplicaţiei</li>
<li>modelul dispozitivului</li>
<li>numele sistemului (ex HTC Legend Build/<em>FRF91</em>)</li>
<li>versiunea de Android</li>
<li>sistemul folosit</li>
</ul>
<blockquote><p>      localGoogleAnalyticsTracker.setCustomVar(1, &#8222;appVersion&#8221;, str1, 2);<br />
localGoogleAnalyticsTracker.setCustomVar(2, &#8222;deviceModel&#8221;, str2, 2);<br />
localGoogleAnalyticsTracker.setCustomVar(3, &#8222;systemName&#8221;, str3, 2);<br />
localGoogleAnalyticsTracker.setCustomVar(4, &#8222;systemVersion&#8221;, str4, 2);<br />
localGoogleAnalyticsTracker.setCustomVar(5, &#8222;system&#8221;, str5, 2);</p></blockquote>
<p>Totodată se verifică şi dacă sunteţi logaţi pe Facebook</p>
<blockquote><p> public static boolean isFacebookSignedIn(Activity paramActivity)<br />
{<br />
return getApplication(paramActivity).getFacebook().isSessionValid();<br />
}</p></blockquote>
<p>Pentru a funcţiona cu Facebook, aplicaţia are nevoie de o semnătură specifică: Facebook requires an additional layer of security for mobile apps in the form of an application signature. You need to put your Android application signature into your Facebook app settings. ( <a title="Facebook signature" href="https://developers.facebook.com/docs/mobile/android/build/#sig" target="_blank">de aici</a>)</p>
<p>Nu prea cred totuşi că e chiar ok ca această semnătură să fie pusă hardcoded:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/app-signature.png"><img class="alignnone size-medium wp-image-456" title="app-signature" src="http://ro.m-sec.net/wp-content/uploads/2012/06/app-signature-300x83.png" alt="" width="300" height="83" /></a></p>
<p>Un alt aspect ce trbeuie menţionat la partea de cod e acela că, în cazul unei întreruperi a aplicaţiei din motive necunoscute, se generează un fişier de crash report în care sunt incluse o mulţime de elemente (tipul telefonului, loguri de comunicaţie ale telefonului cu reţeaua, un dump al memoriei, etc). În general nu vă recomand să trimiteţi aceste rapoarte întrucât dezvăluie multe date personale.</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/crash-report.png"><img class="alignnone size-medium wp-image-457" title="crash-report" src="http://ro.m-sec.net/wp-content/uploads/2012/06/crash-report-280x300.png" alt="" width="280" height="300" /></a></p>
<p>Şi am ajuns la a vedea ce date sunt transmise. Aşa cum spuneam şi la început sunt transmise mai multe detalii despre telefon către Google Analytics:</p>
<blockquote><p>GET /__utm.gif?utmwv=4.8.1ma&amp;utmn=1204257584&amp;utme=8(1!appVersion*2!deviceModel*3!systemName*4!systemVersion*5!system)9(1!13%20%281.0.12%29*2!sdk*3!FRF91*4!2.2*5!sdk%20FRF91%202.2)11(1!2*2!2*3!2*4!2*5!2)&amp;utmcs=UTF-8&amp;utmsr=320&#215;480&amp;utmul=en-US&amp;utmp=%2Fstart&amp;utmac=UA-22957839-16&amp;utmcc=__utma%3D1.1063077146.1338827469.1338827469.1338827469.1%3B&amp;utmht=1338827469663&amp;utmqt=9896 HTTP/1.1<br />
Host: www.google-analytics.com<br />
User-Agent: GoogleAnalytics/1.4.1 (Linux; U; Android 2.2; en-us; sdk Build/FRF91)</p>
<p>GET /__utm.gif?utmwv=4.8.1ma&amp;utmn=1146252714&amp;utmcs=UTF-8&amp;utmsr=320&#215;480&amp;utmul=en-US&amp;utmp=%2Farticles%2Fheadlines&amp;utmac=UA-22957839-16&amp;utmcc=__utma%3D1.1063077146.1338827469.1338827469.1338827469.1%3B&amp;utmht=1338827471086&amp;utmqt=8696 HTTP/1.1<br />
Host: www.google-analytics.com<br />
User-Agent: GoogleAnalytics/1.4.1 (Linux; U; Android 2.2; en-us; sdk Build/FRF91)</p></blockquote>
<p>Sunt luate şi stirile de pe protv, precum şi ceva reclame:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/cerere-stiri.png"><img class="alignnone size-medium wp-image-458" title="cerere-stiri" src="http://ro.m-sec.net/wp-content/uploads/2012/06/cerere-stiri-300x48.png" alt="" width="300" height="48" /></a></p>
<p>Bineînţeles că nimeni nu-i obligă să trimită toate informaţiile astea, însă acesta e preţul plătit de utilizator pentru o aplicaţie gratuită.</p>
<p>Cererile către Facebook sunt făcute în mod securizat, pe HTTPS, deci nu am ce reporoşa la această parte. Problema apare când analizăm ce fişiere sunt stocate.</p>
<p>Sunt create mai multe baze de date SQLite, localizate în <strong>/data/data/com.cme.newsreader.stirileprotv.ro/databases</strong>. Acestea sunt: <em>webviewCache.db, webview.db, google_analytics.db</em></p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/databases-files1.png"><img class="alignnone size-medium wp-image-461" title="databases-files" src="http://ro.m-sec.net/wp-content/uploads/2012/06/databases-files1-300x219.png" alt="" width="300" height="219" /></a></p>
<p>Un lucru pe care nu l-am spus în articolul anterior şi e important de reţinut e acela că aceste fişiere nu sunt accesibile decât aplicaţiei. Pentru a avea acces la ele trebuie permisiuni de root. De ce e important să analizăm şi ce anume se stochează? Simplu: în cazul în care ne pierdem telefonul, vom pierde şi datele stocate de către aplicaţiile folosite de noi, iar asta se poate traduce în locaţii GPS, conturi, username, parolă. Din moment ce telefonul nu mai e în posesia noastră, a obţine drepturi de root de către o altă persoane e doar o chestie de căutare pe Google. Tocmai din acest motiv e important ca aplicaţiile să stocheze datele într-un mod cât mai sigur.</p>
<p>Dar să revenim la bazele de date.  În google_analytics.db găsim aceleaşi date de care menţionam anterior, însă în webview.db &#8211; jackpot!</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/webview-cookies.png"><img class="alignnone size-medium wp-image-462" title="webview-cookies" src="http://ro.m-sec.net/wp-content/uploads/2012/06/webview-cookies-300x75.png" alt="" width="300" height="75" /></a></p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/webview-formdata.png"><img class="alignnone size-medium wp-image-463" title="webview-formdata" src="http://ro.m-sec.net/wp-content/uploads/2012/06/webview-formdata-300x38.png" alt="" width="300" height="38" /></a></p>
<p>Sunt cookie-urile folosite pentru Facebook şi pe baza cărora aplicaţia verifică dacă suntem sau nu logaţi. Este îndeajuns să le transferăm pe PC şi deja suntem conectaţi pe contul acelei persoane, fără a mai fi necesară introducerea de user şi parolă. Mai mult, e stocată chiar şi adresa de email folosită la conectarea pe Facebook.</p>
<p>În webviewCache.db sunt stocate toate link-urile accesate prin Facebook pentru a face share la o anumită ştire</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/06/webviewCache-cache.png"><img class="alignnone size-medium wp-image-464" title="webviewCache-cache" src="http://ro.m-sec.net/wp-content/uploads/2012/06/webviewCache-cache-300x124.png" alt="" width="300" height="124" /></a></p>
<p>După cum se vede, informaţiile sunt stocate ca atare, în clar, fără a folosi vreun algoritm de criptare.</p>
<p>Ceea ce părea a fi o banală aplicaţie de citit ştiri s-a dovedit a fi mult mai nesigură decât credeam. Data viitoare voi analiza aplicaţia Hotnews.</p>
]]></content:encoded>
			<wfw:commentRss>http://ro.m-sec.net/2012/06/securitatea-aplicatiilor-mobile-ii-stirile-protv/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Securitatea aplicatiilor mobile (I): Speed Taxi</title>
		<link>http://ro.m-sec.net/2012/05/securitatea-aplicatiilor-mobile-i-speed-taxi/</link>
		<comments>http://ro.m-sec.net/2012/05/securitatea-aplicatiilor-mobile-i-speed-taxi/#comments</comments>
		<pubDate>Thu, 24 May 2012 17:56:13 +0000</pubDate>
		<dc:creator><![CDATA[Bogdan Alecu]]></dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Securitate]]></category>
		<category><![CDATA[aplicatie]]></category>
		<category><![CDATA[device ID]]></category>
		<category><![CDATA[IMEI]]></category>
		<category><![CDATA[speedtaxi]]></category>

		<guid isPermaLink="false">http://ro.m-sec.net/?p=413</guid>
		<description><![CDATA[Săptămâna trecută am pus pe Facebook un screenshot privind modul în care a fost scrisă o aplicaţie disponibilă pe Google Market şi venisem cu ideea de a publica săptămânal câte un articol în care să fac o analiză asupra securităţii pentru o aplicaţie românească. Deşi nu a fost susţinută de un număr mare de persoane,<a href="http://ro.m-sec.net/2012/05/securitatea-aplicatiilor-mobile-i-speed-taxi/"> <br /><br /> (Read More...)</a>]]></description>
				<content:encoded><![CDATA[<p>Săptămâna trecută am pus pe Facebook un screenshot privind modul în care a fost scrisă o aplicaţie disponibilă pe Google Market şi venisem cu ideea de a publica săptămânal câte un articol în care să fac o analiză asupra securităţii pentru o aplicaţie românească. Deşi nu a fost susţinută de un număr mare de persoane, am zis să încerc un prim articol pentru a vedea totuşi cum merg lucrurile.</p>
<p>Aşadar, în funcţie de câţi doritori se vor arăta, voi continua seria săptămânală cu aceste articole. Ca pentru un prim articol, am decis să încep cu o aplicaţie care nu ar trebui să aibă un impact aşa mare asupra utilizatorilor. Ce date sensibile poate trimite o aplicaţie care te ajută să comanzi un taxi? Ei bine, după ce am analizat aplicaţia, se pare că există totuşi motive de îngrijorare.</p>
<p>Modul de funcţionare poate fi cel mai bine exprimat prin imagini:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt1.png"><img class=" wp-image-431 alignnone" title="speedt1" src="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt1.png" alt="" width="251" height="354" /></a>  <a href="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt2.png"><img class="alignnone size-medium wp-image-432" title="speedt2" src="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt2-212x300.png" alt="" width="212" height="300" /></a></p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt3.png"><img class="alignnone size-medium wp-image-433" title="speedt3" src="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt3-214x300.png" alt="" width="214" height="300" /></a>    <a href="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt4.png"><img class="alignnone size-medium wp-image-434" title="speedt4" src="http://ro.m-sec.net/wp-content/uploads/2012/05/speedt4-212x300.png" alt="" width="212" height="300" /></a></p>
<p>O aplicaţie pentru smartphone, ce comunică folosind Internetul, diferă de modul de testare a unei aplicaţii web. În primul rând, putem analiza ce fişiere sunt create în timpul înstalării şi al utilizării &#8211; cum stochează informaţiile? sunt criptate? Apoi putem testa partea de validare a informaţiilor, logica funcţionării şi, în ultimul rând, dacă schimbul de informaţii dintre aplicaţie şi server se realizează în mod securizat.</p>
<p>Aşadar, despre fişierele create. În timpul utilizării am salvat locaţia unde am biroul virtual şi apoi am plasat o comandă. Câteva fişiere au fost create pe parcursul acestui proces:</p>
<blockquote><p>/data/data/ro.mobiessence.android.clevertaxi.speedtaxi/files/DATA_Tiles_3<br />
/data/data/ro.mobiessence.android.clevertaxi.speedtaxi/files/DATA_Tiles_4<br />
data/data/ro.mobiessence.android.clevertaxi.speedtaxi/files<br />
/data/data/ro.mobiessence.android.clevertaxi.speedtaxi/shared_prefs<br />
/data/data/ro.mobiessence.android.clevertaxi.speedtaxi/shared_prefs/settings.xml</p></blockquote>
<p>&nbsp;</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/accessed_created_files.png"><img class="alignnone size-medium wp-image-427" title="accessed_created_files" src="http://ro.m-sec.net/wp-content/uploads/2012/05/accessed_created_files-300x92.png" alt="" width="300" height="92" /></a></p>
<p>Oare ce o fi în settings.xml?</p>
<p>shell@android:/data/data/ro.mobiessence.android.clevertaxi.speedtaxi/shared_pref<br />
s # cat settings.xml<br />
cat settings.xml<br />
&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; standalone=&#8217;yes&#8217; ?&gt;<br />
&lt;map&gt;<br />
&lt;string name=&#8221;opt5&#8243;&gt;&lt;/string&gt;<br />
<strong>&lt;string name=&#8221;lastName&#8221;&gt;Popescu&lt;/string&gt;</strong><br />
&lt;string name=&#8221;opt6&#8243;&gt;&lt;/string&gt;<br />
<strong>&lt;string name=&#8221;phone&#8221;&gt;1234567&lt;/string&gt;</strong><br />
&lt;string name=&#8221;opt3&#8243;&gt;&lt;/string&gt;<br />
&lt;string name=&#8221;opt4&#8243;&gt;&lt;/string&gt;<br />
&lt;string name=&#8221;opt9&#8243;&gt;&lt;/string&gt;<br />
&lt;string name=&#8221;opt7&#8243;&gt;&lt;/string&gt;<br />
&lt;string name=&#8221;opt8&#8243;&gt;&lt;/string&gt;<br />
&lt;boolean name=&#8221;showMapPositionInfo&#8221; value=&#8221;false&#8221; /&gt;<br />
<strong>&lt;string name=&#8221;email&#8221;&gt;ion@popescu.ro&lt;/string&gt;</strong><br />
&lt;string name=&#8221;firstName&#8221;&gt;Ion&lt;/string&gt;<br />
&lt;string name=&#8221;opt2&#8243;&gt;&lt;/string&gt;<br />
&lt;string name=&#8221;<strong>myAddresses</strong>&#8222;&gt;[{&amp;quot;gps_lng&amp;quot;:<strong>26.145351</strong>,&amp;quot;localityName&amp;qu<br />
ot;:&amp;quot;Bucure╚Öti&amp;quot;,&amp;quot;building&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;gps_lat&amp;quot;<br />
:<strong>44.43555</strong>,&amp;quot;street&amp;quot;:&amp;quot;<strong>Strada Maior Ion Coravu</strong>&amp;quot;,&amp;quot;name&amp;quot<br />
;:&amp;quot;<strong>Birou</strong>&amp;quot;,&amp;quot;address_details&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;streetNo&amp;quot<br />
;:&amp;quot;<strong>5</strong>&amp;quot;,&amp;quot;entrance&amp;quot;:&amp;quot;&amp;quot;}]&lt;/string&gt;<br />
&lt;string name=&#8221;opt1&#8243;&gt;&lt;/string&gt;<br />
&lt;/map&gt;</p>
<p>Interesant, deci adresa din comandă e stocată aici, dar şi adresa(le) salvată de mine cu denumirea &#8222;Birou&#8221;. Totul plain text, bineînţeles.</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/settings-file.png"><img class="alignnone size-medium wp-image-428" title="settings-file" src="http://ro.m-sec.net/wp-content/uploads/2012/05/settings-file-300x173.png" alt="" width="300" height="173" /></a></p>
<p>Acum să trecem la partea de cod &#8211; ce se ascunde în spatele aplicaţiei? Pentru început, permisiunile necesare care sunt multe şi cer acces la o groază de lucruri.</p>
<blockquote><p>Your location<br />
coarse (network-based) location<br />
fine (GPS) location</p>
<p>Network communication<br />
full Internet access</p>
<p>Your personal information<br />
read contact data</p>
<p>Phone calls<br />
read phone state and identity</p>
<p>System tools<br />
prevent tablet from sleeping prevent phone from sleeping<br />
modify global system settings</p>
<p>Your accounts<br />
discover known accounts</p>
<p>Hardware controls<br />
control vibrator</p>
<p>Network communication<br />
view network state</p></blockquote>
<p>Pentru ce naiba sunt necesare atâtea permisiuni pentru o simplă aplicaţie de comandă a unui taxi nu pot înţelege. Cele de mai sus se găsesc şi în fişierul manifest, aşa cum e normal:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/manifest.png"><img class="alignnone size-medium wp-image-429" title="manifest" src="http://ro.m-sec.net/wp-content/uploads/2012/05/manifest-300x151.png" alt="" width="300" height="151" /></a></p>
<p>La partea de cod recunosc că nu am destule cunoştinţe pentru a spune dacă este bun sau nu, însă în mare mi-am format o idee. Parcurgând clasele, mi-a sărit în ochi următoarea parte de cod:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/app-code.png"><img class="alignnone size-medium wp-image-430" title="app-code" src="http://ro.m-sec.net/wp-content/uploads/2012/05/app-code-300x214.png" alt="" width="300" height="214" /></a></p>
<p>Cum adică IMEI? De ce ai tu, ca şi companie, nevoie de IMEI-ul telefonului? Dar să vedem mai departe&#8230;</p>
<p>Pe partea de comunicaţie încep prin a spune că aceasta se face total necriptat şi nesecurizat. Aşa cum menţionam anterior, se pare că aplicaţia ia şi codul IMEI al telefonului, însă nu înseamnă neapărat că îl şi transmite. Pentru a verifica acest lucru, aplicaţia am pus-o într-un emulator cu drepturi de root, deci nu are un dispozitiv GPS de care se poate folosi pentru a transmite locaţia.</p>
<p>Dacă se doreşte setarea unei anumite locaţii, aceasta se poate face făcând telnet pe host-ul şi portul emulatorului, după care se dă comanda</p>
<blockquote><p>geo fix 44.445818 26.097261<br />
OK</p></blockquote>
<p>Astfel am putut ajunge la ecranul de iniţiere al comenzii pentru un taxi. Am selectat o stradă oarecare din Bucureşti (Vasile Alecsandri în cazul meu) şi am plasat comanda. Alte detalii cerute au fost numele, prenumele, numărul de telefon, adresa de email (opţional, dar detectată automat dacă e pus un cont Google), nr străzii. După un timp de aşteptare a venit şi răspunsul prin care eram anunţat că o maşină va sosi. Din păcate aplicaţia crapă la primirea răspunsului, însa acest lucru se datorează faptului că rulează pe emulator.</p>
<p>Ce s-a văzut pe partea de comunicaţii e şi mai interesant. În primul rând, traficul făcut către Google maps pentru alegerea locaţiei:</p>
<blockquote><p>POST /glm/mmap/a HTTP/1.1<br />
Connection: close<br />
Content-Type: application/binary<br />
Content-Length: 246<br />
Host: www.google.com<br />
User-Agent: GMM/3.0 (generic FRF91); gzip</p>
<p>l&gt;oen_USandroid:generic-generic-sdk1.6gmm-unknown&gt;<br />
484*2ro.mobiessence.android.clevertaxi.core.MapPosition&#8217;0ZZHmFlvayvSoFQMRT9YYJSmpU2MCZTefLJ8A7w 3c89da0d4bcf25309dd0cb0592b07628db7d646fd19395a%I</p>
<p>GET /maps/geo?q=44.450539,26.093816&amp;output=json&amp;sensor=false HTTP/1.1<br />
Host: maps.google.com<br />
Connection: Keep-Alive<br />
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)</p>
<p>HTTP/1.1 200 OK<br />
Content-Type: text/javascript; charset=UTF-8<br />
Vary: Accept-Language<br />
Date: Sun, 20 May 2012 11:32:50 GMT<br />
Server: mafe<br />
Cache-Control: private<br />
X-XSS-Protection: 1; mode=block<br />
X-Frame-Options: SAMEORIGIN<br />
Transfer-Encoding: chunked</p>
<p>34e<br />
{<br />
&#8222;name&#8221;: &#8222;44.44982,26.09424&#8221;,<br />
&#8222;Status&#8221;: {<br />
&#8222;code&#8221;: 200,<br />
&#8222;request&#8221;: &#8222;geocode&#8221;<br />
},<br />
&#8222;Placemark&#8221;: [ {<br />
&#8222;id&#8221;: &#8222;p1&#8243;,<br />
&#8222;address&#8221;: &#8222;Strada Vasile Alecsandri, Bucharest, Romania&#8221;,<br />
&#8222;AddressDetails&#8221;: {<br />
&#8222;Accuracy&#8221; : 6,<br />
&#8222;Country&#8221; : {<br />
&#8222;CountryName&#8221; : &#8222;Romania&#8221;,<br />
&#8222;CountryNameCode&#8221; : &#8222;RO&#8221;,<br />
&#8222;Locality&#8221; : {<br />
&#8222;DependentLocality&#8221; : {<br />
&#8222;DependentLocalityName&#8221; : &#8222;Sector 1&#8243;,<br />
&#8222;Thoroughfare&#8221; : {<br />
&#8222;ThoroughfareName&#8221; : &#8222;Strada Vasile Alecsandri&#8221;<br />
}<br />
},<br />
&#8222;LocalityName&#8221; : &#8222;Bucharest&#8221;<br />
}<br />
}<br />
},<br />
&#8222;ExtendedData&#8221;: {<br />
&#8222;LatLonBox&#8221;: {<br />
&#8222;north&#8221;: 44.4516889,<br />
&#8222;south&#8221;: 44.4489910,<br />
&#8222;east&#8221;: 26.0956247,<br />
&#8222;west&#8221;: 26.0929267<br />
}<br />
},<br />
&#8222;Point&#8221;: {<br />
&#8222;coordinates&#8221;: [ 26.0942727, 44.4503400, 0 ]<br />
}<br />
} ]<br />
}</p>
<p>0</p></blockquote>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/maps-selection.png"><img class="alignnone size-medium wp-image-419" title="maps-selection" src="http://ro.m-sec.net/wp-content/uploads/2012/05/maps-selection-300x219.png" alt="" width="300" height="219" /></a></p>
<p>După setarea poziţiei pe hartă şi completarea celorlalte date, am iniţiat comanda. În acest moment se face o cerere plaintext către un server general, pe portul 5454, în care se transmit mai multe informaţii:</p>
<p>&#8211; nume, prenume<br />
&#8211; număr telefon<br />
&#8211; <strong>codul IMEI al telefonului (!!!)</strong><br />
&#8211; acurateţea poziţionării, latitudine, longitudine, localitate, stradă<br />
&#8211; adresa email<br />
&#8211; compania de taxi pentur care s-a făcut cererea<br />
&#8211; <strong>ID-ul unic al dispozitivului</strong><br />
&#8211; data,ora comenzii</p>
<p>În format brut, aşa arată informaţia cerută</p>
<p>{&#8222;data&#8221;:{&#8222;order&#8221;:{&#8222;lname&#8221;:&#8221;Popescu&#8221;,&#8221;no_cars&#8221;:1,&#8221;tel&#8221;:&#8221;12345678&#8243;,&#8221;<strong>imei</strong>&#8222;:&#8221;000000000000000&#8243;,&#8221;versioncode&#8221;:&#8221;4&#8243;,&#8221;networklocation&#8221;:{&#8222;<strong>accuracy</strong>&#8222;:&#8221;0.0&#8243;,&#8221;lng&#8221;:&#8221;44.445816&#8243;,&#8221;lat&#8221;:&#8221;26.09726&#8243;},&#8221;timestamp&#8221;:1337512997867,&#8221;source&#8221;:&#8221;android&#8221;,&#8221;details&#8221;:&#8221;&#8221;,&#8221;email&#8221;:&#8221;&#8221;,&#8221;token&#8221;:&#8221;3007e861b1823e13fbd2c6afc3539c7f&#8221;,&#8221;address&#8221;:&#8221;Strada Vasile Alecsandri 3, Bucharest&#8221;,&#8221;company&#8221;:{&#8222;id&#8221;:&#8221;3&#8243;,&#8221;<strong>name</strong>&#8222;:&#8221;Speed Taxi&#8221;},&#8221;gps&#8221;:{&#8222;lng&#8221;:&#8221;26.09424&#8243;,&#8221;lat&#8221;:&#8221;44.44982&#8243;},&#8221;fname&#8221;:&#8221;Ionel&#8221;,&#8221;<strong>deviceId</strong>&#8222;:&#8221;9774d56d682e549c&#8221;}},&#8221;status&#8221;:&#8221;success&#8221;}</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/cerere-comanda.png"><img class="alignnone size-medium wp-image-418" title="cerere-comanda" src="http://ro.m-sec.net/wp-content/uploads/2012/05/cerere-comanda-300x105.png" alt="" width="300" height="105" /></a></p>
<p>De ce este nevoie să transmită codul IMEI şi deviceID nu înţeleg. O posibilă explicaţie ar fi pentru a preveni comenzile făcute abuziv de la un anumit dispozitiv, dar chiar şi aşa sunt prea multe date transmise, mai ales că se trimit nesecurizat. Apple a început să refuze aplicaţiile care cer acest identificator unic &#8211; <a title="Apple UDID" href="http://lifehacker.com/5898282/what-a-udid-is-and-why-apples-rejecting-apps-that-want-yours" target="_blank">vezi aici</a>.</p>
<p>Faptul că se specifică şi numele companiei de taxi în pachetul transmis mă face să cred că de fapt datele ajung mai întâi la un terţ, abia apoi fiind transmise către compania ce va onora comanda. Am găsit această aplicaţie, desigur cu datele de identificare schimbate şi pentru alte companii de taxi din Bucureşti iar aplicaţia e făcută de aceeaşi firmă în toate cazurile.</p>
<p>Observaţi număr pus de mine &#8211; 12345678 &#8211; aşa că nu aveam aşteptări prea mari să şi primesc comanda. În plus, dacă vă uitaţi atent vedeţi şi faptul că acurateţea e zero, deci e aproape sigur faptul că poziţionarea pe hartă am făcut-o manual. Dar asta deja ţine de logic flaw. Cu toate acestea, după un timp de aşteptare de aprox 1 minut, a venit şi răspunsul de la server:</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/onorare-comanda.png"><img class="alignnone size-medium wp-image-417" title="onorare-comanda" src="http://ro.m-sec.net/wp-content/uploads/2012/05/onorare-comanda-300x82.png" alt="" width="300" height="82" /></a></p>
<p>Comanda a fost onorată cu succes şi urmează să ajungă în 3 minute maşina cu indicativul 139. Îmi cer scuze pentru comanda falsă &#8211; promit să mai fac <img src="http://ro.m-sec.net/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Singura protecţie întâlnită a fost cea prin care se verifică localitatea, răspunsul primit fiind &#8222;You are out of accepted area&#8221;.</p>
<p><a href="http://ro.m-sec.net/wp-content/uploads/2012/05/neonorare-comanda.png"><img class="size-medium wp-image-416 alignnone" title="neonorare-comanda" src="http://ro.m-sec.net/wp-content/uploads/2012/05/neonorare-comanda-300x96.png" alt="" width="300" height="96" /></a></p>
<p>&nbsp;</p>
<p><strong>Concluzii</strong></p>
<p>Eu unul nu voi mai folosi această aplicaţie, atât din cauza informaţiilor transmise, dar şi pentru că am vrut să fac o comandă la un moment dat şi mi-a cerut numărul străzii &#8211; păi dacă îl ştiam mai apelam la o astfel de aplicaţie?</p>
<p>Aştept feedback pentru a vedea dacă sunteţi interesaţi să testez şi alte aplicaţii româneşti.</p>
<p>Ah şi încă ceva: dacă cineva e dispus să doneze un iPhone (preferabil ultima versiune) voi testa şi aplicaţiile pentru iOS <img src="http://ro.m-sec.net/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ro.m-sec.net/2012/05/securitatea-aplicatiilor-mobile-i-speed-taxi/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
