Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Teen hacks Pentagon websites, gets thanked for finding 'bugs' (msn.com)
48 points by ourmandave on June 19, 2016 | hide | past | favorite | 37 comments


The title makes it seem as if he was accessing these sites without the government expecting him to. In reality, this was a federal program called "Hack the Pentagon": https://hackerone.com/hackthepentagon


The article also makes it sound like he is casual about it. He actually has a lot of experience and takes it pretty seriously.

http://blog.daviddworken.com/


While I do have a bit of experience with it, I still try to remain casual about it. Not by any means the only thing I do (Heading out hiking on the appalachian trail tomorrow!) so I try not to take it seriously. Thanks though!

Also if anyone has any questions, let me know!


Yeah, very misleading title. If he were just doing this on a whim, even if it were for 100% white hat purposes, he'd almost definitely have been arrested.


Presumably, otherwise he'd be an enemy of the state and probably living in Guantanamo by now.


The most severe vulnerability submitted and the highest awarded was a SQL Injection.

Can someone explain why this is still in existence? With the plethora of web frameworks and built in parameterization and ORM abstraction, I don't understand how this can still be exploited. Especially when we're talking about the Pentagon of all places.


Practically every framework gives a developer the capability to run raw SQL queries on a database. The latest version of the popular PHP framework Laravel still has DB::raw. Express in NodeJS uses the NPM MySQL client that offers connection.query for raw SQL. Python's Flask framework uses SQLAlchemy and gives a developer db.engine.execute access. And so on for every language people make database driven websites in.

Using a framework well stops SQL injection attacks dead in their tracks. Using one badly though, and they're still just as dangerous.


Although we can agree we should be sanitizing inputs, I haven't seen a consensus on the use of ORM as a best practice and wouldn't say its employment is inherent in using a framework well. There's nothing wrong with writing SQL queries if everything leading up to that point is handled correctly.


The pattern I've seen on a recurring basis is:

1. You need a query that can't be handled by your ORM, since in general ORMs can't expose all functions of a database. (This condition is also met if you have no ORM.)

2. You need a query that is going to have a varying number of parameters, so you need to manually assemble the query.

When that happens, there's a temptation in almost all systems to try to write the moral equivalent of:

    sql_query = "WHERE condition = '" + param1 + "'
    if something:
        sql_query += " AND other_thing = '" + param2 + "' "
and so on and so on. This is where I see most of the SQL injection, even in language communities that have otherwise thoroughly internalized the need for query parameters (for example, perhaps surprisingly, the Perl community for a very long time).

Programmers who are not really fluent yet and are still having to think about every line either don't think about, or are trying to avoid the complexity of,

    sql_query = "WHERE condition = ?"
    params.append(param1)

    if something:
        sql_query += " AND other_thing = ? "
        params.append(param2)
are the source. This pattern is, broadly speaking, safe. But it has just that extra bit of the sort of complexity that a lot of programmers shy away from. (As opposed to the sorts that programmers almost seem to chase, like "adding 15 boolean parameters to a function over the course of a year".)

There's also usually a library in the target language that is a pretty good reflection of SQL that avoids this problem (such as SQLAlchemy in Python), but I think that most people consider this "too complicated".


Legacy code? It can't be very surprising that entities, especially the government, aren't quick to refactor old, "just works" code.


This is exactly it.

From what I have found, these places either have 1) No programming resource internally. 2) Some programming resource internally, but they're so swamped with other, poorly managed timeframes and projects, there's no extra resources.

So Light to Medium sized projects get outsourced - but if the delivered product "works" (at least visually) then who is going to QA the code? In fact, go one step back -- who is even going to think that the code needs to be checked? The management who chose the vendor? Hell no, that would look bad for them. The programmers who are swamped on other projects? Hell no, they're so busy they dont even want to talk to you.

So management takes one glance at it, see's that it works, and it gets thrown into production. The first time it's security is tested, is when the international hackers come knocking...

I'm not defending these actions in any way - I think it's a goddamn joke - but this is the reality


These are the guys that still use floppy disks to run the nuclear program.

http://www.cnn.com/2016/05/26/us/pentagon-floppy-disks-nucle...

So probably on a legacy system before SQL injection was a thing.


"It's not a small sum, but if we had gone through the normal process of hiring an outside firm to do a security audit and vulnerability assessment, which is what we usually do, it would have cost us more than $1 million," ...

It seems like a a pretty small sum to me. They paid out amount between $100-15000 for the bounties with a total of $75000. Gauging that one of the bounties at $15K sucked up around 20% of the overall budget and there were 137 other reports - it's literally the equivalent of paying outsourced-ODesk rates for security testing in time/value.

What reason would anyone have for wanting to actively participate (not just poke-around like I'm sure quite a few employed professionals did) vs selling the exploits off on the dark web or just working in security for a company that pays a reasonable rate?


>> "What reason would anyone have for wanting to actively participate (not just poke-around like I'm sure quite a few employed professionals did) vs selling the exploits off on the dark web or just working in security for a company that pays a reasonable rate?"

The answer the your first alternative is pretty obvious: morals. That and not wanting to do jail time. To the second alternative I'm sure the people participating mostly have jobs or other commitments are are doing it for reasons other than the money.


Yeah exactly. I certainly was in it for more than the money and would have happily worked on it even if there were no bounties.


The kids will find some low hanging fruit for cheap. It's a quick smoke test. After they get done fixing those, one would hope they still hire the pros.


Usually they use this as a recruiting tool.


Suprised this link didn't go to theonion.com


they should do the same moratorium for hackers as is suggested for weed smokers maybe


"approached by recruiters about potential internships." - Insulting. I would add those to my never list.


Why is this insulting?


For many people, "internship" means unpaid, that might be the source of the insult.

I remember trying to recruit javascript programmers from the local maker/artist community, offering an internship that paid, I forget exactly, but something around $35/hour, which I thought was reasonable for an entry-level programmer. I got no responses, and later learned that my call was widely talked about as a scam, since everyone knew internships were unpaid or at best carried an honorarium.


I don't know how you learned that, but it's not the real reason you got no responses. It simply can't be. Programming internships universally pay. It might not be that way in other fields, but it's well known to be the case in tech.


I guess it's a regional thing. In the UK, they tend to be paid (In my experience, at least).


Why call it an internship? Why not just say "hiring jr dev"? And... $70k/year for a jr dev is still pretty high for a lot of areas.


Internships tend to be finite, and usually last 1 summer or semester. A "jr dev" would imply a career path.


I wouldn't want to hire a programmer who is willing to work for less than 70k (in the US)


This sounds like a large reason we have employment problems in the US, and frankly it stinks of the "old scouts" in the book+movie "Moneyball". Engineers aren't known for their social networking and sales prowess. IMHO, engineers are among the most likely population to undervalue themselves in their early career.

It's difficult and time-consuming to on-board and train a programmer / developer / software engineer, but every programmer needs to start somewhere. I consider myself lucky in that I worked my way through college as a web developer for companies in Silicon Valley. If I didn't have my social network of other local engineering students, I would probably have started my career around $70k-$80k. I suspect that programmers in extremely rural parts of the US (like Alabama, West Virginia, Wyoming) would be lucky to find $70k/year.


Think this depends on where you live...


Seriously, I've got 5 years experience and I'm making $86/K per year. Granted it's a startup, but where I live the market is pretty depressed. Anytime you see a Bay Area company relocate or open an office here you can guarantee it's to pay low wages, and they usually try lower than market.


Hey, a lower cost of living is something we can all get behind.


Well, I have a higher cost-of-living than Atlanta but could probably make $20k more by moving there. Then again I can go to the beach at 13.00 on any given day of the week so I guess I'm paying the coastal tax. Life's full of compromises I suppose.


I think it's because the parent would expect a job offer instead of an internship.


That seems like an unreasonable expectation, considering he's still in full-time education - so he wouldn't be likely to accept a job offer in any case.

It sounds like he only found XSS, which isn't exactly worthy of a job offer anyway.


> isn't exactly worthy of a job offer anyway.

1) XSS is game over for sites with authentication. What kind of vulnerabilities do you think are more important than XSS?

2) XSS is a result. There are a lot of complicated XSS bugs.


Yup planning on going to college so not interested in any full time job offers (though I have received them...).


> Dworken, who graduated on Monday from Maret high school in Washington, D.C.

I would've loved an internship as a new high school grad... most people don't get a tech internship till 2 or 3 years into college.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: