HNHacker News
TopNewBestAskShowJobs

nbpoole

2,035 karma · joined November 2, 2010

Web application security enthusiast. Currently a Security Engineer at Facebook. Formerly a security consultant for Matasano Security. My posts and comments do not reflect the opinions or views of my employer.

Blog: https://nealpoole.com/blog/

Twitter: https://twitter.com/NealPoole

Contact me: https://nealpoole.com/blog/contact/

submissionscomments
nbpoole··on I can manipulate your amazon.com recommendations
X-Frame-Options (in supported browsers) prevents the result of a request from being rendered in the browser, it doesn't prevent the request itself from being made. So does X-Frame-Options actually prevent this? Is the change to your recommendations made by an AJAX callback when you view the page? I would've assumed it was made by the pageview itself.
nbpoole··on Redis persistence demystified
http://redis.io/commands/set

> Status code reply: always OK since SET can't fail.

So, what kind of situation are you envisioning?

nbpoole··on CSRF Attack using JavaScript
To be clear, this is not a CSRF attack in the usual sense. A standard CSRF attacks involves sending state-changing requests to a website using the credentials of an unsuspecting user. This is closer in nature to an information disclosure vulnerability and is identical to the security issues faced by JSONP APIs.

Note that the fix proposed here is fairly fragile. It doesn't actually rely on the same origin policy; it relies on the fact that browser JavaScript parsers have been modified to try and prevent attackers from reading the contents of files that are pure JSON (ie: http://directwebremoting.org/blog/joe/2007/03/05/json_is_not...).

From the Browser Security Handbook (http://code.google.com/p/browsersec/wiki/Part2):

Quite a few JSON interfaces not intended for cross-domain consumption rely on a somewhat fragile defense: the assumption that certain very specific object serializations ({ param: "value"}) or meaningless prefixes (&&&START&&&) will not parse via <SCRIPT SRC="...">; or that endless loop prefixes such as while (1) will prevent interception of the remainder of the data. In most cases, these assumptions are not likely to be future-safe; a better option is to require custom XMLHttpRequest headers, or employ a parser-breaking prefix that is unlikely to ever work as long as the basic structure of JavaScript is maintained. One such example is the string of )]}', followed by a newline.

nbpoole··on Compromised Linode, thousands of BitCoins stolen
That update had already been released when I made my original comment (hence why I said "a customer service interface was compromised via stolen credentials"). It doesn't reveal how the credentials were compromised, nor how the attacker managed to use them to log in.
nbpoole··on Compromised Linode, thousands of BitCoins stolen
So, a customer service interface was compromised via stolen credentials and used to access various Linode instances. A couple questions that immediately come to mind:

1. Can this interface be accessed from anywhere on the Internet? If so, why? If not, does that mean other systems owned by Linode were compromised as well?

2. Why can customer service representatives access and update servers without the client being notified and with minimal logging?

nbpoole··on YC-Funded ScreenLeap: Screen-Sharing Doesn’t Need To Make You Crazy
Previous discussion of Screenleap: https://news.ycombinator.com/item?id=3539792
nbpoole··on Show HN: Web analytics with API only approach
Content-type for JSON is application/json

For JSONP, you might consider application/javascript (http://stackoverflow.com/questions/111302/best-content-type-...)

nbpoole··on Show HN: devsigh.com - post all your stories of developer sigh
Not quite. Your rate limiting seems to be cookie based, which makes it easy for someone to circumvent just by replaying their initial request (or by deleting the cookie you set).
nbpoole··on "White hat" Facebook hacker gets 8 months in jail
I've participated in the program as well (and I'm going to be interning with Facebook's Security team this summer). This incident doesn't worry me personally and I hope it doesn't worry anybody else. But if you want clarity, I think arice's comment sums up this particular situation very well:

http://news.ycombinator.com/item?id=3605343

> His attempt to access data was outside our whitehat guidelines, had clear malicious intent, and included extensive and destructive efforts to remain undiscovered and anonymous. In addition, he made no effort to contact Facebook with his discoveries, and even denied involvement when initially questioned. His attempt to claim he intended responsible disclosure only after faced with criminal action is false and insulting to the community of responsible security researchers.

nbpoole··on "White hat" Facebook hacker gets 8 months in jail
The title of this submission is completely inaccurate: the person in question is in no way a "white hat":

http://www.guardian.co.uk/technology/2011/aug/17/facebook-ha...

> Between 17 April and 9 May he is accused of downloading a computer program "to secure unauthorised access" to Facebook; of attempting to hack into Facebook's "Mailman" server; of using PHP script to secure access to another Facebook server, dubbed "Phabricator"; of sharing a PHP script intended to hack into that Facebook server; and of securing "repeated" access to another Facebook server.

nbpoole··on How A Missing Favicon Broke My App for Chrome Users
It's actually not so clear-cut. The solution of presenting resources within the head of the page only works if those resources are supposed to be loaded as a result of visiting the page. That's not true of robots.txt (in fact, you want a crawler to read robots.txt before it does anything else). It's also not true of crossdomain.xml (which Flash and Java use to pre-flight cross-domain communication requests).

Personally, I'd rather require the files to be in known locations than force every client that wants the information to make a request and parse HTML.

nbpoole··on How A Missing Favicon Broke My App for Chrome Users
So, the components at play here:

1. Users are assigned a session cookie when they land on a PHP page. A CSRF token is associated with a session when users visit the login page.

2. Favicon requests were going to PHP instead of a static resource. Normally that's fine, since PHP will see the cookie.

3. But since the request looked like it was for a static resource, Varnish stripped the cookies before passing it back to Apache/PHP. That meant PHP issued a new session that replaced the old one.

All in all, a very tricky interaction between technologies (especially since Chrome didn't display the favicon request).

nbpoole··on Facebook broke the internet
It happened almost a year ago!

http://news.ycombinator.com/item?id=2398095

nbpoole··on Facebook hit git performance issue on large repository
https://github.com/facebook/hiphop-php/wiki/Running-HipHop

It's how HPHP works.

nbpoole··on Show HN: Fed up with WebEx, so we built a way to screen share in under 20 sec.
Just sent
nbpoole··on Show HN: Fed up with WebEx, so we built a way to screen share in under 20 sec.
How do I report a security vulnerability to you guys?
nbpoole··on Ask HN: Where can I report a Google+ bug?
http://goo.gl/vulnz if you'd like a web form to submit it to. Otherwise, security@google.com works just fine.
nbpoole··on Make HTTP requests from your browser
Done ;-)

https://github.com/twilio/hurl/pull/9

nbpoole··on Facebook hands out White Hat debit cards to hackers
I assume it's a card issued by Secunia's program:

http://secunia.com/community/research/svcrp

nbpoole··on Facebook hands out White Hat debit cards to hackers
Indeed. It's a Chase Visa card :)
nbpoole··on Facebook hands out White Hat debit cards to hackers
The card is a Chase Paymentcard (https://www.mychasepaymentcard.com/). None of us have authorization to mess with Chase's applications. ;-)
nbpoole··on Facebook hands out White Hat debit cards to hackers
You can also do what I do: take the card to your local bank branch and have them widthdraw all the money off the card. ;-)
nbpoole··on [dead]
It always says 'Yep' for me :/

Edit: Ah, backend returns HTTP/1.1 503 Service Unavailable .

nbpoole··on Welcome to the new web.
> A web you cannot easily read without JavaScript because somewhere in the page header there is a „<style> body { visibility: hidden; } </style>” later getting unset by a script that the platform owners want you to run.

To be fair to Google, that sounds like a fairly standard clickjacking prevention mechanism. It's necessary to provide protection to browsers that don't support X-Frame-Options.

nbpoole··on CNN, NYTimes, Mashable all vulnerable to XSS
Interesting: MySpace seems to have a "fixed" version of the code (but the date indicates that it isn't a recent fix):

http://www.myspace.com/eyewonder/interim.html

    <script language="JavaScript">
    // NEW CODE 09-14-05
    var query = window.location.search;
   	var adUrl = query.substring(5, query.length);
   	var clickthru;
   	var failclickthru;
   	if (/^http:\/\/([-a-z0-9]+\.)*eyewonder\.com\//i.test(adUrl) && adUrl.indexOf('"') == -1) {
			document.write('<s'+'cript language="JavaScript" src="');
			document.write(adUrl+'"></s'+'cript>');
		}
    </script>
nbpoole··on Git 1.7.7 released
http://news.ycombinator.com/item?id=3060215
nbpoole··on Ultimate Nmap Scan
Context: http://news.ycombinator.com/item?id=2315618

Actual post: http://news.ycombinator.com/item?id=2317547

nbpoole··on Distrusting git
If you want to get pedantic about it, the content is being served as text/html (as opposed to application/xhtml+xml) which means the XML declaration isn't valid.
nbpoole··on Mozilla's secure coding guidelines for web developers
Is it responsibility of the website to make sure that the passwords are strong for the general user ?

Yes. If a password is too weak and it results in a user's account getting compromised, the website gets the blame. Thus, the website mandates the password policy.

And depending on the site, weak passwords and compromised accounts directly impact other users. Imagine if eBay had no password policy and some of their largest sellers had their accounts compromised as a result; what impact would that have on buyers?

nbpoole··on Mozilla's secure coding guidelines for web developers
It's talking about email verification, not password reset systems. In other words, those types of URLs should only establish a connection between an account and an email address: they shouldn't act as a means of authentication.
← PreviousPage 3 of 15Next →