Culture differences are a huge problem when outsourcing work. Unless you're an experienced software person who can write detailed specs of your software requirements, or unless you hire someone locally to do it, you're pretty much setting yourself up for failure when outsourcing to off-shore dev teams, IMHO. It has nothing to do with "red flags" you can look for.
Software development is like herding cats. You need everybody on the same page, and the way you do that is either by having really detailed specs, having a strong leader there who can answer every stinking question that comes up, or being there in person. You can try Agile methods with daily stand-ups and 2-3 week sprints, but I haven't heard that approach helps much.
Part of the cultural issue is that in some countries, like India and Pakistan, is that people are brought up to not question people in authority. So if there's something that isn't clear in a spec or directions they're given, they'll think about it then make up their own mind without discussing it with anybody in charge of anything. It's just what they do. It's like how people in the Philippines always call you "sir" or "maam" -- it's unnerving to me, but it's just how they are.
I've worked in lots of projects that hire lots of Asians (from India, Pakistan, China, Singapore, etc.) and one thing I've observed very consistently is that during department-wide project meetings, these people will sit there silently and never, ever, ask any questions, and rarely comment on anything. Even when asked for direct feedback, they always agree with whatever the speaker is saying. This totally baffles me, because one-on-one outside the meeting they can be extremely vocal with their dissatisfaction about things on the project.
I've come to the conclusion that a big reason for this is most of them are here on H-1B visas and they're kind of stuck as slaves until their green cards are issued. If they lose their jobs and cannot find more work within 30-60 days, they'll frequently get sent home. The contracting companies they work for tell them they'll guarantee them "bench time" between gigs, but in reality these places don't keep anybody on the bench for more than 2 months -- they'll cut them loose if they cannot place them within that time-frame.
But I cannot explain why it is that this same kind of attitude seems prevelant even when they're working in their home countries. There can be problems that they see and they simply won't speak up. So the project can slowly slide down the toilet, everybody on the dev team knows it, yet nobody talks about it until the shit hits the fan and you threaten to cut them ALL loose. THEN they start to make suggestions, but at that point it's usually way too late because there's too much re-work needed.
When it comes to software development, you need to hold an attitude like, "fail fast, fail often". And don't cover it up, but plow on through it. Too many developers are afraid to discuss questions for fear of looking less skilled than they pretend to be (which, in fact, an awful lot of them are!).
If you're outsourcing a software project, you damn well better be a pretty good project manager and know how to deal with software dev teams! If you're not, then hire one locally. Do NOT expect to succeed by handing some vague specs to some guy in India who's promised to deliver on-time and under-budget from his team of exceptional programmers. He's just another used-car salesman trying to bring in work for his scrappy team of programmers, many of whom are probably learning on the job.