An interested sc-l reader who wishes to remain anonymous responded by mail to
my PCI article. Here is what the reader had to say (posted with permission).
gem
=================
I have been involved in some of the PCI efforts here at my company.
There's not much that my company would probably allow me to say on-the-record.
However, here are my impressions from where I sit (tech lead of our
company's application security team, a team where we help IT dev teams
implement designs and write secure code that's compliant with our
corporate information security team's [InfoSec] corporate security policies,
which they set).
We have almost 2 dozen apps affected by PCI. For the most part, our team
has been instructing dev teams about crypto and white-listing of data to
prevent XSS, SQL injections, etc. My team also has also developed Java
and .NET class libraries that try to make some of this stuff simpler for
your run-of-the-mill app developer. These libraries are used a lot with
these applications affected by PCI DSS.
Our corporate InfoSec team deals directly with PCI auditors. I've only
been able to _indirectly_ interact with them via email filtered through
my InfoSec contacts.
Despite this, I have formed quite a few opinions about both PCI DSS and these
PCI auditors, which I will share. Note that these opinions do not reflect the
official position of my company, but probably are representative of
peers within my group.
1) 99% of the PCI DSS is what any good IT organization should be doing
already. There is very little new here. As you (GEM) put it, it sets
a low bar. It only seems like a high bar to IT because most IT departments,
in fact, do not do these things. (Our company was probably already
doing about 1/2 of the requirements in DSS v1.0.)
2) What makes PCI effective is the fear that businesses will be found
to be non-compliant and as a result have to pay fines or higher interest
rates to the credit card companies. Either way, it costs them cash if
the fail to comply so it makes the SROI a bit easier to measure than
normal.
3) A "threat" that doesn't seem to be considered is a "rubber hose attack"
that a company might aim at PCI auditors themselves. The PCI consortium
may (and could) deal with this effectively mandating that PCI auditors
be randomly selected and restricting the duration and number of audits
that the auditors may perform at a specific company. However, it was
my impression (based on InfoSec feedback) that our company has had the
same auditor for over a year, so I don't think this is probably happening.
4) The PCI DSS is vague if one attempts to read them as "specifications", but
they work OK as simple general "guidelines". As specs, they leave too much
"wiggle room". Where this causes problems is where you need to be able
to *test* for PCI DSS compliance BEFORE the PCI auditor comes around.
Whether or not you pass, could (in theory at least) depend on the auditor
you end up with. (Which is perhaps why we have the same auditor for the
past 2 yrs or so.)
Example: Think of all the incorrect ways that one could implement the
encryption requirements. The DSS doesn't mention which ciphers are
acceptable, which cipher modes to use, etc. This could result in
some poorly implemented crypto in the applications but still satisfy
the letter of the requirements. (If you don't believe that, just look
at the whole WEP fiasco. The IEEE used adequately strong crypto algorithms
but in an incorrect manner.)
5) Several of the PCI auditors are fairly low on the security clue meter.
Example: For PCI DSS v1.0, I asked (via InfoSec) what the PCI requirement
3.6.4 was with respect to the encryption key rotation period? After about
two weeks, I more or less received an "it depends" answer. So I rephrased
my question as "Is it sufficient to only change keys every 1000 years?
Or every 5 years? Or every year? Or every month? Or every day? Or every
hour? etc." Finally, after another two weeks, an answer came back that
changing keys once a year was sufficient. Later, I found out from one
of our InfoSec people who was working with the auditor that the auditor
couldn't even understand WHY it mattered! Ugh! I thought it was pretty
obvious...if it is done once a year, we probably can get by with manually
changing crypto keys. OTOH, if they needed to be done hourly or even
daily, we certainly would need some sort of automated process and most
likely a fully functional secured key management system. Eventually,
when DSS v1.1 came out, section 3.6.4 had these two qualifiers:
- As deemed necessary and recommended by the associated application
(for example, re-keying); preferably automatically
- At least annually.
Example: Our PCI auditor also did not seem to understand my questions about
which cipher modes were acceptable. There are reasons to suspect that
s/he did not even know what cipher modes are, as I had to explain
the meanings acronyms ECB, CBC, IV, etc. The standard response was
"we don't try to dictate implementation" and to brush off such questions
altogether.
Of course, I could be to harsh to rush to judgement on this. Our company
has only dealt with two different PCI auditors since its involvement with
PCI. So maybe we just got a few of the bad apples by (un)luck of the draw.
6) For app dev teams, PCI DSS mostly is a "checklist" mentality. (The
exception is for the crypto-related requirements 3 and 4.) But I personally
have seen no real evidence that anything is being done to address
vulnerabilities such as those described in requirement 6.5. We've done
a lot of education / training, but there's not much indication people
are really doing anything about it. I think that the really sharp PCI
auditors realized this was happening which was why 6.6 was added to
DSS v1.1.
7) Web Application Firewalls (WAF) are alluded to in requirement 6.6 of
PCI DSS v1.1 as an "application layer firewall":
6.6 Ensure that all web-facing applications are protected
against known attacks by applying either of the following
methods:
- Having all custom application code reviewed for common
vulnerabilities by an organization that specializes in
application security
- Installing an application layer firewall in front of
web-facing applications.
Note: This method is considered a best practice until June 30, 2008,
after which it becomes a requirement.
Notice that WAF is not required per se, but the alternative of inspecting
all application code by an organization that specialized in application
security is very seldom feasible. In fact, InfoSec first approached our
team to do code inspections, but when we heard that there were more than
1M LOC, we told them that this was impossible given our current team size.
Code inspection *might* work for some small company who exclusively uses
some custom code using CC info with something like a small, custom
a shopping cart application, but it is not going to be economical for
most medium to large companies.
I also think that there is going to be significant push-back by
companies where PCI audits are required. I wouldn't be surprised if that
date gets pushed out to Jan, 2009. On the positive side at least, the
PCI auditor who was interacting with our company said that we could
configure an Apache proxy together with Ivan Ristic's "mod_security"
and that would qualify as a legitimate WAF to satisfy section 6.6.
So at least we can experiment on-the-cheap. (Of course YMMV at other
companies; check with your assigned PCI auditor to see what WAF is
right for you! ;-)
8) I personally have mixed feelings about WAF. Specifically, I have some
anxiety about that app dev teams will start relying on the WAF to
filter out the PCI auditors pen testing attempts rather than on
correcting it within the application itself. I don't have too much of a
problem of using a WAF to address DoS type attacks (6.5.9). (IMO, DoS
attacks are often very difficult to handle within the application itself,
especially when the app itself is using some J2EE container; addressing
DoS at the app level almost always requires some significant amount
of redesign which only complicates the app, making it more likely to
be vulnerable to other vulnerabilities.) However, inevitably some
clever 0-day is going to get past most WAFs, especially if they are
solely signature based. (Those which are also anomaly-based *might* have a
prayer.)
9) The dirty little secret that no one is talking about are the operational
issues with WAF. Our company discussed possible use with WAF/XML firewalls
years before PCI DSS made it "popular".
We never got much beyond initial discussions because we couldn't
identify any existing personnel within our company who had all the
required skills to troubleshoot it AND would be willing to do so.
(Think additional "pager duty".) We talked with stakeholders from
InfoSec, our company's network engineering team who manages our border
firewalls and routers, some *nix and Windows OS system administration
teams, and amongst our team. I think there might be only 2, possibly
3, people who have sufficient skills to operate and troubleshoot a
WAF, and all of those people are smart enough to know that it would be
a thankless job and they aren't really looking for additional opportunities
to carry pagers. Chances are, we would have to probably hire a few people
fully dedicated to this, but even then, there is the question where would
they fit organizationally? One possible option not explored--because we had
no stakeholders represented who could finance such a thing--would be to
outsource the management of WAF to some managed security company such
as BT Counterpane, ISS, etc. Anyhow, it's a big problem and one that
isn't going to go away.
At first, intuition would suggest at first that usual FW teams would be best
suited (and that indeed is what most WAF vendors suggest), but for the most
part, the usual FW teams' understanding of attacks at layer 7 is often
very limited.
If you or anyone you know ever comes up with a solution on how to address
this particular issue, please let me know. I think it is a show stopper.
10) The multitude of NIST security standards--with which our company has
to be compliant to get a contract an unnamed government project--
are doing much more to push the overall security envelope than PCI DSS
has ever done. For one, NIST has much clearer, as well as much
more stringent, standards.
Anyhow, those are my thoughts. Hopefully, I will remember it was me that
posted them and not criticize them as coming from some idiot!
Gary: Thanks for allowing them to be posted while remaining anonymous.
(This is so much easier than posting from a new temporary email address
at Hushmail through several layers of Onion routers! :-)
_______________________________________________
Secure Coding mailing list (SC-L) [email protected]
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
_______________________________________________