When I was growing up, which is a process still ongoing, by the way, we used to say about certain people they have a weak character. These were the misfits, the miscreants, the people who did bad things, who misbehaved, the people who couldn't rely on. They had a weak character. A weak character hasn't made it yet into the Diagnostic and Statistical Manual. Probably, there's not enough money in it. But I believe it's a catch-all phrase that captures a lot of what's wrong with the mental health of many people. So today, I'm going to discuss weak people, and especially people-pleasers. My name is Sam Vaknin, and believe it or not, I'm a professor of psychology, hard to tell. But I'm also the author of Malignant Self-Love, Narcissism Revisited, the Bible of Narcissism. The first book ever published about narcissistic abuse in 1999. Narcissistic abuse is a phrase that I had coined. So I know a bit about it, and today we are going to discuss narcissistic abuse in conjunction with weakness of character. I have a personal confession to make. Yes, yes, another one. Weak people terrify me. To my mind, weakness of character is indistinguishable from evil. Weak people act as though or as if they were evil. Weak people are suggestible, malleable, mutable. They shape-shift all the time, they don't have a core, and so they're highly unstable, they're unreliable, they're untrustworthy. People pleasing and an inability to say no, even to the most degrading offers and demands, these lead weak people to be reckless. They engage in the most disgraceful and antisocial acts, simply because they cannot countenance or contemplate the alternative of saying no up to here. This is my boundary. This is where I begin a new cease to be. People pleasers are also enablers in the worst sense of the word. In the worst sense of the word, they aid and abet the self-destructiveness of others, again, because they can't say no. Weak people are the core problem of humanity nowadays. Ironically, in an age of empowerment, where every woman is as strong as every man, and every man is self-sufficient because of technology, etc., etc., and in this very age, I think, weakness of character is rampant, never been worse, never been more widespread. So gradually, these people, weak people, in order to survive their racking guilt and shame and self-loathing, they evolve into narcissists and psychopaths. Masterson was the first to suggest that narcissism is a compensatory mechanism for shame. These people, weak people, mistake defiance for boundary assertiveness. They are aggressive. They are not self-respecting, they have no dignity. But to compensate for that, they try to take away the dignity and self-respect of others. Weak people betray their loved ones. Weak people breach their own fragile and permeable boundaries, time and again. And they do all this just in order to fit in, to be liked or to counter loneliness and boredom which they find intolerable. They have a low threshold for both. Granted, many weak people, many weak folks, are mentally ill. They suffer from borderline personality disorder or dependent personality disorder, for example.  They have just been conditioned by needy and selfish parents to become subservient and self-denying and to lie about it and to hide, to conceal and to manipulate. To become, in other words, Machiavellian. There's a certain type of person attracted to weak characters. The rescuer, the saviour, the fixer types. You should watch my video on the Carpman drama triangle. These rescuers or saviours or fixers, they're attracted to weak mates. They crave the omnipotence that comes with the territory, but also the drama. They desire the ups and downs, the pain of betrayal, the sweet reconciliation or reconciliations after tumultuous fights. The intermittent reinforcement and the trauma bonding. They are like pot on a lid, substrate and reactant. They're perfect together. They're perfect together, weak people and rescuer or fixer types. Some intimate partners of the weak mistake the people-pleaser for the empathic, kind, loving and altruistic sort. They say, my partner is not weak and he's not a people-pleaser. He's just kind. He's just nice. He's just empathic. He's just altruistic. He's just charitable. He's just highly sensitive. And yes, of course, the culmination of it all. He is a supergalactic nova empath. But these are just weak people, masquerading as empathic people pretending to be kind, loving and altruistic. Whatever they do, they do because they don't dare to be themselves. And the partners of such people are in for a rude awakening as the weak mate or the weak spouse or the weak girlfriend or the weak boyfriend pivots and cheats on them and then lies and betrays them just in order to gain the approval and the continued presence of others who are supposedly far less significant. So the people-pleaser and the weak personality, there's no waiting. There's no way. There are no waits. Like everyone is interchangeable. Everyone is the same. A boyfriend, a boyfriend and a casual stranger. They're the same. To please the casual stranger, the girlfriend, the weak girlfriend will not hesitate to betray her boyfriend and to cheat on him, to cheat, to fit in. The weak character boyfriend will not hesitate to push his girlfriend to have group sex, for example. They would sacrifice anything and anyone and everything and everyone just to feel accepted, loved, liked, in, cool. Many weak people also provoke abuse. They behave in ways which they know are going to lead to maltreatment. They push buttons. This is called projective identification. They provoke the abuse and the abuse, in this case, is reactive and not justifying abuse. Nothing ever justifies abuse. But still, we're all human and weak people tend to bring on abuse in copious quantities. They also strain compulsively extramarital affairs, compulsive cheating. They prevaricate. They lie. They confabulate, habitually. They abuse substances. They engage in extreme, extreme sexual self-trashing. You won't believe some of the things are hurt. And they act recklessly. And all these are forms of self-harming. The weak personality is ego-dystonic. The weak person hates himself. The weak character loathes herself, the self-loathing, self-hatred. There's a desire for punishment on the one hand and to prove to oneself that one is really an unworthy or bent object. The weak character grew in an environment where he or she were told that they're bad. They're unworthy. If they don't perform, they don't deserve love. And so they seek to affirm, to confirm this verdict, this sentence by parental figures. They seek to be the bad objects, the unworthy objects, that they were told they are. They seek to behave in ways which inflict on them the pain and punishment that they deserve for being bad and unworthy.  The exact equivalent of cutting or self-mutilation in borderline personality disorder. On the other hand, weak personality, here is Minnie. She's been hanging out for months with other mugs, but she relented, she apologized, and she shed tears, and now I find her hot, very hot. Minnie is the quintessential weak person, and I'm, of course, a rescuer, savior, and fixer type. If Minnie ever breaks, I'll fix her with my superglue. Don't ask. Okay, some high-functioning patients compartmentalize their mental illness. Some of these weak personalities appear to be strong, agentic, and empowered. They appear to be autonomous and independent. They appear to be dominant. So an accomplished professional by day prostitutes herself intoxicated by night. A beloved medical doctor turns pedophile after working hours. A respected politician burglars homes by moonlight. All rare cases, but the way. So these are weak personalities, masquerading. Masquerading as strong personalities by emphasizing their professional lives. But in their private lives, they are good for nothing.  What should you do with weak people? What should you do with mentally ill?  Forgive these people. Do not rage. Do not rage. Don't be angry. There's nothing to be angry at. Do not mourn what could have been, because nothing could have been.  There's nobody home. There's nobody to be angry at. There's nobody to negotiate with. There's nobody to compromise with. There's nobody to talk to. They know not what they're doing. These people are spiraling out of control, and they're threatening to take you with them. Do not try to make sense of the choices and actions of such poor, miscreants and misfeeds. For there is none. It's all nonsense. Just move on with your life. Forget these people. Remember, you're under no obligation to sacrifice yourself. I repeat, you're under no obligation to sacrifice yourself.  There's no obligation to love them, and there's no duty to sacrifice yourself. Your remote sympathy and pity are sufficient offerings. Believe me, if you can, go no contact. Safeguard your life. Safeguard your life. Protect your sanity. Stay away. Remove such people from your life. Post-haste, regardless of how agonizing and heartbreaking such a breakup may be to you. No contact. Do not be a rescuer. Do not be a saviour. Do not be a fixer, because if you do, you will end up being in need of rescuing, saving and fixing. You will have become just the latest victim of these people. These people victimize not because they are malicious. They victimize because they're helpless, because they are weak, and because weakness is ultimately indistinguishable from evil.


Be careful Yeah, okay, I got a trimmer ready No, yeah, okay, I won't person you pop Dispelling it I don't know Yes, yes, yes, yes, yes. I'll never iron ship the shaman again. Keep going, watch the point, I'll land the point Five seconds, I have gas on everybody at home. Careful, careful, careful, I've got an auto coming to you. I'll never iron, I'll do fire as well. I can ship shaman, I guess.


the President of the United States. During these first days of 1984, I would like to share with you and the people of the world my thoughts on a subject of great importance to the cause of peace, relations between the United States and the Soviet Union. Tomorrow, the United States will join the Soviet Union and 33 other nations at a European disarmament conference in Stockholm. The conference will search for practical and meaningful ways to increase European security and preserve peace. We will be in Stockholm with the heartfelt wishes of our people for genuine progress. We live in a time of challenges to peace, but also of opportunities to peace. Through times of difficulty and frustration, America's highest aspiration has never wavered. We have and will continue to struggle for a lasting peace that enhances dignity for men and women everywhere. I believe that 1984 finds the United States in the strongest position in years to establish a constructive and realistic working relationship with the Soviet Union. We've come a long way since the decade of the 70s, years when the United States seemed filled with self-doubt and neglected its defenses while the Soviet Union increased its military might and sought to expand its influence by armed forces and threat. Over the last 10 years, the Soviets devoted twice as much of their gross national product of military expenditures as the United States, produced six times as many ICBMs, four times as many tanks, twice as many combat aircraft, and they began deploying the SS-20 intermediate-range missile at a time when the United States had no comparable weapon. History teaches that wars begin when governments believe the price of aggression is cheap. To keep the peace, we and our allies must be strong enough to convince any potential aggressor that war could bring no benefit, only disaster. So when we neglected our defenses, the risks of serious confrontation grew. Three years ago, we embraced a mandate from the American people to change course, and we have. With the support of the American people in the Congress, we halted America's decline. Our economy is now in the midst of the best recovery since the 60s. Our defenses are being rebuilt. Our alliances are solid, and our commitment to defend our values has never been more clear. America's recovery may have taken Soviet leaders by surprise. They may have counted on us to keep weakening ourselves. They've been saying for years that our demise was inevitable. They said it so often, they probably started believing it. Well, if so, I think they can see now they were wrong. This may be the reason that we've been hearing such strident rhetoric from the Kremlin recently. These harsh words have led some to speak of heightened uncertainty and an increased danger of conflict. This is understandable, but profoundly mistaken. Look beyond the words, and one fact stands out. America's deterrence is more credible, and it is making the world a safer place, safer because now there is less danger that the Soviet leadership will underestimate our strength or question our resolve. Yes, we are safer now, but to say that our restored deterrence has made the world safer is not to say that it's safe enough. We're witnessing tragic conflicts in many parts of the world. Nuclear arsenals are far too high, and our working relationship with the Soviet Union is not what it must be. These are conditions which must be addressed and improved. Deterrence is essential to preserve peace and protect our way of life, but deterrence is not the beginning and end of our policy toward the Soviet Union. We must and will engage the Soviets in a dialogue as serious and constructive as possible, a dialogue that will serve to promote peace in the troubled regions of the world, reduce the level of arms, and build a constructive working relationship. Neither we nor the Soviet Union can wish away the differences between our two societies and our philosophies, but we should always remember that we do have common interest. And the foremost among them is to avoid war and reduce the level of arms. There is no rational alternative but to steer a course which I would call credible deterrence and peaceful competition. And if we do so, we might find areas in which we could engage in constructive cooperation. Our strength and vision of progress provide the basis for demonstrating with equal conviction, our commitment to stay secure, and to find peaceful solutions to problems through negotiations. That's why 1984 is a year of opportunities for peace. But if the United States and the Soviet Union had arrived to the challenges facing us and seized the opportunities for peace, we must do more to find areas of mutual interest and then build on them. I propose that our governments make a major effort to see if we can make progress in three broad problem areas. First, we need to find ways to reduce and eventually to eliminate the threat and use of force in solving international disputes. The world has witnessed more than 100 major conflicts since the end of World War II. Today, there are armed conflicts in the Middle East, Afghanistan, Southeast Asia, Central America, and Africa. In other regions, independent nations are confronted by heavily armed neighbors seeking to dominate by threatening attack or subversion. Most of these conflicts have their origins in local problems, but many have been exploited by the Soviet Union and its surrogates. And, of course, Afghanistan has suffered an outright Soviet invasion. Fueling regional conflicts and exporting violence only exacerbate local tensions, increase suffering, and make solutions to real social and economic problems more difficult. Further, such activity carries with it the risk of larger confrontations. Would it not be better and safer if we could work together to assist people in areas of conflict in finding peaceful solutions to their problems? That should be our mutual goal. But we must recognize that the gap in American and Soviet perceptions and policy is so great that our immediate objective must be more modest. As a first step, our government should jointly examine concrete actions that we both can take to reduce the risk of U.S.-Soviet confrontation in these areas. And if we succeed, we should be able to move beyond this immediate objective. Our second task should be to find ways to reduce the vast stockpiles of armaments in the world. It's tragic to see the world's developing nation spending more than $150 billion a year on armed forces, some 20 percent of their national budgets. We must find ways to reverse the vicious cycle of threatened response, which drives arms races everywhere it occurs. With regard to nuclear weapons, the simple truth is America's total nuclear stockpile has declined. Today, we have far fewer nuclear weapons than we had 20 years ago. And in terms of its total destructive power, our nuclear stockpile is at the lowest level in 25 years. Just three months ago, we and our allies agreed to withdraw 1,400 nuclear weapons from Western Europe. This comes after the withdrawal of 1,000 nuclear weapons from Europe three years ago. Even if all our planned intermediate-range missiles have to be deployed in Europe over the next five years, and we hope this will not be necessary, we will have eliminated five existing nuclear weapons for each new weapon deployed. But this is not enough. We must accelerate our efforts to reach agreements that will greatly reduce nuclear arsenals, provide greater stability, and build confidence. Our third task is to establish a better working relationship with each other, one marked by greater cooperation and understanding. Cooperation and understanding are built on deeds, not words. Complying with agreements helps, violating them hurts. Respecting the rights of individual citizens bolsters the relationship. Denying these rights harms it. Expanding contacts across borders and permitting a free exchange or interchange of information and ideas increase confidence. Sealing off one's people from the west of the world reduces it. Peaceful trade helps, while organized theft of industrial secrets certainly hurts. Cooperation and understanding are especially important to arms control. In recent years, we've had serious concerns about Soviet compliance with agreements and treaties. Compliance is important because we seek truly effective arms control. However, there's been mounting evidence that provisions of agreements have been violated and that advantage has been taken of ambiguities in our agreements. In response to a congressional request, a report on this will be submitted in the next few days. It is clear that we cannot simply assume that agreements negotiated will be fulfilled. We must take the Soviet compliance record into account, both in the development of our defense program and in our approach to arms control. In our discussions with the Soviet Union, we will work to remove the obstacles which threaten to undermine existing agreements and the broader arms control process. Examples I've cited illustrate why our relationship with the Soviet Union is not what it should be. We have a long way to go, but we're determined to try and try again. We may have to start in small ways, but start we must. In working on these tasks, our approach is based on three guiding principles, realism, strength and dialogue. Realism means we must start with a clear-eyed understanding of the world we live in. We must recognize that we are in a long-term competition with a government that does not share our notions of individual liberties at home and peaceful change abroad. We must be frank in acknowledging our differences and unafraid to promote our values. Strength is essential to negotiate successfully and protect our interests. If we're weak, we can do neither. Strength is more than military power. Economic strength is crucial, and America's economy is leading the world into recovery. Equally important is our strength of spirit and unity among our people at home and with our allies abroad. We're stronger in all these areas than we were three years ago. Our strength is necessary to deter war and to facilitate negotiated solutions. Soviet leaders know it makes sense to compromise only if they can get something in return. But America can now offer something in return. Strength and dialogue go hand in hand, and we're determined to deal with our differences peacefully through negotiations. We're prepared to discuss the problems that divide us and to work for practical, fair solutions on the basis of mutual compromise. We will never retreat from negotiations. I have openly expressed my view of the Soviet system. I don't know why this should come as a surprise to Soviet leaders who've never shied from expressing their view of our system, but this doesn't mean that we can't deal with each other.  The fact that neither of us likes the other system is no reason to refuse to talk. Living in this nuclear age makes it imperative that we do talk. Our commitment to dialogue is firm and unshakable, but we insist that our negotiations deal with real problems, not atmospherics. In our approach to negotiations, reducing the risk of war, and especially nuclear war, is priority number one. A nuclear conflict could well be mankind's last, and that is why I proposed over two years ago the zero option for intermediate-range missiles. Our aim was and continues to be to eliminate an entire class of nuclear arms. Indeed, I support a zero option for all nuclear arms. As I've said before, my dream is to see the day when nuclear weapons will be banished from the face of the earth. Last month, the Soviet Defense Minister stated that his country would do everything to avert the threat of war. These are encouraging words, but now is the time to move from words to deeds. The opportunity for progress in arms control exists. The Soviet leaders should take advantage of it. We have proposed a set of initiatives that would reduce substantially nuclear arsenals and reduce the risk of nuclear confrontation. The world regrets, certainly we do, that the Soviet Union broke off negotiations on intermediate-range nuclear forces and has not set a date for the resumption of the talks on strategic arms and on conventional forces in Europe. Our negotiators are ready to return to the negotiating table to work toward agreements in INF, START, and MBFR. We will negotiate in good faith. Whenever the Soviet Union is ready to do likewise, we'll meet them halfway. We seek to reduce nuclear arsenals and to reduce the chances for dangerous misunderstanding and miscalculation. So, we have put forward proposals for what we call confidence-building measures. They cover a wide range of activities. In the Geneva negotiations, we've proposed to exchange advanced notifications of missile tests and major military exercises. Following up on congressional suggestions, we also proposed a number of ways to improve direct channels of communication. Last week, we had productive discussions with the Soviets here in Washington on improving communications, including the hotline. These bilateral proposals will be broadened at the conference in Stockholm. We're working with our allies to develop practical, meaningful ways to reduce the uncertainty and potential for misinterpretation surrounding military activities and to diminish the risk of surprise attack. Arms control has long been the most visible area of U.S.-Soviet dialogue, but a durable peace also requires ways for both of us to diffuse tensions and regional conflicts. Take the Middle East as an example. Everyone's interest would be served by stability in the region, and our efforts are directed toward that goal. The Soviets could help reduce tensions there instead of introducing sophisticated weapons into the area. This would certainly help us to deal more positively with other aspects of our relationship. Another major problem in our relationship with the Soviet Union is human rights. Soviet practices in this area, as much as any other issue, have created the mistrust and ill will that hangs over our relationship. Moral considerations alone compel us to express our deep concern over prisoners of conscience in the Soviet Union, and over the virtual halt in the emigration of Jews, Armenians and others who wish to join their families abroad. Our request is simple and straightforward, that the Soviet Union live up to its obligations. It has freely assumed those obligations under international covenants, in particular its commitments under the Helsinki Accords. Experience has shown that greater respect for human rights can contribute to progress in other areas of the Soviet-American relationship. Conflicts of interest between the United States and the Soviet Union are real. But we can and must keep the peace between our two nations and make it a better and more peaceful world for all mankind. Our policy toward the Soviet Union, a policy of credible deterrence, peaceful competition, and constructive cooperation will serve our two nations and people everywhere. It is a policy not just for this year, but for the long term. It's a challenge for Americans. It is also a challenge for the Soviets. If they cannot meet us halfway, we will be prepared to protect our interests and those of our friends and allies. But we want more than deterrence. We seek genuine cooperation. We seek progress for peace. Cooperation begins with communication. As I've said, we'll stay at the negotiating tables in Geneva and Vienna. Furthermore, Secretary Schultz will be meeting this week with Soviet Foreign Minister Gromyko in Stockholm. This meeting should be followed by others so that high-level consultations become a regular and normal component of U.S.-Soviet relations. Our challenge is peaceful. It will bring out the best in us. It also calls for the best in the Soviet Union. We do not threaten the Soviet Union. Freedom poses no threat. It is the language of progress. We proved this 35 years ago when we had a monopoly, a nuclear weapons, and could have tried to dominate the world. But we didn't. Instead, we used our power to write a new chapter in the history of mankind. We helped rebuild war-ravaged economies in Europe and the Far East, including those of nations who had been our enemies. Indeed, those former enemies are now among our staunchest friends. We can't predict how the Soviet leaders will respond to our challenge. But the people of our two countries share with all mankind the dream of eliminating the risk of nuclear war. It's not an impossible dream because eliminating these risks is so clearly a vital interest for all of us. Our two countries have never fought each other. There's no reason why we ever should. Indeed, we fought common enemies in World War II. Today, our common enemies are poverty, disease, and, above all, war. More than 20 years ago, President Kennedy defined an approach that is as valid a day as when he announced it. So let us not be blind to our differences, he said, but let us also direct attention to our common interests and to the means by which those differences can be resolved. Well, those differences are differences in governmental structure and philosophy. The common interests have to do with the things of everyday life for people everywhere. Just suppose with me for a moment that an Ivan and an Anya could find themselves, say, in a waiting room or sharing a shelter from the rain or a storm with a gym and sally. And there was no language barrier to keep them from getting acquainted. Would they then debate the differences between their respective governments or would they find themselves comparing notes as about their children and what each other did for a living? Before they parted company, they would probably have touched on ambitions and hobbies and what they wanted for their children and problems of making ends meet. And as they went their separate ways, maybe Anya would be saying to Ivan, wasn't she nice? She also teaches music. Jim would be telling Sally what Ivan did or didn't like about his boss. They might even have decided they were all going to get together for dinner some evening soon. Above all, they would have proven that people don't make wars. People want to raise their children in a world without fear and without war. They want to have some of the good things over and above bear subsistence that make life worth living. They want to work at some craft, trade or profession that gives them satisfaction and a sense of worth. Their common interests cross all borders. If the Soviet government wants peace, then there will be peace. Together, we can strengthen peace, reduce the level of arms and know in doing so that we have helped fulfill the hopes and dreams of those we represent and indeed of people everywhere. Let us begin now. Thank you.


Yeah, you know, obviously we got to do a better job and it starts with me jump-starting up the offense early Put ourselves in a hole again you know different Different reasons, but the reality is we put this up put ourselves in a hole So and we can't turn the ball over and so that's something we go I've got to look at and it's not just one person You know you're gonna make life hard for yourself Well, then you had to come back and then you're in a four-down territory and we don't make the fourth and three to try to cut it To one position possession game late, but we got to do a better job early in games. There's no doubt about it Yeah, I mean the first one again, I got a look at the tape, you know, they're popping out there and zone coverage and and You know you go on it don't want in there to Drake I believe and Got got popped up inside.  There was a play earlier We felt we had Kyle don't fault them for going to Drake Came back to it.  We're able to do something to jumpstart D led But again, you're gonna make life hard on yourselves when you when you put yourself behind like that Yeah, I mean that that's the thing, you know, that's a like I said, those are tough Tough lessons for a young quarterback, but you don't find out about yourself when you go back out there So that's why you know in the second half. He was able to push the ball on the field a little bit. I thought he operated Cleaner in the pocket and we were able to get some looks and he was not Risk adverse after that which a lot of times that happens But again goes back to reality is we got to find a way To jumpstart early and it's always gonna start with me We got the right guys in that locker room, but that is the reality and the other reality is thankfully we're two and two We got to get back to Atlanta and we got to We get this thing jump started There have been different coverages and it's a good question. Obviously, you know, there's something that's happened where that's Led to a pin today, right? It happened twice two different things one was underneath coverage and a quick game And the other one was a was a play action and So different looks I Don't know was actually locking on to it, but I think sometimes you got to learn some tough lessons in this league And it just unfortunately we we got behind Mm-hmm. Well, I think though the whole NFL fan base It's great to have the Falcon fan base as you see the game growing internationally Obviously You know not pleased at all with the result today. I mean, you know better result last time But the overall experience and playing over here has been excellent. It's good to see the game grow It went pressure and so, you know, you know the situation we call got to have it You're giving yourself Try to give yourself the best chance you can they know they bring everybody in the middle so we try to get out of the pocket on it and I believe they kind of combo Mack and Drake and May the right read unfortunately, you know out of the back of the end zone But that's why sometimes sometimes a look but yeah, obviously it doesn't work You need a different call.  I mean, I think if you've got the wrong guys It's easy to splinter and ride the roller coaster but We got the right guys in there and we know we got to get back to work And we got a we got a jumpstart and get get this thing rolling to get back on the winning track You know, you know different than Detroit. I just thought I thought we were a little tight and I told Guys it relax like stop pressing.  They made a play on the screen you know got undercut on the screen and got us off track and we didn't overcome it and Then we had the long drive I believe right do you let after that and then I was in the fourth and three But again when you to Michael's point earlier when you start slow That's gonna put yourself in Some really pressure situations and trying to overcome a lot Hmm, you know the first drive, you know, we started backed up didn't get out of there The next one I believe we went three and out And then you know, so it's getting then you start to and then thankfully we hit the believe it was the third drive to John right, so at least he fart started trying to get in the rhythm and then Then unfortunately the turnovers happen But to come back from that, you know, that's where you want to see if Who can who can actually come back and face adversity the odds are Can't turn the ball over three times. I mean you lose the turnover He's just the numbers are astronomical and they'll go against you and that's always been life in the NFL So can it's always gonna start with me and we got to be we got to go back objectively look and whatever we have to do To get the same jump starter. That's what we're gonna do. Thank you Yeah, obviously, you know from the jump first play didn't go as we planned, you know I took a one the other last that's obviously a tough start to any game Rather than being positive when you talk about going on, you know, kind of just throughout the first half You know, I did a terrible job of you know, take care of the ball Had two pigs obviously wish we had back one pick six and that changes the momentum huge of a game So obviously looking back, you know, obviously, then we got to find a way to start faster Whatever that may be. However, it is that's just what we got to do Then I got to do a better job to take care of the ball More time, sorry Yeah, like we said when we don't get going early and fast, that's when you feel the press And then we came back in the halftime, you know, we regroup came back. I'll just you know said got do what we need to do Came out that second half was able to you know, go down the field and get a touchdown get some momentum back And you know, obviously that's something we got to figure out how to do from the jump. Oh, it was great You know for forever they came from London came from anywhere in the world to be here to watch us You know, we thank them, you know, thank everyone that showed up and supported today It was a great atmosphere and great place to play Yeah, that one.  I didn't get miles over there quick enough on that one And so yeah, I mean it could go both ways Yeah me personally, you know get back in there just be able to take control of the game plan I'm going there lead these guys, you know, don't create no division of the team and everyone and myself and just go out there Be a leader beyond supposed to be and just get better at the end of the day Thank you


Okay, hi everybody. So this is going to be another security talk and Carlos, my excellent colleague this morning, he talks to you about the security model in general and how to work with the security team. I'm going to be doing something much more specific, which is what happens when security goes wrong. And specifically, I'm going to be talking through one particular vulnerability we had, how it was caused, how it was found, what happened about it, sort of thing. But I want to start off very imminently with a quote from one of our excellent vulnerability rewards program researchers. And these are people who find and file security bugs, thank you. And he said, I also want to thank you for being the unsung heroes of internet security. I know the whole Chrome team is keeping the hands of hell at bay from instantly rootkitting our machines.  Thank you for everything you do and for working so hard to keep the entire internet and its users safe. I put that out there, completely unsolicited comment. Because we're fighting the good fight. We are the goodies here. And you've got to remember that when we in the security team are giving you a hard time. Thank you back to him and all of our other researchers for working so very hard to find problems we have introduced. This is the case study I'm going to be talking through. If you're wondering what that number means, that's just an example of the sort of confusing terminology we like to use in the security industry to put off the rest of you. Or specifically, it's a globally assigned number so that people can talk uniquely about vulnerabilities in public without getting confused about which one's which. So this is a number we assign for externally reported Chrome vulnerabilities and other software packages have the same. This is the timeline and as with everybody else's slides, the fonts have gone slightly wrong. On the left-hand side, we've got four different steps or four different things that happen together to cause this eventually to occur. And I'm going to talk through those four different stages. Now two of those four were in fact security improvements. But together those four things were the preconditions to this problem occurring. It was then discovered and it was actually used to attack our users for real. I'll be talking through that as well and I will be talking through how we discovered it and fixed it. Sam, could I borrow you? I can't see my notes. Can you see if you can figure out what's up there? How are we so bad that we have vulnerabilities? And I've stolen one of one of the excellent slides from Steve this morning to explain that. We've got a really, really hard job. We take all this crazy web content. We take an entire industry, an ecosystem of web content. HTML, CSS, JavaScript, WebXR, WebGL, TLS certificates, speedy, quick, a vast array of insane bits of data from all of the other companies out here outside this building and the entire rest of the world. And we're going to try to run that safely to make these pixels and interactivity and MIDI and all the other things we make. That's very, very hard. I think that would be the hardest job in the security industry in itself. But we make it that much harder by running it on the user's own device where they've got their bank details and photos of their kids and all of their most precious data. So we've got to get it right and sometimes we don't. But that's because it's really, really hard. It doesn't help that this industry is changing and evolving all the time. So all the time we have to parse new formats and things like that. This is how it's supposed to work. We have a website which delivers some data to the browser and then your code runs and handles that data. Of course, perhaps there's somebody evil who has crafted some malicious data on that web server to deliver to the browser. And it's very important that you think about where your data comes from. That's the main point here because that's where the attacks will come from as well. You can be fairly confident that the badness is coming from the web server rather than having been injected on the wire, as Carlos talked about with TLS. And all of the stuff that we do around that you can be moderately confident that nothing bad is being injected on the wire. So think about whether your connection is over TLS as well. However, a modern website is of course very complex and involves iframes often for adverts for other things as well. So there might be badness in one of those iframes even if there isn't in the main website. The reason that's important is the user might have some level of trust with the main website but they may have less trust for some of those iframes. So you can't necessarily rely on what the user trusts to make decisions about what may be safe or not. So things for you to remember here when you're trying to write secure code. Above all, remember where your data comes from. Think about which bits of your code are parsing and handling untrustworthy data versus data that you trust. Perhaps you can cryptographically guarantee some of your data comes from Google and then you might handle it differently from data that comes from some untrustworthy website. And HTTPS is very important. We do a lot of stuff to make sure we can rely upon it. So I've talked about the data which is used to exploit the bugs that we all introduce. And now I want to talk about those bugs. We have bugs. Here's the number of high and critical severity security bugs we fixed over the past few years. You can see those numbers are pretty high. High and critical, that means these are bugs which we feel alone could be enough to compromise our users. So we also have lower severity bugs, mediums and so on, which together which can be chained together to compromise our users to steal all their data or get code running. But each of these individually we thought was probably enough to cause badness for our users. The good news about this is we catch most of them in head and in beta before it gets to stable. I want to talk a little bit about how they're found. You can see the big blue stripes. That is clusterfuzz. That's our automated fuzzing. I'll talk a little bit more about that Carlos already did. The yellow stripes however are also very important. That's our external researchers who are constantly trying to hammer on Chrome and find creative and cunning ways of breaking everything that we do. And we are really grateful for that. They're extremely helpful people.  Many of them even donate that reward to charity. They are absolutely awesome. They're very helpful. We're extremely grateful. A little bit more on clusterfuzz. Carlos talked about it so I'll make this quick. It evolves data. This is the one bit Carlos didn't mention. I think super cool. It will try and evolve the data that it injects into your code to increase code coverage until it finds the mistakes you've made. So it will monitor code coverage and try and exercise all your branches and all your functions until it finds what you've done wrong, which I think is awesome. Fuzzers are tiny bits of code which take that data that clusterfuzz builds and injects it into your code. So if you're writing a parser or anything that handles new formats of untrustworthy data, please write a fuzzer. They can be two lines of code because it just takes that data that already exists and puts it into your code. There is a fuzzing 101 which we have not had time to do in this Chrome University but please check out the recording there if you want to know how to do that. The other thing that's really important about clusterfuzz, if you get a bug from clusterfuzz you might think it's not that important. It's generated by a robot. Why does it matter so much as if a human had filed it? But the whole point is if a robot can find the bug that makes it all the more serious than if a human can find it because no cunning has been applied here. So it's if anything even more serious than a bug reported by a human and if clusterfuzz can find it then definitely the internet of real humans can find it. Okay back to our example. So I've said that the badness tends to come from crafted data. In this case the crafted data was some malicious JavaScript code designed to exploit some bugs in the JavaScript C++ bindings. There were four different sort of precondition steps that caused this bug to be possible. I'm going to talk about all four of them. As I said already two of them were actually security improvements. So by no means were there any mistakes made in this process. This is just stuff that happens with the emergent behavior of this crazy web ecosystem that we try and handle. So I'm going to talk about a couple of different JavaScript APIs. One of them is post message. That's a really really old API from 2009. It was a security improvement added to allow one window to send messages safely to another window. Very very good. A couple of years later it kind of grew the ability to transfer objects to that other window with this parameter at the bottom. Transfer and it says it's a sequence of transferable objects that are transferred with the message. The ownership of these objects is given to the destination side and they are no longer usable on the sending side. Please remember those last words, right? I imagine some of you can start to see what goes wrong here. Those objects are no longer usable on the sending side. The next API we care about came along a year later in 2010 which was File Reader. File Reader is an API to shout it out. Amazing. Very good. Read files. You guys know this exploit already. One of the things you can do with that class in JavaScript is to read the file data into an array buffer which is a JavaScript type of object that's obviously an array buffer. We'll see what went wrong with that. The final stat was actually a security improvement but also a binary size improvement around the bindings between JavaScript and C++. I want to talk a little bit about them. I'm sure you've heard the metaphor of a duck or a swan that's swimming calmly on the surface but is crazily thrashing around underneath the water and that's kind of what we've got. So if JavaScript is a managed, sane, sensible, safe API without direct hardware access, no sensitive access to cameras or your files or whatever, all the access is restricted by permissions and then you've got C++ which as we have seen is not like that, has pointers and things. Those pointers should never be visible in JavaScript land. However, pretty much all the JavaScript APIs are going to be backed by some kind of C++ implementation. Here is the C++ implementation for File Reader specifically for that Reader's array buffer function. This is the only C++ I'm going to show you in this talk. You can see the top function is called File Reader Sync Reader's array buffer and it is just the implementation of that Reader's array buffer API. It pretty much immediately calls through to array buffer result which is the bottom code and you can see I've stripped out some of the lines here but as you can clearly see there's a catastrophic bug in this line of code. I hope you can all see that. No? Exactly, I wouldn't be able to spot it and that's kind of my point. We are all going to introduce C++ memory safety errors. It's just a thing. We're going to do that and that's why we in the security team are constantly going on about fuzzing and sandboxing and things like that. You will introduce C++ memory safety errors and I'm going to show you how this error manifested and how it was exploited to turn into a powerful attack primitive. You can see it pretty much just creates a C++ object called the DOM array buffer. It's pretty much all it does. Here's the memory layer behind that in a fictional computer which inexplicably has 19 bytes of RAM. We've got a JavaScript object at the top and that as I say is backed by a C++ implementation. The JavaScript object is the array buffer. The C++ implementation is that DOM array buffer object we saw already. That however does not store the actual data. Instead it points through to a backing store which stores the actual data. So far so good.  Pointers are not a thing in JavaScript. That value, that memory address should never be visible to JavaScript. Now supposing somebody calls that API twice. You've now got two JavaScript array buffer objects. Each of them backed by a C++ DOM array buffer object but for efficiency we don't make another copy of the backing store because of course the file might be four gigabytes long. We don't want to make an extra copy of that four gigabytes. So we have two DOM array buffers each pointing at the same backing store. Now along comes post message. Do you remember what I said about post message? The object that is transferred is no longer usable on the sending side. And what that means in practice is that C++ would deallocate that DOM array buffer off it goes. And here was the mistake. The DOM array buffer believed it owned the backing store. So it also deallocated the backing store. Sad times. So you can see what's happened here. We've got a valid JavaScript object backed by the C++ DOM array buffer which is now pointing at some memory that C++ believes is not allocated and is not assigned to anything. That's called a use after free or so far it's just a free but we'll see that the attacker can use that. Key points to take away. You're not clever enough to write a safe C++ code. Sorry I'm definitely not. If I'm not you're not. Or the other way around. But anyway I'm just a TPM. I can't be trusted to code to talk. But it's not your fault. C++ is really really really hard. It's really hard to get it right and that's why as I say we constantly look at mitigations and make sure that we do the right things in different processes and so on. So back to what happened. All of these preconditions existed and the bug existed by 2015. Somebody found it and I want to talk a little bit about who found it. We don't know exactly who. We also don't know when. We know it was sometime between 2015 and 2019. So you might be wondering who are these mysterious researchers who find these bugs and maybe you're thinking they're spotty teenagers in bedrooms. Maybe some of them are. Sometimes they're nation states. Sometimes they're an entire industry. So all of these little stars represent companies that are involved in buying and selling security vulnerabilities. So that's really important to understand. The adversary here is an entire well-organized industry. And many of these companies have have great ethical scruples and will only sell these exploits to highly democratic governments and so on. Others maybe not so much. It's of course subject to market forces. Now I know this is a tiny font which you won't be able to read. So I'll read out bits of it. This is taken from the website of a company called Zerodium who have a price list for exploits in different software packages. At the bottom here you won't be able to see it says $10,000 and at the top it's $1 million. So the different rows are different purchase prices for different types of vulnerabilities. At the bottom we've got things like Drupal, PHPBB, antivirus products which are presumably cheap to buy vulnerabilities in because either they're insecure or they're not used very much. At the top market forces means it's $1 million to buy a Windows remote code execution with zero clicks. We in Chrome are in the second row with that little purple box $500,000 to buy a Chrome vulnerability which allows remote code execution and local privilege escalation. That's quite a large amount of money relative to most of the packages here but we are extremely popular. We don't know the extent to which that price is because Chrome is very popular versus because it's very secure but either way market forces result in that that number popping out at the end of it. Yes so that's us. I would point out for those of you can't see the other browsers are down in this row. Somewhat cheap. No but I don't necessarily want to claim that's because we're more secure. It may just be because we're most popular. More popular. But anyway that's the kind of adversary we're up against in the entire industry where these vulnerabilities are bought and sold. Make no mistake our bugs are exploited. There are some excellent blog posts out there. These people at Exodus Intelligence have three fantastic blog posts about Chrome vulnerabilities. They are beautifully written. I would recommend reading them. This one's very recent from Blue Frost Security the 8th of August. It says exploiting the escaping the Chrome sandbox via an index DB race condition. I don't know but the first couple of paragraphs suggest that they knew about this vulnerability and we're perhaps sitting on it and then we we fixed it through a refactoring and that's when they published it. I don't know. That's speculation. You can read the blog post yourself. So somebody discovered this vulnerability. We don't know how. We don't know exactly who. We don't know how they traded it across the industry but then somebody came to use it. Who came to use it? This is the exciting bit. I get to reveal. The answer was a South Korean attack group used it to attack targets in North Korea and I want to thank our threat analysis group for allowing me to share this with you today because normally we keep the stuff really close to our chest but they wanted you to understand we really are contending with adversaries. You really do use our stuff to attack other people. It was delivered to these North Korean parties via watering hole websites and email campaigns that that that took their users to that location. Let's look at the actual attack code that was used. There's two small changes on this page from the attack code that was actually used by one one party to attack another party. I'll come to what those changes are in a moment but you can see it's pretty simple. First line it creates a file reader because JavaScript is basically insane. I now have to talk about the last line of code where it's going to use that file reader to read readers array buffer but in the meantime it's it's lodged a callback for progress updates. Reading a file might take a long time so therefore there's the ability for JavaScript code to get progress notifications so it can update a progress file or some such. Within that progress callback it's going to ask for reader.result and that's going to give it that array buffer that we've talked about at so much length. It's going to do that twice so it's going to get two array buffers and what we're going to get here is two array buffers each backed by two C++ DOM array buffers and they are backed by that single backing store that contains one copy of the data. At least sometimes that's the case sometimes it's not. Sometimes JavaScript is going to give you two identical objects so the attack code first of all going to check that it's going to check that it's got two different objects. It's time-independent but that's fine because the attacker can repeat this as much as they want and if it finds that it does indeed have two different objects which are backed by that same backing store then it's going to free one of them by using post message. Bogs your uncle that's an English expression. You end up with this buff to object which you can then use to write to unallocated memory. We're going to put the number 42 here. That number 42 is one of the two changes I have made from the real attack code. The other one is for reasons that I genuinely have no idea about it was necessary to call readers array buffer twice for the attack to work but apart from that that's the exact attack code that was used. Pretty cool, right? So just to reiterate this is the memory situation we have we have buff to which is an array buffer backed by a dom array buffer pointing to some memory that's not used and we're going to put the number 42 in there. You can see now why I use the number 42 because it fits in this tiny box. And they can read or write whatever they want to that memory space anywhere from eight up to 13 they can put whatever they want there. Is this typical? Yes, yes it's typical. These are the bugs that we've paid rewards to our vulnerability rewards program researchers for. 30% of them are used after freeze, 561 of them. When you include all of the other C++ memory safety errors, uninitialized data, buffer overflows and other general memory safety doom plus integer overflows you get to about 65% of bugs. We would love it if we're in a world where our researchers had to come up with incredibly cunning protocol bypasses and things like that but the fact is the majority of our bugs are these kinds of basic things which is why we are constantly going on about them. Sorry about that. But as an example of why that's important we are, for example, always wanting to put bounds checks on stood vector and things like that and you can see why, right? It's a big deal. I know what you're thinking. They found a way to write to a tiny bit of memory. Big deal! This is deallocated memory Adrian. It's intrinsically pointless memory. What does it matter if they write to this completely irrelevant area? So the main point of this talk is so I can show you how they can use that seemingly innocuous and irrelevant vulnerability to write to anywhere in memory and then get the ability to do whatever they want. I'm not going to teach you about a wide array of techniques that the attackers can use because I don't understand them myself but I'm going to show you one example in which this small vulnerability could be used to achieve much more powerful code execution. This is the basic way they want to do it. This is a typical kind of change. So they obtain a specific out of bounds read or write which is what we've got with this file reader bug. They're going to try and convert that to the ability to read or write anywhere in the process memory. They're then going to try and use that to get code execution of any arbitrary native code that they want to run and finally they'll try and break out to compromise the whole machine. I'm going to try to show you each of those stages with varying degrees of detail. Now the attack code I showed you previously was the real attack code used. From here on I'm taking ruthless liberties because the attackers did some very cunning things which can't possibly be explained in the remaining however much time I've got. So I'm not actually going to tell you what they really did from here on. It's going to be somewhat made up but it does work and it can be used to use this vulnerability to get code running. I'm also going to talk about some of the mitigations or as this slide puts it mitigation which are the ways we try to stop the attackers getting between these stages and that's primarily what we in the security team are focusing on at least in parts of the security team. So back to the memory layout we've got buff2 which is backed by a DOM array buffer which is pointing to nothing useful. The attacker is going to simply do something called a heap spray which simply involves allocating an awful lot of little things. It's basically as simple as that. At some stage one of them by chance will be allocated in this bit of memory that they can access. It's kind of as simple as that. That's called a heap spray. So now they're going to throw away all the ones they don't care about. One of them happened to be allocated in this bit of memory that they can refer to. So there are now two different JavaScript objects we care about. There's the original DOM array buffer which is green which enables them to write to any memory location between 8 and 13 and then there's this new JavaScript array which happened to be allocated within that area and they just kept going until one was. The key thing here as you can see memory location 11 there is a c++ pointer. Pointers are not a thing in JavaScript but now of course the attacker has the ability to write a new pointer to that location. It's kind of as simple as that and of course when they can write any value to that pointer they can then change this second JavaScript array to address any memory anywhere else in the process memory space as basically as simple as that. There are a ton of different techniques which attackers may use to take a tiny vulnerability and make it powerful. I'm not going to talk about any of the rest this is also just one way heap sprays can be used. My point is simply when you think you see a tiny unimportant vulnerability the attacker probably has cunning ways to make it powerful. As you can see some of them are ridiculously simple right so please be afraid if you have an out of bounds write or an out of bounds read you've got to assume the attacker is going to find a way to to make use of it. So what could the attacker do when they've got the ability to read or write anywhere in the process? Well they may be able to do data from other websites maybe they can steal bank details maybe they can steal your secrets maybe they can even write over some important secret and cause money to go to the wrong place or some such. We've talked previously about the multi-process architecture and site isolation and so on that helps a bit. I'll talk a bit more in a moment about why that's not perfect. The next stage however the attacker wants to do is to achieve code execution of their own arbitrary native code. Generally speaking that's just a matter of overwriting any function pointer. If you have the ability to write to anywhere in the process memory space just find a function pointer and overwrite it there are plenty they're all over the stack as your function return addresses there's also vtable pointers. Of course we do have mitigations in place here like permissions that are applied to different memory pages but that's the basic idea. So I'm not going to talk about that anymore. So yes we've talked about how the attacker can get code execution running in the renderer process. The goal of the attacker in this case was to move beyond that and compromise the whole machine which I'll talk about in a moment but here's some things to remember first. Please do remember that even a single out of bounds read or write use after free can probably be converted into a powerful attack primitive. Don't require evidence that it's being exploited or that it is exploitable you just have to assume it is. We in the security team don't know like we don't know what's being exploited there's no point asking us sometimes we and Google have some tremendous intelligence about what the attackers are doing but as often as not we don't know we just assume it's got to be exploited if it is exploitable. And the renderer compromise alone can allow data theft. So code execution in the renderer process isn't enough to own the machine completely that's because we have this multiprocess architecture which you've heard about a whole bunch of times. Some of those processes are sandboxed which means they have limited access to the operating system. It's our goal to make sure that the untrustworthy web content always arrives in one of those processes which is sandboxed and ideally in the renderer process. So the bugs that we will inevitably introduce have limited effects. We're not always perfect at that. Untrustworthy web content does get to other processes in particular there's the network process and that's currently there's work in progress on sandboxing that it's the different stages on different platforms. But yes please think about where your untrustworthy data is coming from. Let's look at a couple of these processes in more detail. The renderer process we've talked about site isolation several times over the past couple of days. The goal is that even iframes end up in different processors which is great because when there's malware in suspiciouscatpictures.com it can't steal your credit card details from bank.com. However we can't apply that universally. On Android right now we tend not to have site isolation at all. It's not quite that simple because there's different experiments always in progress. From 77 the goal is to have limited site isolation on high-end android devices. But for one gigabyte devices there's effectively no site isolation. So you can't rely on that to keep you safe. You've got to assume that a renderer process compromise is serious and does enable data to be stolen from one website by another. Badness. Okay let's look at the browser process. So the browser process holds the keys to the kingdom. It really has it arbiters all the access between other processes. It's got unrestricted access to the file system and the network and so on. So it's extremely important that if you're working in the browser process you're super careful. And in particular we have a hard and fast rule called the rule of two. Carlos mentioned it. You must never ever pass untrustworthy data in the browser process unless you can use a safe language. You might be thinking what safe languages can I possibly use. As Carlos said on Android you can use Java sometimes. That might seem like a niche solution but the reason that's important on the other platforms you can usually spin up a sandbox utility process. That takes quite a long time on Android. So sometimes you might have to go for a kind of dual mode option where you use a utility process on all the desktop platforms and use Java for safe parsing on Android. The other thing that's very important is you've got to assume all the other processes are evil and compromised in their app to trick you. So all those Mojo IPCs you get please assume that they are trying to fool you. So to reiterate our attacker used a file reader used after free to get a specific out of bounds read and write. They converted that to the ability to read and write anywhere by doing a heap spray and then they over wrote a function pointer to get code execution of their own code within the renderer process. This is not strictly true. They actually did something cunning with an audio context object that I do not understand but they could have done this. Did they achieve compromise of a whole machine? Well before I talk about that I want to emphasize that this didn't work reliably for them but that's okay because they're an attacker so they can just repeat it. They could put it in a loop. In this case they use a whole load of iframes to do it in different circumstances and with different permutations of timing until it worked. It's really annoying because we are on the losing side here in that for you to be able to debug a problem you need to be able to consistently reproduce it. That does not apply to the attacker they only need to win once so when you get something that's timing dependent and annoying that doesn't make it less serious.  So did they compromise the whole machine? The answer is yes but it wasn't using a chrome bug. They used a windows kernel bug. Now this is not we are not by any means blame free here. As you know the whole point of sandboxing the renderer process is to restrict access to operating system facilities. Now on Windows 732 bit that didn't work out. Our mitigations were not enough to prevent them from accessing the windows kernel apis which enabled them to trigger this windows kernel vulnerability. On other platforms however it was good enough. On Windows 10 we used the latest OS facilities to restrict the access that the renderer process has to OS apis called Win32k lockdown so this particular attack would not have worked. And on 64 bit machines some of the earliest stages wouldn't have worked either because there's a big heap and we use a very cunning allocator called partition alloc which will try and make sure different types of memory allocations are in different places so you can't get this kind of confusion with pointers here that can be accessed from here etc. We can't do that on 32 bit just because there's not enough memory. So the attack wouldn't have worked on any of those other permutations of windows. Now just to be clear I'm not saying that no variance of heap spray would have worked on 64 bit windows it's just this particular permutation you wouldn't have worked. So it's kind of a mixed story right and that it we failed to prevent the attack happening altogether but our mitigations were fairly successful on some platforms. So back to the timeline. We've talked about who attacked this what did we do when we discovered and fixed it. So let's zoom in on that a little bit in 2019. February the 27th at 4 a.m. we found it was being exploited. I'm not going to talk about how. By 7.53 a.m. a CR bug was raised if you look at these slides you can follow the link and see the entire saga and the very first thing that happened I believe at 8 a.m. 8 a.m. we put it into clusterfuzz. So clusterfuzz is not just there to generate new bits of untrustworthy content we can also feed existing known bits of content into it to see what happens and indeed by 905 clusterfuzz had reproduced a crash which is great because that means we had evidence to go on we had a like a stack trace we could start to dig into it and indeed by 2.53 p.m. sorry 2.31 p.m. we had a CL up which is super cool that's really really quick that's absolutely epic thanks to Marine whose name I'm going to mispronounce and Adam for getting that done that's very awesome and but the story doesn't end there we got emerged by 5.51 p.m. also pretty epic and then two days later it was in a release that we were starting to push out to the public again pretty epic but it took about a week for it to get out to 50% of users because that's how long it takes to get fixes out there and that was Windows users if we were talking about Android it would be much much longer and here's the really bad news we have an open source development product process so during that time we made things worse effectively because we were publicizing details of this in our Git repositories and we know that there are companies and organizations and probably all sorts of other baddies who monitor that so it's super important not just to fix things quickly but also to help us get them merged back to beta and to stable as rapidly as possible so we can close that vulnerability window yeah question that's a great idea I love it the suggestion is that all all the different changes should include words like specter meltdown and a security genius so specifically on this on this need to merge things in you can expect the release tpms and the security tpms to be pestering you so you know you can expect sheriff bots to be nagging you to merge stuff back to beta and to stable and you can expect us to be also getting on your case so you don't necessarily need to do anything active here but you really do need to be responsive when we start pestering you all right that's basically it two more slides and other types of bug that I haven't talked about at all there's a ton of different things I don't want to imply everything is memory safety there's UI spoofing we have some guidelines on even things like how to display your eyes question oh oh how do we know what to feed into clusterfuzz we uh the means by which we determined this was being exploited also gave us the attack code that we could feed in okay and yeah so UI spoofing there's a ton of stuff there I don't know about if you have questions on that I really hope you do because Carlos is here and he'll have to answer them um protocol tls vulnerabilities all sorts of stuff like that there's various headers which prevent one website from attacking another website like csp and so on there's all of the terrifying timing attacks and side channel attacks which I also don't know enough about but my boss Andrew is at the back so please also ask questions about that and there's stuff about certificates if you haven't been following um all of the interesting developments around Kazakhstan I suggest you google for chrome plus Kazakhstan because it's fascinating so finally stuff to remember we will all introduce security bugs you have to assume that people will be able to exploit them as you see trivial bugs can be exploited and if you can take one thing away please take that away please write fuzzers it's one of our best lines of defense they can be two lines of code we have 450 and it'd be great if we had twice that money anytime you write a new parser or a handle untrustworthy data in a new way please write a fuzzer don't pass untrustworthy data in the browser process don't trust other processes act quickly when bugs are reported and do act quickly to merge things back to beta and stable and please do get security review early and above all just remember that we really have an exceptionally hard job here and it's exceptionally important that we get it right because we're in an incredible position of trust on the user's machines so please do reach out to us as early as possible for security reviews and just generally questions that you have because we really do want to work with you to make sure that we all do the right thing here that is it thank you very much for listening


We have discussed the valence bond theoretical approach for dihydrogen molecule. Then we have gone on to discuss hybridization which gives us access to polyatomic molecules and their shapes. Once again let me remind you that hybridization is invoked to explain the shape it is not the cause. Methane is tetrahedral not because it uses SP3 hybrid orbitals but because of VACPR you need SP3 hybridization to describe the system that is all. Now that being done it is time for us to move over to molecular orbital theory. We have already given you a very very small executive summary of a comparison between valence bond theory and molecular orbital theory. The advantage of molecular orbital theory over valence bond theory is that delocalization can be handled very easily it is a general theory and excited states are accessible without any hassle. The problem is and this is something that we will encounter not today but in the next class we are going to see that sometimes it becomes a little too general it over does things. The ionic structure of H2 for example is over emphasized in a molecular orbital treatment. But nevertheless MOT is the most popular way of handling electronic structure at this level at least later on you might want to go a little further but I mean this is really the beginning. So we need to discuss and understand molecular orbital theory most of the use application of quantum chemistry quantum mechanics in chemistry involves molecular orbital calculations you can use different levels it is a different issue altogether. But then when we do that let us not forget our definition of orbitals an orbital is a one electron system. So when we talk about molecular orbital what we mean is one electron wave function for a molecular system right there cannot be any other electron. So what is the simplest molecule that has only one electron and that therefore cannot be handled by BBT in the first place that molecule would be H2 plus. And already a few classes ago a few lectures ago we have shown you the Hamiltonian for H2 plus as well as H2. There are more terms as you go from hydrogen atom to H2 plus to H2 the number of terms keeps increasing as number of as the as different interactions come in. Now what we are going to do is we are going to use our good old Born-Oppenheimer approximation and say that nuclear stationary with respect to electrons. So we are going to hold this capital R inter nuclear separation to be constant for the calculation and we are going to royally ignore the kinetic energy terms for the two nuclei. So the Hamiltonian we are going to use really is minus h cross square by 2 Me del square minus Q e square by Ra minus Q e square by RB plus Q square by capital R. I am not using atomic units here we should be equally comfortable with both. So for a change let me use this in the next discussion we have Huckel approximation perhaps we will use atomic units once again. So this is our Hamiltonian and it is a one electron system the difference is that unlike hydrogen atom it is not a central field problem there are two nuclei right two foci. So you cannot use spherical polar coordinates anymore you can use electrical polar coordinates and you can actually solve actually get an exact solution for Schrodinger equation for H2 plus but we will not do it it has been done I mean this published literature it is there in some textbooks but you find that they are there in exotic textbooks you will not find them in the textbooks that we use McPurray or Pillar or even Zabo because there is no need because you put in so much of trouble and use electrical polar coordinates and get some solution you cannot use them you do not know what to do when you bring in one more electron and talk about H2 which is the smallest real molecule. So the thing is this it is better to start using approximation right away since you cannot avoid it one step down the line. So the approximation that we are going to use is something we have learned while talking about variation method remember we had said that since in any case variation method allows us to change parameters and try and minimize energy with respect to these parameters how does it matter what kind of functions we use you might remember that elephant on the opening slide of a couple of the lectures that we had had some time ago those elephants were drawn using some mathematical function. So any wave function whatever is a real wave function even though we do not want to do it exactly we can use some of Gaussian or Lorenzian or exponential polynomial sums and products of these functions and we can actually simulate these actual the correct shape and that is good enough. So if we take an appropriate set of orthonormal functions orthonormality using orthonormal set brings in some advantages as we have learned in our discussion of many electron atoms and here the biggest advantage is that we already have a set of relevant orthonormal functions at our disposal and they are the atomic orbitals. So what we do is we generate the molecular orbitals by linear combination of atomic orbitals this is the first approximation of course later on atomic orbitals are not used and molecular orbitals are used by using just what I said products and sums of different kinds of functions but for this course we will stick to linear combination of atomic orbitals because they give us a nice insight of what is going on and it can give us fairly good estimates of energies. So LCAO as it is called is what is going to be used. For H2 plus the only atomic orbitals that we need to consider are the 1s orbitals because where is the electron? The electron will be in the lowest energy state and there is an energy gap between 1s and 2s. So this is something where implicitly we have used an important principle that is going to come back and get used many times in our discussion and that principle is that only orbitals of appropriate energies are going to participate in the linear combination and later on we are going to say only orbitals that have the correct symmetries will participate in linear combination correct symmetry and comparable energies without that they do not participate in this linear combination a little bit of difference in energy is okay but here the difference would be 1s and 2s so no cannot cannot makes no sense in bringing in 2s you might get a little bit of improvement if you do but at our level in this course we are good with this. So the LCAO MO we use is C1 1s a plus C2 1s b and I hope this reminds you of the wave function we had in the valence bond approach. There also we had used the 2 1s orbitals okay but the difference there was that we started with filled orbitals right we started with phi 1s a 1 multiplied by phi 1s b 2 then to that we added phi 1s b 1 phi 1s b 2 and then we proceeded here we do not bother about the electron to start with we are more interested in constructing the wave function and then we will fill in the electron when it is appropriate time right but let us work with the orbit with this molecular orbital to start with C1 1s a plus C2 1s b so it takes square of that this will give you probability density that is C1 square phi 1s a square plus C2 square phi 1s b square plus 2 C1 C2 phi 1s a phi 1s b. Now see is there any reason why in these 2 terms C1 square should be different from C2 square we had used exactly similar argument for valence bond theory also there is no reason why any of these 2 orbitals will make a different contribution so it makes sense to say that C1 square equal to C2 square or C1 equal to plus minus C2 okay so that we can write when C1 square equal to C2 square when C1 equal to C2 we write C1 equal to C2 equal to C a and when C1 is equal to minus C2 then we equate it to C b of course this is a bad choice well I should not say of course actually this is a bad choice because it is better to write b here and a here for reasons you will see very soon all right so what is the wave function then the wave function the first wave function where we use a linear combination with plus sign is C a multiplied by phi 1s a plus phi 1s b so in the subsequent discussion most of the time we have not written phi we have simply written 1s a plus 1s b what about psi 2 psi 2 would be C b into 1s a minus 1s b and I think most of you would know already that this plus combination is the bonding orbital this minus combination is the anti-bonding orbital why bonding why anti-bonding will come to it in its time but now this is what we have generally we like to draw pictures instead of writing algebraic expressions and this is a picture that we generally draw we draw two circles for the two s orbitals and we would put two plus signs to denote that the combination is plus and for anti-bonding we put a minus sign in one of them to denote that the combination is minus and in fact it is better for us since we know about contour diagrams and all we can look at the contours and understand better these are the overlapping contours of a and b orbitals here the only difference is that you have to put in the plus and minus sign and you can draw this psi square like this as dots remember we put a dot wherever there is some probability so we can generate the diagram of psi psi star psi square it will be like this no node here here there will be a node because in this region there is going to be a destructive interference so if you look at the profiles take a cross section of this orbital you will get two peaks for psi plus the bonding orbital here however 1s orbital points up the other 1s orbital points down this plus is minus remember so you are going to get a node a zero crossing point exactly between the two nuclei and if you take this psi square then psi square looks like a circus tent in case of the bonding orbital and it looks like two circus tents right beside each other for the anti-bonding orbital so generally what the argument that is given in many textbooks even though it is not it is a little bit of hand waving argument that there is a build up of electron density because psi square is more psi square dr will also be more here build up electron density between the two nuclei a and b and that is why the electron sort of shields the two nuclei from each other and act as a cement for them here actually there is a decrease in electron cloud if you just do two 1s orbitals and if there was no bonding at all then the picture would have been something like this I will draw normalized picture it would have been something like this so in this region you would have this much of electron density more than what you have for the anti-bonding orbital so generally even in class 1112 books this is the explanation that is given so we will not worry about that explanation for the moment just go ahead and see how it pans out to start with let us normalize this wave function we know that this is what we usually like to do first so integral psi 1 square dr in this case will be equal to well will it be dr it will be dr 1 dr 2 right there are is a double integral again that will be equal to 1 so you write this I am going very fast here because this is more or less what we have done in the valence bond theory approach as well so expand this you get 4 terms and when you look at the 4 terms they are familiar integral phi 1s a phi 1s a dr a is equal to 1 because 1s a is normalized same is true for 1sp and what is this integral 1s a 1s b d tau integral 1s b 1s a d tau you might remember from our valence bond discussion that these are overlap integrals remember overlap integrals these are simply overlap integrals so what do you have you have 1 equal to ca square multiplied by 2 plus 2s so ca turns out to be 1 by root over 2 plus 2s 2 plus 2s similarly you can find the expression for cb that is equal to 1 by root over 2 minus 2s I am going at breakneck speed because it is so simple please work this out yourself then only you understand fully good now you might remember that overlap integral is actually a function of inter nuclear separation we have done at least one of these this one we have done in fact for that we had given you an expression and we had shown you the plot it is not very difficult to see that when these 2 orbitals are infinitely far away overlap integral is of course 0 it comes closer overlap will go up up up up and finally it will be something like this what about this is a very curious case overlap integral when this r equal to infinity is of course 0 now even in this case what is the overlap integral is it 0 or is it something else yeah do not forget what overlap integral is you have to do a point by point multiplication of the 2 wave functions and adds so this is 0 so this is really an example of non-bonding interaction here when you have sigma interaction between an s and a p orbital then what will the overlap integral be like 0 here and then when I bring these close together say this is your p orbital minus plus change color and this is your s orbital plus now what happens is it 1 is it 0 what is it for this part is going to be plus for this part will be minus and the magnitude is same so it is going to be 0 at r equal to 0 0 at r equal to infinity somewhere in the middle it is going to peak where will it peak it will peak in the situation where this s orbital is here that is where it is going to peak so for inter nuclear separation here to let us say here okay so in our tutorial we have some problems in which you have to work this out I think you have you might have done it already in our assignment great so this is what we have we have an we have expressions for the bonding and anti-bonding orbitals that is great and now our job is to find the expression for energy expectation value of energy by using these wave functions for bonding and anti-bonding orbitals we will call the energy of the bonding orbital E 1 bonding MO E 1 and we will call the energy of the anti-bonding MO E 2 well it is perfectly okay to call the MO s orbitals they are orbitals but I prefer to call them MO s because we are also using atomic orbitals and by by now we have become used to referring to atomic orbitals as just orbitals okay now let us see what the expression for energy of bonding MO would be and once again I am going fast because this is now cakewalk for us right what is this integral first thing to do is plug in the value of psi 1 and take out the product of the normalization constant this is what we get E 1 is 1 by 2 plus 2 s multiplied by in bra vector we have phi 1 s a plus phi 1 s b in the ket vector we have h hat 1 s a plus 1 s b of course you should expand and you are going to get four terms and the four terms I hope do not look absolutely unfamiliar to us similarly we can get an expression for E 2 and point to note is that if you look at E 1 plus plus plus well of course this is also plus for E 2 the integrals remain the same only in these two cases plus becomes minus there is no other difference okay now let us take a closer look at these energies do we know these integrals have we encountered integrals like this integral phi s a h hat phi s a well phi 1 s a h hat phi 1 s a integral psi i h psi i what is it isn't it h i i integral phi 1 s b h hat phi 1 s b again that is h i i you can call it h j j but they are the same does not matter integral phi 1 s a h hat phi 1 s b what is that that is s i j and integral phi 1 s b h hat phi 1 s a is s j i but then s i and s j are equal because if you remember h hat is a Hermitian and so we can use turnover rule so these are familiar integrals for us we might as well write E 1 in terms of h i i h i j and for now we will write s i j and whenever we are bored of writing i j we are going to go back to s does not matter okay so E 1 turns out to be h i i plus h i j divided by 1 plus s i j you might as well write h 11 plus h 12 does not matter okay perhaps is better to write h 11 plus h 12 what about E 2 in E 2 if you remember the only difference was that the last two terms had minus negative coefficients negative signs so plug that in you get E 2 to be h i i minus h i j divided by 1 minus s i j both become minus okay so now to go further we need to evaluate h i i we need to evaluate s i j we already know what s i j is in fact we already know what h i i h i j are as well we are just revising so this is your Hamiltonian this time not in atomic units minus h cross square by 2 me del square minus q r square by r i you can recognize that these two terms constitute a one electron wave function minus q e square by r j plus q e square by r this is your this is for the potential energy for attraction between electron and nucleus sorry sorry sorry what did I say q e square by capital R is for inter nuclear repulsion nucleus nucleus repulsion so we will club these two together and we are going to write Hamiltonian of one electron so now our Hamiltonian has three terms so h i i is integral phi s i i left multiplying Hamiltonian operating on phi 1 s i okay so we will write like this same expression so no hamdan h i i equal to sum of these three terms now look at this 1 by r is a constant at a fixed inter nuclear distance right we are we are working under the ambit of Born-Oppenheimer approximation here I might digress a little bit and I might say that the Born-Oppenheimer approximation does not hold in all cases but that comes under the beyond approximation theory limit that is a little more complicated phenomenon for our purpose one open hammer approximation is actually very good approximation we can work without its ambit without losing general like generality okay so this is a constant at fixed inter nuclear distance fine so we can bring it out what did I do sorry so I can write like this integral phi 1 s i h 1 electron phi 1 s i we will come back to this plus q e square integral phi 1 s i phi 1 s i minus q a square q e square integral phi 1 s i 1 by r j phi 1 s j again I hope that these terms do not look unfamiliar to you because first of all phi 1 s i phi 1 s i integral of that what is that that is simply one it is normalized integral of phi 1 s i into 1 by r j phi 1 s i what is that is I hope you remember that it is the Coulomb integral j right remember Coulomb integral Coulomb integral denotes the electrostatic interaction right we had worked this out when we talked about dihydrogen molecule in your valence bond theory and I hope it is not very difficult to see that integral phi 1 s i h hat 1 electron phi 1 s a what will that be h hat that will be the expectation value of energy of 1 s orbital it does not matter whether I use a or b this energy of 1 s orbital is still the same so energy of 1 s orbital plus q e square by r minus q e square into j okay now let us evaluate the integral h i j there is not enough to evaluate h i i right I want energy finally so h i j similarly we can proceed and we can again use this 1 by r to be constant h i j will be first of all this is the value of energy for your 1 s orbital then q square by capital R as we know that this what is this integral of 1 s i 1 s j what is that going to be that is going to be s right overlap integral it will not be 1 and this integral minus q e square integral phi s i 1 by r j phi s j what is that we know that also right so the first term is e 1 s into s let me that let me work that out because I think I made a careless statement just few minutes ago I am working this out what is it h hat 1 electron operating on phi 1 s j gives me e 1 s so if I write it in bracket notation we have in bra vector phi 1 s i so what will I get this becomes e 1 s multiplied by phi 1 s j of course so you take this and plug it in and moreover you take this e 1 s out you are left with e 1 s multiplied by integral phi 1 s i phi 1 s j that is your s e 1 s s next one will be just q e square by r multiplied by s same s is there then if you look at the third integral it is k isn't it exchange integral or I did not tell you this name earlier it is also called resonance integral because here you are considering 1 s i and 1 s j in the same integral right so exchange so please remember we will come back to that later but let us write like this minus q e square into k and remember that k is a purely quantum mechanical concept there is absolutely no classical counterpart for k fine so we know h i i we know h i j we of course know s i j it is equal to s so I have written s i j equal to s here now let me plug in the values of h i i this is a h i i I hope you recognize e 1 s plus I have taken q e square common q e square multiplied by 1 by capital R minus j and h i j is e 1 s plus q e square multiplied by s by r minus k so e 1 will then be equal to if I now collect the coefficients of e 1 s q e square by r and minus q e square so what will be the coefficient of e 1 s e 1 s into 1 plus s isn't it 1 from here s from here what will be the coefficient of q square by capital R q e square by capital R so 1 from here and s from here so 1 by s minus q e square what will be the coefficient you take minus outside from this term you get j from this term you get k minus q square multiplied by j plus k that is e 1 so e 1 then turns out to be just simplify divide throughout by 1 plus s you get e 1 s plus q e square by capital R minus q e square multiplied by j plus k by 1 plus capital S right similarly you can work out an expression for e 2 and that turns out to be e 1 s plus q e square by capital R minus q e square into j minus k divided by 1 minus s so see e 1 s plus q e square what is that that is simply energy of 1 s orbital plus the nucleus repulsion term q e square by r is the potential energy for nucleus repulsion so this is the energy that we get if there is nothing else happening so this is basically destabilization this q e square by r is capital R so when you bring in the third term q square into j plus k divided by 1 plus s or minus q square into j minus k divided by 1 minus s this third term decides whether you get net stabilization or net destabilization so that depends on the integrals and remember we are constructing these integrals using 1 s orbital to start with but that will obviously not give me very good result so what is done is as we have discussed hydrogen type or hydrogen like orbitals stos gto's in 1 s orbital expression that z is kept as a variational parameter because here also you have two nuclei right we do not have a second electron yet but that z instead of z you write zeta variational parameter so that is varied and you can also vary n and using variation method you can find the upper bound for the energies that is how you find the expressions for e 1 and e 2 for given values of capital R another thing to remember is that j k s these are also integrals that depend on the value of capital R okay there is a very strong dependence of the energies and this is what you get for e plus you get a minimum and then it goes up for e minus it goes up all the way so this is how the energy of anti of bonding orbital varies as a function of R this is how the energy of bonding orbital varies as of bonding anti bonding orbital varies as a function of inter nuclear separation at equilibrium bond length you can see that stabilization the amount of stabilization that you have of the bonding orbital is actually less than the amount of destabilization that you have in the anti bonding orbital so if you have one electron in bonding orbital one electron in anti bonding orbital since energy of the system will not be 0 it will be more than 0 right and that is often explained by this hand waving arguments using this kind of orbital picture okay so we have already studied sigma bonding with 1 s orbitals I leave it to you to work out the at least shapes of bonding and anti bonding orbitals using 2 p orbitals this is from one of the textbooks I have forgotten which one but this one is wrong please do not look at that and this is what you get for pi bonding using 2 p orbitals okay just side on overlap and one thing that you should remember or know or understand is that symmetry of orbitals is often used as very important parameters for the hydrogen molecule ion for bonding orbitals it is symmetric with respect to inversion so it is called sigma g g for j ready the anti bonding orbital is anti symmetric with respect to inversion that is called sigma u do not think that always bonding orbitals are j ready and anti bonding orbitals are j ready that is not the case if you look at the bonding pi orbital used by side on overlap of 2 p orbitals you see that this bonding orbital for pi is 1 j ready and anti bonding orbital is actually j ready okay so we are going to use this in the nomenclature of m o s when we talk about actual molecules and using this I think you already know what are the types of bonds sigma pi delta okay these are examples of what kind of bonds are formed using different orbitals again I leave this to you as an assignment in case of any difficulty any question please feel free to contact us or ask in the open session this completes our discussion of h 2 plus little longish module sorry very fast but it is a reputation of what we have done earlier I am sure you will be able to handle it with this knowledge we next discuss h 2 molecule we bring in another electron and use the same orbital perhaps with modification for things like shielding and we see how that compares with the earlier valence bond approach and after that we go on to heteronuclear homonuclear diatomics of second row then heteronuclear diatomics polyatomic molecules finally we will talk about pi molecular systems


Who are you with your performance? Extremely, really. I, coming out here, I know I've prepared for this.  But above all, I just want to thank God, my coaches, for preparing me and my family, for preparing me for this moment and being able to come out here and execute it. Yeah, you actually threw the record, turned out to be a foul at the point, but were you a little bit disappointed with that? I was, I was, the last throw, I wanted to put my all and more in it and I felt as though I did that, but I found it. So, next time. All right, thank you so much.  Yeah, they're away for the second semifinal, another cracking semifinal in this.