Facebook's Instagram photo-sharing service that could allow a hacker to seize control of a victim's account.
The attack was developed by Carlos Reventlov around a
vulnerability he found within Instagram in mid-November. He notified
Instagram of the problem on Nov. 11, but as of last Tuesday, it had not been fixed.
The vulnerability is in the 3.1.2 version of Instagram's application, released on Oct. 23, for the iPhone. Reventlov found that while some sensitive activities, such as logging in and editing profile data, are encrypted when sent to Instagram, other data was sent in plain-text. He tested the two attacks on an iPhone 4 running iOS 6, where he first found the problem.
"When the victim starts the Instagram app, a plain-text cookie is sent to the Instagram server," Reventlov wrote. "Once the attacker gets the cookie he is able to craft special HTTP requests for getting data and deleting photos."
The plain-text cookie can be intercepted using a man-in-the-middle attack as long as the hacker is on the same LAN (local area network) as the victim. Once the cookie is obtained, the hacker can delete or download photos or access the photos of another person who is friends with the victim.
Highly sensitive activities, such as login and editing profile data, are sent through a secure channel. However, some other request are sent through plain HTTP without a signature, those request could be exploited by an attacker connected to the same LAN of the victim’s iPhone.
The only authentication method for some HTTP calls is an standard cookie that is sent without encryption when the user starts the Instagram app.
An attacker on the same LAN of the victim could launch a simple arpspoofing attack to trick the iPhones into passing port 80 traffic through the attackers machine. When the victim starts the Instagram app a plain text cookie is sent to the Instagram server, once the attacker gets the cookie he is able to craft special HTTP requests for getting data and deleting photos.
The vulnerability is in the 3.1.2 version of Instagram's application, released on Oct. 23, for the iPhone. Reventlov found that while some sensitive activities, such as logging in and editing profile data, are encrypted when sent to Instagram, other data was sent in plain-text. He tested the two attacks on an iPhone 4 running iOS 6, where he first found the problem.
"When the victim starts the Instagram app, a plain-text cookie is sent to the Instagram server," Reventlov wrote. "Once the attacker gets the cookie he is able to craft special HTTP requests for getting data and deleting photos."
The plain-text cookie can be intercepted using a man-in-the-middle attack as long as the hacker is on the same LAN (local area network) as the victim. Once the cookie is obtained, the hacker can delete or download photos or access the photos of another person who is friends with the victim.
Details
The Instagram app communicates with the Instagram API via HTTP and HTTPs connections.Highly sensitive activities, such as login and editing profile data, are sent through a secure channel. However, some other request are sent through plain HTTP without a signature, those request could be exploited by an attacker connected to the same LAN of the victim’s iPhone.
The only authentication method for some HTTP calls is an standard cookie that is sent without encryption when the user starts the Instagram app.
An attacker on the same LAN of the victim could launch a simple arpspoofing attack to trick the iPhones into passing port 80 traffic through the attackers machine. When the victim starts the Instagram app a plain text cookie is sent to the Instagram server, once the attacker gets the cookie he is able to craft special HTTP requests for getting data and deleting photos.
Suggested fix
- Use HTTPs for all API requests that could contain sensitive data, such as photo URLs.
- Use a body signature for unencrypted requests.