Sunday, December 13, 2020

The Hyderabadi Biryani Problem

 Everyone says Hyderabadi Biryani is amazing but if you say you didn't like the Hyderabadi Biryani you tried, they will ask you which restaurant you tried it at and then the inevitable answer will be "Oh, that one isn't good, you should try it at XYZ Biryani House" and so on till infinity. There is ALWAYS a restaurant where the biryani is better than the one you didn't like.


Saturday, October 03, 2020

Stumbled upon another security hole at a well know Indian company's website that is leaking their customer's sensitive personal information

 I've stumbled upon another security hole at a well know Indian company's website that is leaking their customer's sensitive information.

Just like the Myntra security hole that I found a long time ago (which resulted in them setting up their Responsible Disclosure Policy), this hole too is just something I stumbled upon while using their website regularly. I didn't have to do anything special that a regular user wouldn't do and there is no "hack" involved. It simply seems to be a case of bad implementation or a bug that anyone with a decent technical background can easily recognize and take advantage of.

My Myntra report was in Dec 2013 and in the 7 years since, nothing much has changed with Indian companies taking security seriously or even setting up a basic responsible disclosure policy 😔.

For now I've sent an email to security@ their website address which thankfully didn't bounce and I've also messaged them on a few of their social accounts. Will wait for them to respond and give them time to fix it before publishing more details.

Update (Oct 5, 2020): emails to security@ their website bounced after 24 hrs 😔

Pic source: https://www.needpix.com/photo/download/929205/key-hole-eye-by-looking-spy-spying-on-watch-burglary-burglar-privacy-policy


Tuesday, September 24, 2019

Skinners are my new favorite minimalist footwear


8 years (March 2011) and 5 pairs (2 Classics, 1 Sprint, 1 KSO and 1 KSO EVO) of Vibram Five Fingers (VFF), 5 years (August 2014) and 4 pairs (1 Sensori Venture, 1 Amuri Venture, 1 Amuri Cloud, 1 Amuri Z-Trek) of Xero Shoes, and 2 years and 2 pairs for Skinners later, Skinners are my new favorite minimalist footwear. Here's why.


Skinners on a trek passing through streams, slippery and sharp rocks, pebbles, gravel and the works.


Even though I got my first pair of Skinners back in July 2017 (I was one of the original backers of their Kickstarter back in June 2017) I didn't use them much primarily because, as a long time VFF user, my toes felt very constrained in them (like in a regular shoe). I ended up using it as a backup shoe (in case the VFFs and Xeros give up on me, which they have) for my travels because it's super compact and easy to pack. So they were stored away ready to be used in case of emergencies, which basically meant I didn't use them much.

A couple of months ago, when the nylon lace on my Xero Venture tore during a trek, I had to use my Skinners and really loved it. The trek was during the rains, with slippery and sharp rocks, pebbles, gravel and the works, and I really loved how Skinners felt. Having tried that same trek earlier, completely barefoot (only for a short distance and ended up with bruises on my feet), I really appreciated the minimal yet right amount of protection the Skinners provided. I was hooked.

I needed the same feel as Skinners and started looking around again to see if I could find alternatives that wouldn't constrain my toes and stumbled upon suggestions to try Skinners one-size bigger than your normal shoe size (especially if you have wide feet, which mine are and have become even more wider after I gave up on regular footwear). So I decided to give it a shot and ordered another pair of Skinners, this time, one-size bigger than my normal shoe size.

Having used them through most of the monsoon season here in Mumbai and for a variety of purposes including trekking, I can now say Skinner are my new favorite minimalist footwear.

While the reasons why you would like one over the other will be different for everyone, here are my reasons for why I prefer them over VFFs and Xeros:

  • Skinners have the most minimalist sole of the lot offering more connection and feedback from the ground.
  • I prefer minimalist footwear that cover my feet because it keeps my feet clean which is important to me because otherwise they get dry and crack when exposed to dust and the elements. Both VFFs and Skinners satisfy this criteria. When it comes to small puddles, I think Skinners do a better job as the water-resistant sole wraps around till the top and offers more protection (I used to get water seeping in on the VFFs where the sole meets the upper).

The wrap around water-resistant sole is perfect for small puddles.

  • Wraparound footwear also feels more minimal to me in the sense that I can use my feet naturally without having multiple elements of  the footwear get in the way like they do with the Xeros (had a few close calls while driving because the soles would get in the way and get stuck sometimes on pedal or mat).
  • Except for my first few pair of Vibram Five Fingers (Classic, Sprint and the orignal KSO) each of which lasted me over 4 years, my experience with the newer VFFs (especially the KSO EVO) hasn't been very good when it comes to durability. I've had a similar experience with Xeros. Since Skinners don't have glues or seams it looks like they'll last longer as there are no parts that can fall apart. The sole can still get worn out and the upper can possibly tear but I'll have to see how they hold up.

The hole that the lace goes through, torn on my first Xero.


  • Skinner are super compact and easy to carry along while traveling as a second shoe for emergencies, multi-sport (to slip into after bouldering or skateboarding) or the gym.
  • Skinners are the easiest to get into and out of.

A note about repairability: This is important to me because I would rather pay a premium for a pair that lasts me a long time than pay less and have to change my shoes very often resulting in more waste at the landfill. The one thing the Xeros have going for them is that you can easily repair them at least when it comes to the laces. With the VFFs I couldn't find anyone in Mumbai to glue the soles properly when they come off and have lost 3 of them to bad repair work (glue that made them very stiff and painful to wear). Hopefully the glue-less and seamless design of Skinners means they might last longer.

Replacing the torn lace with a paracord I picked up from Amazon.
Good as new!

I recently also got the Vivobarefoot Primus Lite II BIO to try out (so your can look forward to a review of those) but I don't see myself wearing them for a while till I wear out the Skinners.

A word of caution: I wouldn't recommend Skinners as your daily-everything shoe if you're just starting out transitioning to minimalist shoes and would suggest easing into them slowly.

Friday, November 25, 2016

Native apps can't be trusted

The one thing the web has gotten right to some extent (thanks to the beauty of REST/HTTP) at least compared to desktop and native apps, is how it can uniformly show users if they are using a secure connection to a trusted source. The browser does this by clearly and consistently giving various hints (see Fig 1 and Fig 2 below):

Fig 1. Firefox indicating that you are securely connected to GitHub.

Fig 2. Chrome indicating that you are securely connected to GitHub.

There is no reliable, trustworthy and consistent way for non-technical users to do this on desktop and native apps.

This is how you add funds to your Paytm wallet from within the Uber app (see Fig 3 below):

Fig 3. Page to add funds to your Paytm wallet from within the Uber app.


Notice the following in Fig 3:
  1. Since I opened this from within the Uber app and this "page" is running "inside" the Uber app, I have no way to verify if what I'm seeing is in fact a page severed by Paytm or a spoofed page that Uber is presenting to me.
  2. Even if I were to trust Uber here, there is no way for me to tell if this is happening over a secure connection.
  3. Say I'm willing to accept that this is in fact a page served securely by Paytm, I have no way to know if Uber has injected their own code to intercept everything I enter on that page.
  4. And now the really ridiculous bits (circled in red in Fig 3 above): The text that reads "Your payment details are secured via 128 Bit encryption by Verisign" and the various logos that are displayed at the bottom of the page are something I have to take at face value. These are also app-specific and not consistent.
Also, note that I (as a non-technical end-user) have no way of knowing if all communication the Uber app is doing with it's servers is over a secure channel. I just have to "trust" that they are doing the right thing. Of course, as a technical user I could intercept the traffic on my phone and see how it's been sent, but that is exactly the point: You have to jump through a lot of hoops to "verify" what is happening.   

The current state of affairs for security on native apps is absolutely ridiculous and it's crazy that we all put up with it.

Full Disclosure: I work at Zeta (at the time of writing this blog post), but the views expressed here are my own and not of my employer.

What native apps get wrong over web apps

  1. They need to be installed. This in itself is a big drawback.
  2. They need to be separately developed for each target platform. Unlike the desktop app days where Windows was almost ubiquitous, with mobile you have to support 2 platforms.
  3. They can get outdated if users don't upgrade. We are doomed to repeat the same mistakes we made with desktop apps.
  4. Deployment is blocked on a black box not in your control (aka the app store approval process). Kiss continuous deployment goodbye.
  5. They have no trustworthy way to indicate to users that secure channels are being used to communicate secure information (unlike the address bar in web apps that clearly shows if the connection is secure and to the right place). If you think about it, there is a beauty to REST/HTTP that makes this possible.
  6. Each app needs to reinvent the wheel and ship infra that could have been shared, e.g., local data store, caching, etc.

Saturday, December 07, 2013

Security breach at Myntra.com exposes customer's personal information, order history and more

Update (added on 3 Dec 2013): Based on my feedback Myntra.com has now setup security@myntra.com for reporting security issues and a Responsible Disclosure Policy page. Kudos to them for taking the first step towards a better responsible disclosure process and setting an example for other Indian companies.

Last week a bug on Myntra.com let anyone with an account take over random customer accounts and highlighted the lack of responsible disclosure processes among Indian companies.

On 28th November (2013), Myntra.com held a 3-hour (8-11pm) invite only Winter Sale event where a few select customers got an additional 31% off on all orders above a certain amount.

I was one of those customers and decide to login to my Myntra account to see the coupon, except I had forgotten my Myntra account password. So I went ahead and put in my email address and clicked on the forgot password link. As expected I got an email with instructions, to click on a link to set a new password. What happened next was very scary.




I clicked on the link and landed on the page on Myntra.com to set a new password but instead of my email address I saw someone else's email address pre-filled in the form. Curious to see what would happen, I went ahead and put in a new password and lo and behold, Myntra.com had let me take over another customer's account. 




To see if this was repeatable, I went through the forgot password flow again and just like before it had another random customer's email address pre-filled in the form and let me take over that customer's account.




HOLY SHIT. Myntra.com just let me take over two customer accounts. No fancy hacks, just a scary little bug that presented other Myntra customer accounts to me on a platter.

So the first thing I did was see if I could find anything on Myntra.com about responsible disclosure or a security contact but found nothing. So I sent an email to security@myntra.com and it promptly bounced with the message "The email account that you tried to reach is over quota".

Next I got in touch with them on Twitter and 13 hours later someone got in touch with me, 16 hours later I was speaking to a Tech Lead from Myntra.com and 9 days later I have confirmation from them that they have fixed the bug and put measures into place to ensure this doesn't happen again.

Note (added on 8 Dec 2013): The bug was fixed on the same day I reported it and the 9 days mentioned above includes time they took to monitor the fix and the Tech Lead at Myntra.com and me having issues around coordinating the final confirmation phone call.

I don't know how long this bug was live and how many customers accounts were affected but if your account was one of the affected ones, it means someone had COMPLETE access to your account, your personal details like your address and phone number, your order history, your myntra credit points, your saved payment details, your wishlist and your shopping cart.

Apart from the privacy concerns, the biggest threat that you need to protect yourself from, with a security breach like this is that it opens you up to Social Engineering Attacks where anyone with this privileged information can pretend to be from Myntra.com and use it for malicious purposes.

While a lot of people reading this will focus on Myntra, I think it's important to focus on what this incident can teach us about the lack of Responsible Disclosure processes among Indian companies.

If you run an online service (and especially an ecommerce one) you MUST have a responsible disclosure process in place. The Open Web Application Security Project (OWASP) has a good primer on managing your security issue disclosure process. At a very basic level you should atleast have a security@ email address configured. Having a dedicated page for responsible disclosure on your website is an added bonus.

Here are some examples of good responsible disclosure pages to get you started:



Lastly, I think it's important for companies to be transparent and honest about security/data breaches. Hiding details about breaches from your customers makes them vulnerable to all kinds of attacks. Security/Data breaches happen all the time. The only way customers can protect themselves is by being informed.