Slashdot Mirror


Third Party Code Review?

An Anonymous Coward asks: "It looks like our sale-person is about to land a big contract with a very large US Bank, however there is a large catch in that the bank is demanding that we let them do a full audit on the source code of the software application we are selling them. After the recent rash of identity thefts of credit card and other personal info, they now mandate that all internet facing applications that store potentially private information have to have a full source code audit. This includes software from 3rd party vendors such as my company. They want to run our Java code through some software called Fortify (we looked up the price -- around $80,000) and also do a manual analysis of the code. This software is our company's life-blood. We would be ruined if it fell into a competitor's hands. We aren't storing private information about their customer's; all of the information can be found from government county auditor web sites. I understand their point of view, but it is a very scary step for us to take. Has anyone else done this and how did it work out?"

89 comments

  1. ruined? by croddy · · Score: 4, Insightful
    you would be ruined if a competitor got the software?

    then it sounds like you are in the business of selling disks with programs on them. in that case, you're already sunk. you need to move NOW to a model where you make your money deploying and supporting software.

    show them the bleeding source code, you pansy.

    1. Re:ruined? by sholde4 · · Score: 0, Flamebait

      Why, so the holes in the code can be found and exploited indefinately? Closed source is proven to be far more secure in the real world than source that has been picked through by numerous people. If they were truely worried about the security of the code, they should keep it behind lock and key.

    2. Re:ruined? by Embedded2004 · · Score: 3, Insightful

      That's retarded.

      There is nothing fundamentally wrong with selling software.

    3. Re:ruined? by iMaple · · Score: 5, Funny

      Better idea. Ruin Fortify.

      Talk to the bank manager, let him know that you whole heartedly support security audits. Then ridicule him for trusting Fortify, a closed source tool, for sucah an important audit. Enlighten him about the possible conspiraces involving Fortify, Nigerian Scammers, Dick Cheny , ... you get the idea. Then offer to audit the Fortify source code for free. Start a new company in China (they dont have freedom of speech, but neither do have strong copyright protection) and start selling Fortify+ (or FortifyLight depending on your marketing strategy). You will be a multi millionaire soon. Dont stop, claim that the original Fortify stole your source code and sue them (dont care if its obviously untrue, remember SCO ?). And then finally when you have a few billion dollar in you bank account GPL the code under GPL 3 and post the news on slashdot.

      Whew, another success story for the books.

    4. Re:ruined? by LLuthor · · Score: 4, Funny

      I think we have finally solved the infamous 2. ??? puzzle.

      --
      LL
    5. Re:ruined? by cerberusss · · Score: 3, Funny
      You forgot an important step.

      At some point in the above-mentioned plot, mostly around the end, you should laugh like a maniac, like "BWA HAH HA HA HA HAAAAAAaaah". For more information, see this entry on Wikipedia

      --
      8 of 13 people found this answer helpful. Did you?
    6. Re:ruined? by chaves · · Score: 2, Insightful
      >There is nothing fundamentally wrong with selling software.

      Exactly, this is specially true in the case of niche applications for vertical markets, where open source competition is not an issue.

    7. Re:ruined? by HeavyMS · · Score: 0

      One problem with the services model is that it is based on the idea that you are giving customers crap--because if you give them software that works, what is the point of service?

    8. Re:ruined? by LWATCDR · · Score: 1

      A better way to put it is if your competitor got the source code for the software!
      It takes money to write software, yes they will make money on support and updates but with the source to your software your competitor can easily take the work that you have done for free. Then they can offer an initial lower cost purchase and make the same on support as you did.
      In the real world it would be like releasing your software under BSD! I know the RMS faithful will understand that.
      A small company probably doesn't have the money to take it's competitor to court to enforce any license agreement. For them the best protection is to keep the source closed.
      That said, Get NDAs and do the audit. The bank has a lot more to loose than you do by breaking an NDA so I really wouldn't worry too much about them leaking your code.
      For all of the RMS faithful out there. If you don't like a closed source program then stop talking about how evil it is and write a better OSS solution.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    9. Re:ruined? by humblecoder · · Score: 1

      I know you were being sarcastic, but you do bring up a good point: how can the bank trust Fortify?

      First off, I know nothing about this Fortify product, so you may want to take what I say with a grain of salt. However, it does appear as if the bank is putting a LOT of faith in this product that it will find these supposed security holes. A wise man once said that there is no such thing as a "silver bullet", but it appears as if this bank has not taken this wisdom to heart. They are under the false impression that by running their source code through this magically software package that it will come out secure. If only it were that simple. I find it hard to believe that there is any software product out there that can ferret out all security holes.

      I would guess that this Forify product employs some sort of static analysis to look for conditions in code which might possibly be security holes. This approach looks for various constructs in code which appear to match the "signature" of known security holes. However, there are two leaps of faith here. First is that the structure of all possible security vulnerabilities is known. Second is that a software tool can detect all of these possible cases. Neither of these suppositions seem rock solid to me.

      They do seem to recognize the drawbacks of relying on a software tool to detect holes because they also have a manual code review. Again, this could be an expensive proposition for a medium to large size program, and it is not likely to reveal all security problems.

      That being said, I totally understand why the bank would want to try and certify the security of their applications. Most likely, they are afraid that a unscrupulous programmer could inject some code into the application that would compromise the security of the data. Most security breaches are the result of a insider attack. This is especially true of a product that they buy from a third party. At least with their own in-house software, they have some measure of control over the people hired, over the design and coding process, and over the testing and certification. However, with software which they buy from the outside, they do not have that level of control.

      I guess the bottom line is that I understand the reasoning behind what the bank is doing, but I hope it doesn't give the bank a false sense of security, since the process isn't perfect.

  2. Give them the code by BadAnalogyGuy · · Score: 5, Interesting

    This is why your company has lawyers.

    Handing over the source code should be part and parcel of any non-retail software package. Like Free Software, but without all the philosophical bullshit.

    1. Re:Give them the code by ClamIAm · · Score: 1, Insightful
      Like Free Software, but without all the philosophical bullshit.

      Yeah, having an opinion is BAD! Only idiots and terrorists have opinions!

    2. Re:Give them the code by ZephyrXero · · Score: 1

      That's what the people on the major news networks told me...and they're always right!

      --
      "A truly wise man realizes he knows nothing."
  3. NDA by poopdeville · · Score: 4, Informative

    Get the bank to sign an NDA, and sue the pants off of them if they leak your source.

    --
    After all, I am strangely colored.
    1. Re:NDA by (H)elix1 · · Score: 3, Interesting

      Non Disclosure Agreements and Really Good Lawyers, that's what it's all about.

      Spot on. With that in place, no real reason to worry about the source code. The Java decompilers out there (try JAD for instance) are good enough I stopped bringing source with me and would just decompile the class files if I needed to look at something. If you think a Java class file will keep code out of your competitor's hands - you are in for a real shock.

    2. Re:NDA by dtfinch · · Score: 1

      Keeping the class files out of their competitors' hands might help.

    3. Re:NDA by jipis · · Score: 1, Insightful

      More important possibly than negotiating your way out of being audited, maybe you can negotiate something long term once they have audited you. You must have tech support if you ship a product. Can we say SLA? If they like your product enough that they're going to go through the effort to bring in the big guns, they're going to want some sort of support (once your marketing guys remind them as such).

      This is how many of the govt contractors go from having just a foot in the door to having multi-million dollar contracts. Now that I think about it, isn't this a similar business model as drug trafficking?

      -J

    4. Re:NDA by WebCrapper · · Score: 4, Insightful

      On top of this, I would transfer the source (on whatever media) encrypted so, if something where to happen, they cannot claim it was stolen somewhere in the middle. Require them to call a specific person when they receive the disk to get the key.

      An NDA and possibly a Non-compete agreement should be fine. This stops them from sharing the source and from giving the source to in-house developers to try to pick through your source to make a product for themselves.

      Also, since they do this with all applications they use, you have the right to ask for the contact info of a few places they've done this with. This allows you to talk to X Company about what happened during and after the process. Tell them this is your security check on them.

      Either way, as with most business related "Ask Slashdot" articles, you need to consult your lawyer.

    5. Re:NDA by mikaelhg · · Score: 2, Informative

      That's why you use RetroGuard or some other such product on your application before giving out your JARs anywhere, if you really think that a source leak of this kind would have any real effect.

    6. Re:NDA by Joey+Vegetables · · Score: 1

      To make this work, in addition to an NDA, you would need to make the source for each customer just a little bit different. Then, if it turns up elsewhere, you know, and can prove in court if necessary, where it came from.

      Having said that, I still think that the "sell disks with ones and zeroes on it" model is flawed. In my long experience, most custom software should be a thin layer of Open Source glue around Open Source components, distributed under an approrpriate and most likely Open Source license, but working in conjunction with proprietary, customer-specific data that describes and implements each customer's or client's specific business logic and rules. It then doesn't matter if someone "steals" the source - it's open anyway. It just won't be very useful to anyone without your unique ability to add the necessary business logic to tailor it to a specific customer's needs. Smaller and mid-size organizations won't have that expertise, and bigger ones will have legal and compliance departments with a strong bias toward paying for "officially" supported software, rather than "borrowing" your code even though, being Open Source, it is perfectly legal to do so. And your clients, regardless of size, will have absolutely no reason or incentive to give away the business logic data - indeed they have a very strong incentive not to, since that would be giving away any possible competitive advantage that your software otherwise might give them.

    7. Re:NDA by Anonymous Coward · · Score: 0

      This is why you're just "Joey Vegetables" and not a successful businessperson.

    8. Re:NDA by Joey+Vegetables · · Score: 1

      Actually, on most days, I am a successful businessperson. My clients get their money, and their clients don't get their knees busted. :)

      Seriously, I've done consulting and development freelance in the past, and hope to get back to that someday, but for now I do software development for a megacorp. It's not exciting, but it pays the bills.

  4. It they steal your code by dtfinch · · Score: 4, Interesting

    You'll sue. You'll win. You'll be fine. Your competitor will be ruined. The person who leaked the code will be ruined.

    As for the use of a $80k code audit tool. If the bank's paying for it, that's how it's going to happen. BTW, expensive niche software companies don't always like it when their quotes become public knowledge. Companies like that often try to guess what each customer is willing to pay, within reason.

    1. Re:It they steal your code by BadAnalogyGuy · · Score: 1

      Not to defend the submitter and his Mickey Mouse operation, but Fortify's pricing isn't really too much of a secret.

    2. Re:It they steal your code by Anonymous Coward · · Score: 0

      I looked up the price of the software myself it is $600 pre year. That is a spit in the bucket compared to the 80k the person said.

    3. Re:It they steal your code by Anonymous Coward · · Score: 1, Informative

      Wrong product.

    4. Re:It they steal your code by arivanov · · Score: 1

      And it all does not matter anyway. Unless you have done something outrageously stupid, a vulnerability in a Java program is more likely to arise from a bad design choice, not from a coding implementation. No "Snake Oil (TM)" regardless of the "Fortification" level is going to catch this type of vulnerabilities.

      You need a human for that. Not a developer by the way. You need someone with a good architectural view that will not get bogged down into the details for that.

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
    5. Re:It they steal your code by Random+Walk · · Score: 1
      BTW, expensive niche software companies don't always like it when their quotes become public knowledge. Companies like that often try to guess what each customer is willing to pay, within reason.

      So what? Keeping the price secret helps producers to dictate the price, knowing it benefits the consumer. Capitalism is a constant battle between consumers and producers, do you want to allow producers to use the weapons they have available, while depriving consumers from the same right?

  5. Not too sympathetic. by tinkertim · · Score: 5, Insightful

    I was almost sympathetic until I re-read:

    very large US bank

    What, pray tell did you expect? It looks as though you blundered into a pot of gold and kept going despite the fact that you're not large enough yet to carry it away.

    Of course they'd demand third party review. I hope *my* bank would! What I also don't see mentioned is any mention of a three inch NDA that would be signed.

    Established companies like Microsoft can sell stuff with some (or all) of the hood welded shut. They are an authority. They dictate who our browsers trust. They're huge and they could afford to pay for resulting damages (good luck pinning any on them .. )

    If you really want to use this as a spring board I'd let them have at the code. Unless you're in the middle of an "Oh SHIT we gotta re-code all that GPL stuff we used ... "

    Why would you worry if there wasn't anything to worry about? And why risk your "life's blood" on one single venture?

    Order happy meal first. Big mac later.

    Off my soapbox.

    1. Re:Not too sympathetic. by Saeed+al-Sahaf · · Score: 2, Funny

      Order happy meal first. Big mac later.Good starting point for a haiku. Work on it.

      --
      "Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
    2. Re:Not too sympathetic. by tinkertim · · Score: 4, Funny

      >> Order happy meal first. Big mac later.Good starting point for a haiku. Work on it.

      Pointless Haiku
      containing big mac
      always ends with
      toilet flushing.

      I doubt that qualifies. But then I don't qualify for much either :) So it fits.

    3. Re:Not too sympathetic. by smallfries · · Score: 4, Funny

      Happy meal first.
      Order a Big Mac later.
      Fries with that?

      My god its late and I need to go home

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    4. Re:Not too sympathetic. by crmartin · · Score: 1

      that's more of a tanka.

    5. Re:Not too sympathetic. by polymath69 · · Score: 1

      Adjust the last line
      Make it "Having fries with that?"
      And you've got Haiku.

      --

      --
      I don't want to rule the world... I just want to be in charge of mayonnaise.
    6. Re:Not too sympathetic. by TheOtherChimeraTwin · · Score: 2, Funny
      Closer, but a Haiku should mention a season.
      Happy Meal first.
      Order a Big Mac later.
      Salted Fries with that?
      See? Salt is a seasoning.
  6. NDA by Centurix · · Score: 5, Insightful

    Non Disclosure Agreements and Really Good Lawyers, that's what it's all about. And if you think it's too much of a risk, just turn the job down. Big fat contracts are look appealing when they arrive on your doorstep, but if they come with massive provisions which are too risky for your business then don't be scared in turning them down. Especially when it's your business, your life and your way of thinking/sanity which is exposed.

    Of course, there is the bargaining position of if they are really in need of your software, then you could be in a good position to strike up a trust and maybe negotiate your way out of being audited.

    I've done a few defence contracts where they've demanded the same type of auditing, and in a few I've managed to get out of the auditing process for non-mission-critical systems by negotiation.

    --
    Task Mangler
  7. Uhh, java class == source code by QuantumG · · Score: 3, Insightful

    The only thing missing is the names of local variables and the comments. If you're distributing your program unobsfucated (and studies have shown that 99% of companies do) then they already have your source code.

    --
    How we know is more important than what we know.
    1. Re:Uhh, java class == source code by Surt · · Score: 1

      While this may be useful for some small program with an unusual algorithm to protect, any medium to large program would most likely be easier to replicate by redevelopment than by decompiling. That's why hardly anyone worries about obfuscating.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    2. Re:Uhh, java class == source code by QuantumG · · Score: 1

      Only if you've lost unit tests or something else that you don't distribute. If 100% of your source is included in class files that you can get access to you can retreive 100% of your source will little to no effort. Naming local variables and writing comments is no effort. Now native executables, that's a different story.. there's so much information missing that the reverse engineering effort is significant, even for the original developers. Oh, and BTW, we weren't talking about recovering lost source code, we were talking about source code "security", or in the case of unobsfucated java class files (and .NET) the lack there-of. But I do appreciate a good gab about source code recovery, so thanks.

      --
      How we know is more important than what we know.
    3. Re:Uhh, java class == source code by Surt · · Score: 1

      Being able to recover 'source code' and being able to recover useful source code are different things. When you have a code base in the million line range, decompiling the jars will get you somewhere, but not anywhere useful. You aren't going to be able to turn out a competitive product any time soon. There's just soo much information stored in the heads of developers that stealing a useful product by decompiling jars is effectively impossible. And that's on top of the stuff you don't ship, such as test suites, build environment, etc.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    4. Re:Uhh, java class == source code by QuantumG · · Score: 1

      Well duh, stealing anything from a competitor is pointless. It's not like software developers come up with big giant secrets that are the lifeblood of the company that, if revealed, would lead to the downfall of mankind. It's only pointy headed managers who think that. My company could give its competitors our source code and there'd be nothing they could do with it. That's the thing about copyright law.

      --
      How we know is more important than what we know.
  8. Single you out? by bondsbw · · Score: 3, Interesting

    I'm assuming the bank and its software is running on a closed operating system, like Windows. Does this bank require source code from Microsoft?

    The system will fail security at its weakest link, whether it be your banking software or the operating system it runs on.

    --
    All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    1. Re:Single you out? by Loconut1389 · · Score: 1

      WAMU (Washington Mutual) used to run OS/2 (warp?) 1999 (or earlier) to 2001, at least on teller and agent computers.

      http://www.pcworld.com/news/article/0,aid,64184,00 .asp

    2. Re:Single you out? by Anonymous Coward · · Score: 0

      How staggeringly relevant!

    3. Re:Single you out? by Loconut1389 · · Score: 1

      the person I replied to was saying that the bank probably runs on closed source OS. I pointed out that I knew for sure that banks did indeed, at least as of 2001. Its entirely likely that there are still machines out there running OS/2 warp in a bank situation.

    4. Re:Single you out? by Anonymous Coward · · Score: 0

      What earth-shattering news!

  9. Woo! Free Audit! by ryanr · · Score: 1

    You get paid no matter how you do on the audit, right?

    If I were your competitor, and i wanted your code that badly, I would have already disassembled it by now. If it's Java, I would have had a really easy time of it.

  10. Just do it by El+Royo · · Score: 3, Insightful

    As others have pointed out just get a really good NDA (which I'm sure the bank has probably already insisted on anyhow). The benefit of 3rd party code review is that they just might actually turn up a vulnerability in your software. This is just like having someone pay you to help you validate your software. At the end of this you can say your software has been validated by Fortify.

    --
    Author of Enyo: Up and Running from O'Reilly Media
    1. Re:Just do it by austad · · Score: 1

      As other posters have said, pony up the code, or lose the sale.

      However, you may be able to get them agree to audit the code with someone from your company present (which would be great if the auditors had questions) and only audit the code on machines that are not connected to the network, or connected to an isolated network if you need to do network testing w/ it.

      A previous company I worked for insisted on auditing a vendors code, and they let us. Our guys fixed about half the bugs with it during the audit, and they required us to do it on an isolated network (no usb keys or anything like that allowed in the room either). No problem for us, why would we need internet access to audit their code?

      --
      Need Free Juniper/NetScreen Support? JuniperForum
  11. It ain't windows. by Anonymous Coward · · Score: 2, Insightful

    I'm a manager at a fortune 10 company, and parts of our business run SAP. Maintenance licensing runs into the tens of millions of dollars per year. So it would make sense to try to steal this product, right? Wrong.

    If we somehow got hold of the source to SAP R/4 and MySAP, outside of a quality review, it would be worthless to us. The support, maintenance fixes, and configuration assistance SAP provides are worth far far more than the code. And the risk that comes with internally-compiling the code (and we can do it) could cost the business far more than $10M.

    Net: Don't sweat it.

    1. Re:It ain't windows. by Anonymous Coward · · Score: 1, Informative

      Acutally its called R/3, and you do have the source code for it. Its delivered with the system (many millions of lines of ABAP source code), as are the development tools, debugger, api documentation and everything!

      Let me clarify - the source code for the kernel is not included - but for the bits that you would actually care about, the business applications that run your company, the full source code is there in the system. The first time you access a transcation after an upgrade you can sometimes see the little 'compiling' message in the status bar...

  12. Third Option by woolio · · Score: 1

    Why doesn't your company audit the auditor?

  13. Re:Security with closed and open source by deek · · Score: 3, Interesting
    • Closed source is proven to be far more secure in the real world than source that has been picked through by numerous people.


      OK, this is flamebait, but what the hell. It annoys me when people claim something is proven, without actually supplying any proof.

      As a thought experiment, try this out. Start off with a software project that forks into two branches. One branch is developed with an open source model. The other branch becomes closed source. Assume that the original software project had a certain number of bugs. Now I ask you, as time goes on, which branch would contain less bugs? The closed source, or the open source?

      It seems obvious to me that the open source project would quickly have its bugs fixed, because of two reasons. The coders on the project would have ego on the line, and would therefore be much more careful with publicly available code. Due to the immense availability of peer review, issues are discovered and reported much more quickly and thoroughly.

      It also seems obvious that the closed source project would have many more bugs, for many different reasons. Programmers are more likely to ignore issues, because "nobody can see it". The pressure of getting a release out means that things are quickly cobbled together without much thought for security. If there is a review of code, it is not likely to be as thorough as what is available to open source.

      If the code is hidden, a program is not more secure. Otherwise, how do you explain the numerous security issues found in closed source software every year?! Whoever found the bugs, didn't have access to the source, yet they were still found. And once it is found, how can you fix it? I'd say that closed source software is far more insecure than open source, because not many have access to the source.
  14. Re:Security with closed and open source by iMaple · · Score: 2, Informative

    * Closed source is proven to be far more secure in the real world than source that has been picked through by numerous people.

    OK, this is flamebait,


    Well the gp wasnt flamebait but funny :) lighten up.

  15. Banking MO by ScrappyLaptop · · Score: 4, Interesting

    That's how the mainframe COBOL guys used to work; they put the source up on the really big bank's mainframe and work with the banks systems people to compile it and customize it. I've worked for two companies that followed that model and let me tell you, it is really really lucrative. It is ingrained in some really big banks' cultures, be it a holdover from the true "big iron" days, but so are the wonderful amounts that you are expected to charge them. Now, you and I realize that times have changed a bit, but many banks still call it DP, not IT and consider this; once you are in, they begin to build systems and protocols around your software. Before it even goes live, they will have their technical writers creating binders just for interoperation with your system. Your software becomes part of the machine. Do you have any idea how expensive it is after a couple of years to rip all of that out and start over? Like others have said, get a good non-disclosure written by pit bull lawyers and laugh all the way to the bank. Just take care of them (the banks decision makers) by doing a good job and catering to their whims (and charging them for it) and they will take care of you.

  16. Code Auditing by crmartin · · Score: 3, Informative

    I've done quite a lot of this over the years, and I can see how you'd find it scary. here's the key things:

    * get a good tight NDA from the auditors
    * get a well-respected firm to do it, one that has something to lose. Someone like Ernst-Young.
    * insist on it being done on your site, and that you receive all work products at the end of the audit. This won't keep someone from walking off with a copy of the code anyway (not when you can buy a 2 gig USB key for a hundred bucks) but will strengthen your case if anything does get pirated.
    * Look for a firm that doesn't have a software business in your area of expertise. You don't need to be buildign bank apps to audit the code; if you pick someone who doesn't have bank apps in their product line, and they suddenly start some after the audit, you'll have a good hint that there's a balrog in the woodpile.

    1. Re:Code Auditing by ph1ll · · Score: 1
      Stealing source code is irrelevent for all but the most complex algorithms.

      Generally, production code is not of excellent quality since there is no time in the real World of business to make it super-duper. What is really important is something you can't steal: the knowledge and experience in your employees head.

      Anybody who has had to maintain other people's code knows that often it is easier just to re-write it (or large chunks of it) anyway.

      As for getting somebody reputable like Ernst and Young: be careful. If they have a division that can pitch for the work, they will.

      Beware of conflicting interests. The IT business is generally run by cowboys and cut-throats and few business people understand the conflicting interests in technology.

      --
      --- "We've always been at war with Eastasia."
  17. Allow them their audit. by rew · · Score: 1

    Simply allow them their audit: Here is a room, we've prepared for your audit. It doesn't have any communications links, leave your cell phone at the door. There are two computers with the source code. Feel free to audit it all you want.

  18. Government code reviews by scottsevertson · · Score: 3, Interesting

    I contracted with an electronic voting systems company last summer; one task was preparing code for an audit as mandated by the FEC. This was to be a manual audit (versus an automated audit like Fortify), conducted by a 3rd party government contractor.

    Notes from the experience:
    * We requested examples of code that met specific auditing criteria, and received back several somewhat-anonymized methods, apparently taken from competitor's products. You should verify that the bank has appropriate "handling procedures" for protecting 3rd party source code.

    * Our audit criteria was spelled out in an FEC ruling in decent detail. We found that 50% of the rules could be easily expressed as existing Checkstyle "checks" [http://checkstyle.sourceforge.net/ ]; it was pretty easy to build custom "checks" to catch another 30%. We then used an Eclipse plugin [http://eclipse-cs.sourceforge.net/ ] to get real-time highlighting of detected issues (plus Ant scripts for command-line checking).

    In your case, Fortify "rulepacks" appear quite proprietary/complex, so using their product is probably your only option for pre-audit auditing. If licensing is out of the question, and you can't strike a cross-promotional bargain (i.e. you market with "Secured by Fortify", they use you as a case study, you get a discount), try and get access to the tool through the bank before the official audit, or negotiate an appropriately flexible window of time in which to address any discovered issues.

    * You're not "innocent until proven guilty" in an audit. In *many* situations, we had to argue against rules that were nonsensical in Java, or false-positive issues discovered by the audit. Some we won, most we lost; we faced an uphill battle on all.

    * Our auditor was apparently not fluent in Java, and flagged several issues regarding the method names on classes in java.lang.*. Be thankful for automated auditing :)

    Good luck!

    --


    Scott Severtson
    Senior Architect, Digital Measures
  19. Sarbanes-Oxley by mwvdlee · · Score: 4, Informative

    The whole Sarbanes-Oxley regulations really leave the bank (or any financial institution) with little choice; they are legally required to guarantee the security and accountability of their systems, without being able to audit your code, they cannot give such guarantee and thus cannot use your system whilst still following Sarbanes-Oxley regulations.

    So you've only got two choices: "Let them audit the code" or "Lose a customer".

    FYI, I work as a programmer at a bank.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  20. Here is your solution: by master_p · · Score: 1

    Just make the application in Obfuscated C! by the time the audit has finished, new computers will be able to play DNF!

  21. Kind of naive by apankrat · · Score: 1

    >> Non Disclosure Agreements and Really Good Lawyers, that's what it's all about.

    > Spot on.


    Tell that to Cisco

    --
    3.243F6A8885A308D313
  22. What does Fortify do, anyway? by Myria · · Score: 2, Insightful

    What kind of things can an automated process do for auditing, anyway? This is Java we're talking about. 90%+ of things that are security problems in other languages aren't even an issue in Java, as the compiler and/or the assembly language verifier already do that.

    The main issues in Java are going to be logic errors and misimplementing security protocols. Things like bad packet handling in a network server. There is NO WAY an automated system can detect problems like this: it is the Halting Problem.

    So what can this program do? All I can imagine it doing is checking to make sure that you're not using any function calls that Fortify's authors consider "unsafe", no matter whether the particular context makes it safe. It probably will also yell at you for using variable names that don't follow its stupid rules.

    I can imagine how things like this exist. They approach these security-paranoid companies with offerings of a magic solution that will allow them to verify that their system is secure. Extremely afraid of being the next target of a class-action lawsuit, they are eager to pay large sums of money. The people who make the decisions aren't trained in computer science, so they don't understand that an automated system such as this is truly impossible.

    It is the small companies who have to deal with this that suffer. The magic oracle says that you used a single letter as a variable name, so you absolutely must change it, with no excuses. You spend a lot of time and money "fixing" it to please the oracle, when you have done absolutely nothing for true security.

    Melissa

    --
    "Screw Sun, cross-platform will never work. Let's move on and steal the Java language." - Visual J++ Product Manager
    1. Re:What does Fortify do, anyway? by bentcd · · Score: 1

      One example of things you may want to check is whether the code ever calls Thread.stop(). If it does, it is suspect. I am sure there are numerous pitfalls like this to search for once you start thinking about it.

      --
      sigs are hazardous to your health
    2. Re:What does Fortify do, anyway? by ctnp · · Score: 1

      DISCLAIMER - I work for a software company that specializes in application security. Just not Fortify.

      High-level languages like Java tend to have high-level security weaknesses, just like low-level languages like C/C++ have low-level weaknesses. Especially in web-accessible code (just because it's not an applet doesn't mean it's not web-accessible), there are right ways to do things (such as parameter validation, proper encoding, crypto usage, etc.) that even simple static analysis (or hand-scans, if you're lo-tech) can find.

      Companies like Fortify, or Ounce Labs, or SecureSoftware do more than just static analysis of code and can find potential and actual flaws that pen-testing cannot find. When you're dealing with risk management & mitigation, and you have billions of dollars at stake, those potentials need to have dollar figures attached to them just like the actual flaws do. It's all about quantifying the risks of deploying new software.

    3. Re:What does Fortify do, anyway? by Anonymous Coward · · Score: 1, Informative
      The main issues in Java are going to be logic errors and misimplementing security protocols. Things like bad packet handling in a network server. There is NO WAY an automated system can detect problems like this: it is the Halting Problem.
      I think a lot of people get confused about how the halting problem applies to real world software engineering. The halting problem proves that you can't determine if a program halts with 100% accuracy. However, you could write a program that estimates if a program halts, and then work on making the accuracy better and better. If you could build something that is correct 98% of the time, that might turn out to be useful enough that people would pay money for it, even though many slashdotters would complain that it's a scam.

      Banks and other big companies aren't stupid. They're really good at making money. Fixing bugs, especially security bugs, after software has shipped or gone live on the internet is extremely expensive. So these security products must be finding actual problems and giving a good ROI or I doubt they would be dishing out $80k.
    4. Re:What does Fortify do, anyway? by bvc · · Score: 1

      It turns out there's a fair number of things you can do to screw up security, even in Java. Think SQL injection and cross-site scripting. Check out http://vulncat.fortifysoftware.com/ for a longish list of code-level defects that can cause security problems.

      Static analysis has a lot more to offer than looking at the names of methods and variables. FindBugs ( http://findbugs.sourceforge.net/ ) is an excellent open-source tool for finding common problems in Java, though it's focus is much more on code quality rather than security.

      Full disclosure: I'm one of the founders of Fortify.

      Brian

  23. Things to consider by Sven+Tuerpe · · Score: 4, Informative

    I work for a lab that does seurity reviews and evaluations. There are a few things you might want to consider:

    • There is nothing wrong with the bank's request. Think of it as additional quality assurance: your customer requests that your product provides a certain level of quality, and that you prove that.
    • Having the security of your product certified in whichever way can gain you a considerable advantage in the market. Make sure that after successfully passing the review you get some written document that certifies the evaluation and can be used elsewhere.
    • If you do not fully trust your customer, involve an independent party. Check whether your customer would accept a review by someone else if properly documented.
    • Plan ahead for worst case. Everyone makes mistakes so the review may find issues. Make sure that you can fix them and reevaluate.
    • If your company does not employ mature development processes and quality assurance, don't even think about passing a code review.
    • As pointed out by others already, not handing over the source code may not really protect you. One can find out a lot about the inner workings of a system even in a black-box test, and there is no effective protection against reverse engineering.
    • There may be easier places to steal your source code than a properly operated security lab. Make sure that the security precautions of whoever is going to review your software match those of your own company. You do have security management, don't you?
    • If you really don't like to hand over the source code to anybody, there may be an alternative: indemnify your customer against all damages that may emerge from security issues in your product. This may be costly, though.
    --
    http://erichsieht.wordpress.com/category/english/
  24. Yes. LOTS of profits. by Vo0k · · Score: 1

    That is what I thought about.
    Allow audit of the source under full NDA and without leaving any technical means to circumvent the NDA.
    As an extra: advise and provide help of lead programmers of your company - they will be able to immediately explain any doubts, possibly fix immediately all easier security bugs found by the audit (no waiting for feedback: "here's an error, fix it", week later "here's a fixed version, audit it", another week later "the fix is not satisfactory, fix again" and so on), and in the meantime they will look at the strangers' hands, making sure no piece of software leaves the room without their knowledge.
    If they want to be sure the binaries they get are the result of the code they audit, finish the audit with compilation of the newly-audited code and burn a CD with the newly-compiled binaries, handing it to them, all while they look and see you're not doing any tricks.

    Some profits:
    - both sides learn a bit.
    - your code is safe.
    - potential bugs may be fixed immediately
    - audit is more efficient (thanks to communication, the auditors have a better understanding of the code)
    - You are sure they don't make up anything to screw you
    - they are sure you don't hide anything from them.
    The minus is that they need to bring their own audit software and install it on your computers. Of course, deleting it afterwards :)

    Generally, neither side trusts the other enough, so the only solution is that both sides look at each other's hands all the time.

    --
    Anagram("United States of America") == "Dine out, taste a Mac, fries"
  25. Merely an audit? by bbc · · Score: 3, Insightful

    As a buyer of software I would not only expect (not demand: expect) access to the code for an audit, I would also expect you to keep the source code in escrow, in case you fold and are no longer able to support the software.

    As the other poster said, if you're in the business of moving bits on discs, you're already ruined. You're just waiting for the time delay to kick in.

  26. just think about it a minute.... by Malor · · Score: 2, Insightful

    While your code is very, very important to you, to that bank, it's just a program they want to buy. To the auditor (if it's a separate organization, as it probably legally has to be), it's just a bunch of code that the bank wants checked out.

    Your company, virtually certainly, isn't even vaguely important enough to them to mess with. If that code leaked and the word got out, the reputation of both the bank and the auditor would be badly damaged...a financial loss greatly in excess of the net worth of your entire company.

    If for some reason they wanted to leak the code, it would be a lot cheaper for them to just buy you out, lock, stock and barrel.

    Use your brain. Give them the damn code. They'll probably treat it better than you guys do. They have a lot more to lose if they don't.

    1. Re:just think about it a minute.... by yoprst · · Score: 1

      The bank/auditor have employees, who have very different agenda from the bank/auditor itself. They can be fired, become upset an distribute your code. The bank's board of directors won't do their best to stop it - it's your problem. I'm not saying letting someone see your code is bad - we're giving out our source code to our most important customer. But doing it mindlessly, without sufficient (legal/technical) precautions is not a good idea.

  27. Laughing at the code by Anonymous Coward · · Score: 0

    Code auitor: "Hahahahaha! this code is so bad! I'm going to post it on TheDailyWTF.com so everyone can laugh at it."

  28. there are standard ways to do this by Surt · · Score: 1

    You have the bank sign some legal document that says they pay for the harm if your source code gets out due to their fault. The lawyers know how to take care of this. Get one. Problem solved.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  29. Re:Security with closed and open source by CastrTroy · · Score: 1

    The reason that closed source software has more bugs is mentioned in your post, but isn't because it's closed source. It's because of A) Programmers who don't care and think that since nobody will see it that they don't have to make it look good. And B) Managers rushing the software out the door before it's ready. You could have an open source project where the programmers really don't care but it happens less often. You could have a manager pushing an open source project out the door before it's ready, but it doesn't usually happen. Also I'd like to point out that when closed source software has a bug, there's only the people at the company who can fix it. With open source, anybody who wants to fix the bug can fix the bug.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  30. Re:Avoids certain morons.....hum,hum? by hesaigo999ca · · Score: 1

    I would believe that some company that puts their whole reputation on the line by handling people's lifeblood code in their hands would make sure to do a little more then just check names of variables...

    I would think first that they have a big database of source code (of which they probably put a disclaimer for in their license agreement and put your code in their db for further use...) and compare to see if you have not already used someone else's code signature or even GPLed code for that matter.

    Second, they would also probably put a stress test to any network type interaction within a honeypot to observe the demands of the software in question...seeing as it is possible to tie up multi threads quite nicely with poorly designed code and create a DDOS attack within a network....

    Thirdly but not least, they also probably stress factors such as math rounds, nested function calls, and memory leaks....and no way you can also guarantee that running a highly intensive program on a server that already has a big charge would allow for someone to not purposely leave out the part about requiring a certain amount of resources (thereby freezing up your whole server). This is what they would end up finding out for you, once all this has been checked into on your behalf (if you are the purchasing party needing such services).

    And again, once you have been through it once, and have been certified,
    it ends up working in your favor for future endeavors , and can make a very nice plaque on the wall!

    L.A. Senior developer

  31. Re:Security with closed and open source by dpilot · · Score: 1

    He mentioned the ego factor. If your source code is ugly, crufty, and buggy, and you let it out into the open, people will mock and deride you and your skills. While open source advocates like to talk about "thousands of eyes," I suspect pride and socialization have just as much to do with the code quality.

    I guess I'll tone down the "mock and deride" statement a little. In the best world, people will constructively help you improve your skills. If you refuse or fail to learn, then they'll mock and deride - and ignore you, which is just as bad.

    --
    The living have better things to do than to continue hating the dead.
  32. Re:Security with closed and open source by dougmc · · Score: 2, Insightful
    Closed source is proven to be far more secure in the real world than source that has been picked through by numerous people.
    OK, this is flamebait, but what the hell. It annoys me when people claim something is proven, without actually supplying any proof.
    To be fair, a thought experiment rarely provides proof of anything. Yes, they're useful for figuring things out and demonstrating things, but they don't prove anything.

    As for the `far more secure' claim, there is some truth to it. (Or were you saying that your comment was flamebait rather than the post you were replying to?) If you have a closed source project (and even an open source project may be similar), it probably has lots of bugs -- some you know about, many you don't. The source code may even be riddled with FIX THIS! BIG SECURITY HOLE! type comments. If the source gets out somehow, then people who go over this code may be looking for security holes to use against you and your customers. Which isn't automatically bad, but there's two differences between this model and the traditional open source model -- 1) nobody is supposed to have your source, so anybody who does is pretty much by definition `bad', and 2) bugs found are not likely to be reported back to you, so you can't go and fix them unless you're able to detect and analyze an exploit actually being used.

    That said, the loss of your company's source code isn't as big a deal as some might think. Yes, depending on the software, crackers might interested in using it to find holes in your product. However, if your competitors are legitimate companies, they're not going to touch your source with a 10' pole. Even if they could learn all sorts of neat stuff from it, it could also easily lead to corporate ruination -- all it takes is one disgruntled employee to report it to you or the authorities and provide proof. And really, your software may already be out there -- it only takes one employee and a portable hard drive to take it all off site. (Of course, he'll have a hard time selling it for the reasons I gave above ...)

    That, and just having the source is not everything. Your company probably also provides support and professional services. For large projects, this is really important, and software that doesn't come with support often isn't very useful.

    In any event, even if you do give out your source to this customer, a full code audit is not likely to happen. They'll use their automated tools, they'll look at key parts, but it's very unlikely that they'll have the resources or time to do a full audit like the OpenBSD team did when they forked from NetBSD -- instead, they're just looking for low lying fruit, and are likely to find only a small percentage of the bugs. On the other hand, they'll probably report what they find back to you so you can fix it.

    But as for the dangers, for starters, make sure your legal team makes a iron-clad NDA for the other company to sign. If your company is too small to have a dedicated legal team, get a lawyer for this. Make sure that only a small group of people will have access to the code, and that it's deleted when it's done, with big penalties if this is not done. Perhaps the audit could be done on your premises, on your hardware, supervised by your employees?

  33. Re:Security with closed and open source by edwdig · · Score: 1

    It seems obvious to me that the open source project would quickly have its bugs fixed, because of two reasons. The coders on the project would have ego on the line, and would therefore be much more careful with publicly available code. Due to the immense availability of peer review, issues are discovered and reported much more quickly and thoroughly.

        It also seems obvious that the closed source project would have many more bugs, for many different reasons. Programmers are more likely to ignore issues, because "nobody can see it". The pressure of getting a release out means that things are quickly cobbled together without much thought for security. If there is a review of code, it is not likely to be as thorough as what is available to open source.


    From my personal experiences, I felt the opposite. When I worked on commercial, closed code, it was something I took pride in. Not many people can say something they worked on made it to store shelves. I wanted it to be as good as could be, as it reflected on me.

    When I've contributed to open source projects, I've felt less concern about the quality. I've pretty much had it in the back of my mind that if I make a mistake, someone else will see it and correct it. Realisticly though, whenever I submit a patch to a project I get very little feedback on it. Generally any feedback I do get is on the functionality of the patch rather than the implementation. If I submit a large patch, people are probably only going to catch the fairly obvious flaws unless they have a good reason to mess with the code I just submitted. When you're talking about something really important like the Linux Kernel, I'm sure patches will get stricter reviews. But when you start talking stuff like small utilities and random KDE/Gnome apps, people aren't going to care that much.

  34. What we did by MarkLewis · · Score: 1

    I worked for a company that sold software to banks, and we had to satisfy the same requirements. We ended up negotiating an arrangement where a consultant from IBM who would show up on our premesis, check out a laptop with no network or removable storage support that had a copy of our source code on it, read source code all day, then check it back in and go home.

    We thought it was pretty draconian, but the bank thought it was a great idea; bank IT staff by necessity live in a paranoid world, so I guess they didn't mind so much.

    1. Re:What we did by BillAtHRST · · Score: 1

      The beauty of this approach is that it works for the bank too -- they don't want to have to deal with any potential legal exposure if they decide not to use your software for some reason.

  35. Been there, done that by LadyLucky · · Score: 1

    Often companies will use a 3rd party auditor - particularly if they don't have the skills themselves. We've been through that several times, no problems. They can also help by spotting things you weren't.

    --
    dominionrd.blogspot.com - Restaurants on
  36. Even with the NDA, Taint it Before you Share it! by stuffduff · · Score: 1

    OK, With the NDA you may have legal grounds to sue their asses off, but what happens when you have to do this with some other company, and the one after that? How can you know who leaked it? Just do what the CIA/NSA/DOD et al have been doing for years. Make small almost insignificant modifications, (comments, variable names, etc) so that each version is slightly different. Get the names of who will actually be handling the code from their side and supply each with a different tainted version. So, when and if your source does show up in the wrong hands, you have a higher probablity of identifying specifically where it came from.

    --
    "Can there be a Klein bottle that is an efficient and effective beer pitcher?"
  37. Ever heard of legalese ? by billcopc · · Score: 1

    Let's review real quick:

    1. you are a software developer with big clients such as US banks
    2. you must submit your source code to a 3rd party auditor
    3. you think slashdot is a good source of advice

    Well, seeing as you're in business I'll assume #3 is just a temporary brain fart on your behalf. If you're really worried about your code falling into the wrong hands, then have a lawyer write up a nice contract that expressly forbids the bank and any other party from using the code for purposes other than security auditing, and throw in a time limit while you're at it. That way you have a leg to stand on if your code were to be spread. This is called protecting your work and intellectual property.

    Just name any big software company, and try to figure out what they would do if their code was stolen. Yeah, they'd sue your ass into the ground. Why should your company be any different ?

    --
    -Billco, Fnarg.com
  38. Exactly by swillden · · Score: 1

    You'll sue. You'll win. You'll be fine. Your competitor will be ruined. The person who leaked the code will be ruined.

    This is it exactly. I don't understand how it got to be this way, but the "Oh, no! Our source code must be kept secret or we'll be ruined! Ruined, I say!!" attitude is almost as silly as it is widespread. That's what copyright is *for*: You can hand out copies of your source all over the place and no one is even allowed to compile it without your permission. Certainly no one is going to be able to set up shop and compete with you using your own code.

    In some, rare, cases, there's something in the code that is so fiendishly clever and novel that even allowing your competitors to read your code and pick up your ideas actually would really damage your business. That's what trade secret law and NDA contracts are for. Patents, too. But in most cases, that really *isn't* the case. Odds are, your software doesn't do anything that someone else couldn't write software to do, given the time and the resources, and odds are that your competitors wouldn't be able to benefit much from direct infringement without you knowing and suing their pants off.

    IMO, one of the best things about the Free Software and Open Source movements is that they're exposing more people to the idea that code doesn't need to be secret. You can even publish your code on the Internet *and* still sell it (c.f. Trolltech, Sleepycat, MySQL AB, etc.). And even if you don't go so far as to allow its use for free by some people, you still don't need to be so frightened that someone might see it.

    Unless, of course, it includes illegal copies of someone else's code. *Then* you have a reason for keeping it secret.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  39. Handling Auditors by triso · · Score: 1
    Do the code review and testing in your office. Set up some review stations connected on an independent net--ie. not on the Internet or company network. Remove the burners,floppy drives and USB ports to be safe. That will stop most leaks from getting out.

    Give them access to a another machine if they need Internet access.

  40. Re:Security with closed and open source by deek · · Score: 1

    To be fair, a thought experiment rarely provides proof of anything. Yes, they're useful for figuring things out and demonstrating things, but they don't prove anything.


    To be just as fair, I never claim to prove anything :). I was just annoyed with the original poster, and his claims about closed source being proven more secure. But while I don't really prove anything, I hope I've shown that open source can have many reasons for being more secure.

    Whether it's open source or closed source, it is impossible to say software is 'secure'. My only argument, is that open source software is generally more secure than closed source software. Sure, there'll be open source projects that are horribly insecure, and there'll be closed source projects that are very secure. But these are the minority, in my argument.

  41. What would I do? by annisette · · Score: 1

    Send the bank a hard copy of all the posts on this topic, sign the contract.

    --
    I eat my grapes at room temperature, cuz the cold ones hurt my teeth
  42. Industries with requirements for source code by brennz · · Score: 1

    Big financial markets, certain medical devices (huge liability), anything nuclear and intelligence/defense.

    'Most of the code audits though, are for the low hanging fruit only, since a huge codebase can take a very long time to become familiar with, and the auditors never attain the same level of understanding as the original authors' (paraphrased as told to me by a defense code auditing guru).