20091119

A Non-Technical Rant

First, if you're looking for a post that is exemplary in its technical merit, this isn't it.

Second, my apologies for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 long silence. I've been working on exciting stuff, but that's no excuse for posting nothing for this long of a period.

Now for our regularly-scheduled complaint...

I received some news today that was very disturbing. The thing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 news that bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red me was not that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 person who sent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 news disagreed with me - I'm not bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red by that. I tend to embrace being a bit different.

But what bocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red me was a statement in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message. The end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 message said that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 team I was working with needed to spend more time researching ways to make defensive coding completely invisible to developers. The people who made this statement were way smarter than me, so I must be completely in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dark here.

Defensive coding should be automatic, yes. Invisible? Never. Similarly to shielding your children from every bacteria and virus that might come cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir way, only to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y spend cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remainder of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir life sick, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se people think that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way to have more defensive code is to make it totally invisible to developers. Developers should be trained less on defensive programming so that when new attack vectors come out, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only people who can rescue cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m are security professionals. (Security professionals - what's our track record so far when we do things our way?)

So cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gist of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 statement was this - developers are too stupid to write defensive code. Functional code is no problem, but defensive code is serious business that we need to leave to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security professionals.

You trust developers to handle your income tax returns, but don't trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m to use prepared statements on purpose?

You trust developers to navigate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 space shuttle, but doing some proper input validation is too complex for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m?

You trust developers with sensitive health care information, but think that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're too dull to properly obfuscate it when logging?

See, this is exactly what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem is right now. We security people think that everybody else is too stupid to get it, and that we have to rescue cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. We can't possibly hold people accountable for gaining new knowledge? Look - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security vulnerabilities we find today aren't new. People had to program defensively long before cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a security industry. But now that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's a security industry, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best thing we can do is make writing good code transparent? Pshaw! If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 coders aren't doing things right, raise your standards. If you are or know a programmer, you know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way to motivate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m - tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m it can't be done. That will show you who cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real programmers are. (But I'm still convinced that a decent blacklist simply cannot be written.)

A previous group I worked with used a set of tools I had written as a benchmark for hiring people. This isn't to say that what I wrote was rocket science - it just took some time, reading, and mostly tinkering. Nobody we hired was able to crack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 nut in a reasonable amount of time - but we weren't looking for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people who could figure it out in an hour - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people we hired were cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ones who tried - who weren't scared of a challenge - who were convinced it could be done, and who were determined to find a way to do it.

There do exist people with that mindset. The real programmers are those people. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're not so stupid that you have to make everything invisible to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. They're smart enough that once you make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need clear to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y will do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right thing automatically - because it's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right thing. They're cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ones who will program defensively when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re aren't automated tools around making cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir code defensive without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m knowing it.

EORant.

20090616

50 Ways to Inject Your SQL

Link


If I had to rate it, it'd be an A+ on musicianship (I mean - who can't get an A+ for a parody of a Paul Simon song?), an A+ on lyrics (that's not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 easiest song in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 world to write new lyrics to), and a B+ on technology - only because with a video that short, it's really difficult to demonstrate receiving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results out of band - like in PDF, images, or by forcing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 database server to do DNS lookups and logging cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DNS events. But it's still good fun.

20090305

Building Security In Maturity Model

Link

It's no secret I'm a big fan of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 work that Gary McGraw, Brian Chess, and Sammy Migues have done on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Building Security In Maturity Model (BSIMM). The idea of any maturity model is to have a set of criteria in any process that demonstrate how maturely cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process is being run. While it's not an exact science, it is a pretty good comparative model, and for any process that is not fully matured or innovating, it gives some idea what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "next steps" are to improving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process. The good news about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BSIMM is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y didn't just make up cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 criteria for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 model - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y dealt with ten companies from several industries to get a picture of what some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mature practices are out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

One of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 great things about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir research is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y've released cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results under cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Creative Commons Attribution - Share Alike 3.0 License. But it's also good to know that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 run-time testing is not limited to penetration testing by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software security group, but includes fuzzing and failure or abuse cases in QA.

Anyway, I can't provide any more valuable information that what's in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 model itself. So go take a look.

20090222

Dealing with SQL Injection Part I

Link

It turns out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new cool way of spreading malware is by SQL Injection. SQL Injection is also my favorite way of getting almost every piece of data available in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application. But I'm a solutions guy, and this is a solutions blog, so let's learn how to deal with it.

As Jeremiah said in his excellent post on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject, a way (not necessarily cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best way) of finding injection points is by outside in penetration testing. Trying particular sets of metacharacters might yield a database error, and you can often tell if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application is giving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 error or if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 database is giving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 error. There are a couple of flaws with this approach: 1) programmers know errors are bad, and often do what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can to hide those, so you might not get adequate enough information to formulate a good attack. 2) Black-box penetration testing will only find a subset of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems. If a particular injection is only exploitable on Tuesday, for instance, if it's not exercised on a Tuesday, it's never found. (These are called "corner cases")

The best place to fix SQL Injection vulnerabilities is in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code. And if you have access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 absolute best method of finding SQL Injection points is by source code analysis - preferably a combination using automated static analysis tools and manual analysis. The way static analysis tools work to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 injection points is by marking data that enters cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application as tainted or untrusted. Expensive tools can trace cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 taint through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application, through API calls, assignments, etc. until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data goes into a function that's not trusted. SQL Injections happen when untrusted data is concatenated into a query to be used in a prepared statement or query. Some example API's include in .NET DbCommand.CommandText (and children), or JDBC Statement.execute* or Connection.prepareStatement.

Here's a quick example from a web application:

Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
String sql = "SELECT id, surname, givenName FROM person WHERE surname = '"
  + request.getParameter("surname")
  + "'";
ResultSet rs = stmt.executeQuery(sql);

There are two things that need to be corrected in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code above:
  • Racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than using a concatenated query, we should use a prepared statement, parameterized query, bind variables statement, whatever you want to call it. This allows cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 database driver to properly escape and transmit data to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 query. For repeated queries, it also substantially improves performance.
  • Some sort of input validation needs to take place on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 request parameter "surname" to verify that it's a legal surname syntax according to our syntax.

Here's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 improved code using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first item:

Connection conn = DBUtil.getConnection();
String sql = "SELECT id, surname, givenName FROM person WHERE surname = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, request.getParameter("surname"));
ResultSet rs = stmt.executeQuery();

It's important to note that using PreparedStatement doesn't immediately make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code immune. You have to use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m properly by using bind variables. The syntax for using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m differs from driver to driver and RDBMS to RDBMS, but question marks are pretty common. Some things can't be bound, however. Only constant values can be bound, so if you're depending on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to provide table or column names, you need to make sure it is exactly one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 allowed values, or use a lookup method such as a map to map integers to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 column names. Also, LIKE statements seem to cause people grief - you need to concatenate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 percent signs to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bind variables like "WHERE foo LIKE '%' + ? '%'" or "WHERE foo LIKE CONCAT('%',?,'%')".

As above, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r thing that needs to happen is input validation. I picked surname on purpose because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most common SQL metacharacter first used for injection is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 apostrophe. An apostrophe might also be allowable in a surname. So it becomes a perfect example of why prepared statements work so well - it doesn't mean that you don't have to use apostrophes. Here's an updated version that takes pretty complex US-ASCII surnames including apostrophes, but still gets those safely to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 query later.

String search = request.getParameter("surname");
if (search == null || !search.matches("^([A-Za-z][a-z]*[' ])?[A-Z][a-z]+(-([A-Za-z][a-z]*[' ])?[A-Z][a-z]+)?$")) {
  rejectInput();
}
Connection conn = DBUtil.getConnection();
String sql = "SELECT id, surname, givenName FROM person WHERE surname = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, search);
ResultSet rs = stmt.executeQuery();

Also, it's worth noting that simply using stored procedures does not remove SQL Injection vulnerabilities. There are two ways that injection can still take place - eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 statement is called from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code (with an EXEC with user data concatenated into it), or if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stored procedure uses concatenation to build a dynamic query - all you've done is moved cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 injection attack into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 stored procedure, effectively using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 prepared statement to safely transport cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attack cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

20090213

Mmmm...Springtime!

Can you smell that? sssnnnnnnifffffff..... Aahhhh yes. It's that time of year. Yeah, regardless of what Punxsutawney Phil might have had to say, it's springtime! (You folks in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 colder parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Norcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rn Hemisphere that won't thaw until June will just have to bear with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 analogy - sorry). Yeah - it's cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 time of year when we clean up and clean out. Black Hat is about to start cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir rounds, SchmooCon just wrapped up, and all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new sales pitches start.

But I think this spring is bound to be a much more delightful one. I've become somewhat disgruntled in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AppSec industry because for a couple of years, we've not been focused on app security, but app insecurity. I think we left short. I personally think that finding weaknesses is only good if you have one of two end goals in mind: eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r you intend to exploit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 weakness for fun and profit (or friends), or you identify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m so that you can fix cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. For a couple of years, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry has grown rapidly, but sadly, mostly to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end that we're getting really good at identifying weaknesses, but leaving developers with no indications whatsoever about what to do about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir problem. With no solutions, we've left our developers with two options: give up and cross your fingers hoping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bad guys never find out, or second, give up and pull cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 plug on your project.

But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are lots of things going on in AppSec right now which are very promising for those of us who actually want things to get better:

  • Gartner is releasing a Magic Quadrant on Static Analysis tools. While static analysis tools identify weaknesses, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y identify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in such a way that developers can actually do something about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems. (Please don't read that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wrong way. I'm not arguing that static analysis is "better" than blackbox/greybox testing. Lots of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r people have those fights. Not for me). This is great news because an industry researcher has put a lot of effort into finding out from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 industry what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best tools are in particular areas.
  • WhiteHat Security is providing WAF integration as one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir many services. While WAF's are not a silver bullet, when you don't have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code, or a lot of cycles to fix issues, WAF's are a good stand-up solution to many semantic types of flaws, and a few logical ones, too. It's a step in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right direction.
  • Gary McGraw, Brian Chess, and Sammy Migues spent a great deal of time working with businesses learning about how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y're dealing with application security, and have put togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r a Software Security Maturity Model to help businesses identify where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are in terms of baking in security, and where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to go next. My favorite surprise of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir investigation? The one thing that all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir subjects said was most important in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir program was training. And not just training on identifying weaknesses, but developing solutions.
  • RSnake and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rs are working with browser vendors to work out solutions to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole clickjacking thing. I hate to see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standards-compliant focus of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browsers over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past few years go to back to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser wars, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 slow-movement of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 standards have crippled cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 advancements of browsers that are helpful in protecting users.
  • I'm personally doing a little bit of research on developing securely, and might actually get some work done on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project at some point and have a paper to prove it. But right now, it's all just cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretical.

If you're new to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog, I'm passionate about fixing issues. Certainly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first step to recovery is admitting you have a problem, but at some point you have to move beyond admitting you have a problem, and working on overcoming cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem.

20090107

Twitter Continues to Be Caught With Their Pants Down

Link

flee over at Fortify has an excellent analysis of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent incidents with Twitter where very high-popularity profiles have been hijacked. The analysis is exceptional, but I have one question:

Does anybody take Twitter seriously? I mean....really?

Yes, certain brands use it as a means to remind deliberate followers that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 brand is indeed still alive. In fact, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re really a better way to receive notification of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 daily woot? But on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand, do followers really trust that Twitter has validated cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticity of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people sending cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m tweets?

I suppose that unfortunately, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 answer is yes. Or to be more accurate, I suppose that users have not really thought about it. In fact, I suppose that a few security-savvy users depend on it as Bruce Schneier thought it necessary to clarify that @bruceschneier is not Bruce Schneier. (Or at least not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Bruce Schneier that runs schneier.com.) And by not thinking about whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Twitter truly aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source of tweets, users implicitly trust cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source.

Expect to see a GPG plugin for laconica soon. (And yes, I do realize how silly of a statement that is.)

And while you're here, be sure to subscribe to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Fortify Blog. Those are all folks who do development and security, and do cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m both pretty well.

New Year Rundown

I've been away from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 blog for a bit lately, mostly because of work on a couple of projects that have not necessarily taken all my free time, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y've not lent cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves cleanly to a bloggable idea.

For security experts, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re's no real news here. For developers, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se tidbits may be of interest.

  • There's a big debate about whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r pen-testing is dead, dying, evolving, or thriving. If you really want my opinion on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 matter, pen testing is no less important than it has ever been. However, I think that enterprises need to shift focus from picking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir jaw up off cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 floor to seeing how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y can actually correct cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issues. Pen testing will always find flaws that no ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r form of testing can. And it can provide good "shock value". But pen testing doesn't solve problems. For those who have pen testers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enterprise, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to understand that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pen test is not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end game - more defensive applications are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 goal. In fact, I don't think cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 focus-shift that's necessary reduces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need for pen-testing, but racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r increases cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need for good pen-testers with good documentation ability.
  • Gary McGraw and Brian Chess did a superb job culling metrics from nine different enterprises to develop a maturity model for where enterprises are in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir application security programs. As you've seen me say before, it's time for us to get cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 information that's in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security experts' hands and properly translate it to developers who are responsible for fixing findings. See cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 report here.
  • Every so often I get to work on anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r scenario for clickjacking. It really, really scares me. Certainly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim audience would be somewhat smaller than cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 general XSRF audience, but to think that you can use clickjacking to work around XSRF protections (including CAPTCHA) is frightening. If you're in control of it, make sure your site has some framebusting code. And even that's not 100% effective. (Considering IE can force an iframe to load at a particular security zone).
  • Regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 MD5-collision-fake-CA attack demonstrated at 25C3: It's a very cool attack. And it completely negates cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 purpose of CA's - to validate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticity of a site. But who are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victims in a successful attack? The victims would be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 people who are susceptible to phishing scams or DNS poisoning, but actually verify cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticity of certificates. Sure, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser will be fooled, but even without properly faking a CA, how many people who fall for phishing attacks don't click "Yes, I really want to do this foolish thing" when cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 browser warns cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m?
  • Regarding twishing: nifty idea. I wish it were mine. You can actually see cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 day that people got twished by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 sudden change in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir posts that have URL's in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. So why is twishing more severe than making thousands of fake twitter accounts? There are two reasons: 1) Twitter promptly disables ID's it deems to be automated spam accounts. Normal user accounts that are suddenly used for sending spam will pass more heuristics for legitimate use, and 2) real people already follow (and trust) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 real users who got twished.
  • Attackers are continuing to use open redirects in Flash for new phishing attacks. Yes, just like Java applets or ActiveX controls, your Flash movies need to be analyzed for potential security flaws. Although cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are lots of nifty attacks involving Flash, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 simplest are still cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most effective.

And...oh yeah! Happy New Year! It's a delightful time to be in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security industry, and a very good time to be a developer who understands defensive programming.