The prevalence of transfusion transmitted infections, TTIs, among blood donors in Pakistan is alarmingly high. In particular, the prevalence of hepatitis B virus, HBV, hepatitis C virus, HCV, human immunodeficiency virus, HIV, malaria, and syphilis is increasing at an unprecedented rate. This is due to the lack of proper screening measures and the absence of a comprehensive national policy on blood safety. The authors of this study suggest that more stringent screening measures must be implemented to ensure the safety of blood donors and recipients. Additionally, they recommend that the government take steps to increase public awareness regarding the importance of safe blood donation practices. This article was authored by Tireen Zorab, Muhammad Awais Farooqi, Ali Hassan, and others.


According to Forbes, the Russian Federation is planning a large-scale offensive on Kpyansk and is deploying weapons there. However, the armed forces of Ukraine have been holding back the Russians for six months and are ready to respond to any scenario, states Ola Senegovov, the head of the Kharkiv Regional Military Administration, but the media reported that Russia is allegedly bringing 500 tanks, up to 600 combat vehicles, hundreds of howitzers, and 40,000 troops to Kpyansk. The article states that the capture of Kpyansk is the main goal of the Russians. A slice of Kharkiv would be an election-day gift to Putin from the Russian army in Ukraine. Forbes writes.at the same time, the article states that the number of Ukrainian troops on this part of the front is about 20,000, and hundreds of tanks, combat vehicles, and howitzers. But people in vehicles aren't the problem for the Ukrainians. The problem is ammunition. The United States was one of the biggest donors of 155-millimeter shells for Ukraine's best big guns and pro-Russia Republicans in the US Congress cut off aid to Ukraine last fall. Since then, Ukrainian forces' daily allotment of shells has fallen by two-thirds to just 2,000 rounds. Russian forces meanwhile fire as many as 10,000 shells a day, thanks to a steady supply of ammo from North Korea, Forbes writes, Russian army has been advancing in this direction since February 2022. Until now, the occupiers have not abandoned their intentions to recapture the liberated territories, as this is a logistically important area for them. Armed forces of Ukraine have been repelling enemy attacks all this time. The armed forces are ready for any further scenarios, enemy actions, and quick response to intelligence results. Perhaps most importantly, Ukrainian workshops are building explosives-laden first-person view drones, tens of thousands of them per month. As artillery ammunition becomes scarce, Ukrainian brigades are flinging more and more FPVs at the Russians, sometimes thousands per day all along the 600-mile front.


Good morning, John. My life this week has been dictated by natural phenomena. As Montana has continued through an unseasonably hot and dry summer, my valley has been socked with smoke sometimes enough that experts advise me not to leave my house, certainly not with an infant. And that got substantially worse when the nearest fire in Lolo National Forest flared and burned more than 9,000 acres in one evening. It was beautiful, though. I was headed out to get dinner for Catherine, and I didn't come home for an hour because I kept stopping to film it. And then, of course, this Monday there was the eclipse. And one of the remarkable things about the eclipse is that we knew exactly when it was going to happen for decades in advance.  People booked hotel rooms and braved terrible traffic, though not before, first making sure that the sun would be out in the place where they were going. And we trusted all of those things. I couldn't tell you how people figured out when eclipses were gonna show up before computers, but they did it. I also don't know how scientists fight fires, or predict them, or know to tell me when I shouldn't go outside to avoid damaging my lungs. But I do know that someone knows. Someone knows when the eclipse will happen, someone knows when fires will probably get worse, and they've had their work checked by other people who also know. I don't have the space in my head to figure all these things out on my own and, like, good thing, because the story of human progress is not a story of every single person figuring out every single thing for themselves. John, when telling people that I trust experts, I sometimes hear people respond that I'm committing a logical fallacy, appealing to authority. And this is a fallacy when making an argument saying, but this expert says so, is not a good argument. But I'm not actually making an appeal to one person. I'm making an appeal to a process that has had a good deal of success at accurately explaining and predicting stuff. The expert is the proxy for the process. I'm making an appeal not just to the people who have figured something out, but to all of the other people who I know are gonna check their work. I'm making an appeal to statistics and logic and calculus and peer review. I'm making an appeal to science. And also, I'm often not making an argument. I'm not trying to convince people of what they should believe. I'm trying to explain that when it comes to things that I'm not that interested in or capable of learning enough about, I'm happy to accept scientific consensus because it's gonna be a whole lot better than whatever hunch I happen to have. This isn't trusting that they're right. It's accepting that people who study things for a living have a far greater chance of being right than someone who just feels like arguing with them. It's not an appeal to authority. It's like an appeal to sanity. I get worried about the current tendency of some to feel like they must confirm everything for themselves. That's individualism taken to maybe a fatal extreme. Human progress is a story of building on the work of others, not every single person starting from scratch. I agree that trusting individuals because they've had the expert label applied to them can lead to trouble, but one of the great achievements of our culture, of our society, is the creation and refinement of robust systems for creating and identifying trustable expertise. Of course, those systems can always be refined and improved, but those who think they can just be discarded scare me. Watching these beautiful and terrible plumes of smoke flare above my town, I felt very grateful to those who study these things for a living, so I do not have to. John, I'll see you on Tuesday. End screen, John! Happy 40th birthday, yesterday.  I hope that you liked them. There's so many turtle cakes. Also, Rolf, the dumb party game that DFTBA Games is making, its Kickstarter is ending in just a few days. So if you want to help that out and pledge to get a copy, there's a link in the description. Also to everybody on the Gulf Coast of Texas and Louisiana. Hopefully it won't be as bad as it looks like it might be, but be safe, make good decisions, thinking about you.


from the files of the Texas Rangers. Today, Monday through Friday, there's top entertainment all day long when you set your radio dial to NBC. Listen for Double or Nothing and you'll hear one of radio's funniest quiz shows. Yes, Walter O'Keefe consistently comes up with great comedy entertainment Monday through Friday on Double or Nothing. Listen and you'll agree. And then there's the program of the heart, Strike it Rich. The grand entertainment that Warren Hall brings you every day on Strike it Rich is just what the doctor ordered if you suffer from the housework blues. From Chicago, Tommy Bartlett brings you Welcome Travelers and interviews with many interesting guests who each day pass through the windy city. And for more fun, listen for Bob and Ray, those two zany comics. Then there's Music and Charm with Dave Garroway. So remember, every day, Monday through Friday, chase your blues away with a wonderful daytime programs on this station of the NBC Radio Network. And now here's today's adventure with the Tales of the Texas Rangers. Tales of the Texas Rangers, the case called Uncertain Death. It shortly passed 10 o'clock on a Wednesday night in July 1936. Six miles outside the town of Cambridge in East Central Texas, two elderly men approached the shore of a lake. Come on, come on, Ollie, we got a hurry. Now I'm walking as fast as I can. Them frogs ain't going to run away. That ain't the point, you know it. Frogs for bass fishing got to be caught and put in a baitbucket 12 hours before they can be used. Oh, that's superstition, George Warner. Ain't going to help it, none going way over the other side of the lake, neither. There's plenty of frogs right here. Now you know these frogs ain't good for bass? Only frogs and bass will eat going to be caught on the other side where the turtles live. There's no superstition, there's nothing between them. Ollie, shine a light over there. Ain't that the Game Wardens car? It doesn't look nothing like it. There's two. I wonder what he's doing out here this time of night. Let's go see.  There ain't nobody in it. And it ain't the Game Wardens car. There's two. Wait a minute. Shine the light down toward the shore. What do you want? You see, car belongs to that young couple sitting on the back. Sorry we disturbed you, folks. That's okay. Didn't mean to be shining that light on you. We thought you was a Game Warden. Yeah, sure. How about that, Ollie? The young couple sparking in the summer night. Puts me in mind when we were young and used to bring our girls out here. Well, here's the boat.  Five minutes before you're complaining about it. You don't see no sense in going all the way over there to the other side. You'll see some of the big mouth bass tomorrow. Oh, I sure hope we get some.  What's that? Sounds like them young people having some kind of squabble. That's shootin'. We better get in the shore. George, if we go in there, he's liable to shoot us up too. Come on up here alongside of me. You better help, bro. Sure, they looked briefly around the area where they had seen the car. They found no one there and no indication of violence. Nevertheless, they decided to report the incident to the sheriff. After investigating the scene of the alleged shooting, the sheriff requested assistance from the Texas Rangers. Ranger Jase Pearson was assigned and arrived at the lake just after dawn. The sheriff led him toward a spot at the edge of the water. What I wanted to show you is over here, Jase. I thought them two old fellas must have been hearing things, though. They're still around, sheriff? Over there with the crowd. Funny how excitement draws people, like bees around the jam jar. You want to talk to George and Ollie? Yeah, in a few minutes. There you are. When I found this, I was pretty sure there really was a shooting here. Yeah. Good blood, all right. George and Ollie, I think it was a girl that was shot. Why? They heard the man yelling for her to come back and then there was three, four shots. You think she could have got up and crawled away after she was hit? Yeah, it's not likely. Tracks indicate she was dragged probably back the car. The two men witnesses recognized either of the people? No, it was too dark. The only thing they remembered was a car, a black four-door sedan. Well, I reckon we just have to wait for a missing person's report. If the girl really was killed, I... What's the matter? Mind hand me that branch, sheriff? I think I see something in the water. Sure. Thanks. Can you make out what it is? I think it's... Yeah, it is. Woman's handbag. Shoulder straps broken. That could have happened when she fell. Uh-huh. Lipstick, compact. Hmm, driver's license. Water didn't smear the type too much, did it? No, name's Lucy Regan. Lucy Regan? Well, that's a kindergarten teacher here in town, a real sweet kid. Nobody'd want to hurt a girl like that. We're not sure it's the girl who was hurt. Let's go find out. We drove back to town and went to Lucy Regan's rooming house. She wasn't there. Her landlady said she'd left at seven the night before and had not returned. She was fairly sure Lucy'd been out with Kim Bowman, a young cowhand from a nearby ranch. Sheriff and I went out to the ranch, arriving there about ten that morning. We learned that Bowman was with a crew setting up new fence posts about four miles from the ranch house. We took horses and started looking for them. There they are now, down to the bottom of the slope. Uh-huh. What's all the construction work over there by the next hill, Sheriff? That's a new county road. We've been waiting for it quite a spell. Joe'd be glad when they get it finished. Looks like they're cutting through part of this ranch. Just a corner. I reckon that's why they're setting up new fence posts. Which one of you fellas is Kim Bowman? The range are not like to talk to you. Well, I sure. Anything wrong? I want to ask you some questions about Lucy Regan. What about it?  Yeah. Why? Her landlady says she hasn't been back to the house since she left with you. That ain't true. I brought her back myself. What time was this? Early. About nine o'clock. She said she had a headache. She was lying, though. How do you mean? Ah, taking her out five, six times in the past few months. She always makes some kind of excuse to get back early. What's the matter? Didn't you two get along? We get along all right. Except when she starts acting like a schoolteacher. Telling me how I should talk. When you brought her home, did you take her up to the house? Nothing. She got out of the car in front of the house. Said she didn't want me to come in. She probably had another date waiting for you inside. Last time I'm taking her out.  No place special. Even it was already ruined. I drove around a while and I come back to the ranch. Did you go out to the lake? Uh-uh. Been near the lake in weeks. Look, Ranger, why are you asking all these questions? We're afraid Lucy might have been murdered. Murdered? Just because she don't show up one morning? She goes over to the library in Bingham a lot. Maybe that's why she's gone. See some of them college fellows. Maybe so, but you were the last person she was seen with. Oh, look, Ranger, like I say, I took the girl out five or six times or hardly even know her. Why don't you pick on someone else? What color's your car, Bowman? My car? Oh, it's black. What's that got to do with? Ward or sedan? Yeah. Why? Where is it now? Back at the ranch, huh? I suppose you stop work for a while. We'd like to see your car. Ain't much of a car. A lot of cowpokes pay as good as I can buy. And if I look inside? Go ahead. How'd you get the blood on the back seat? Blood? Well, I don't see no blood. Looks like you're trying to wash it off. How did it get there? Oh, yeah. Yeah, I remember now. About a month ago, I went out shooting rabbits. I got a couple and put them on the back seat. Funny you didn't put something under them before you set them in the car. I did. I had them in the burlap sack. Blood must have soaked through. You sleeping one of the bunk houses over there? That's right. We'd like to take a look at your bunk. Hey, look, what's this all about? Some girl goes out of town without telling nobody. It's right away you come picking on me. Just cause I was out with it a couple of times. You're including last night. Sure, including last night. That still ain't over. Can I show us your bunk now? All right. You're welcome. Look at anything you want. Thanks. Don't you really think something happened to Lucy? Why don't you go talk to some of them college boys? We'll check on them later. Where's your bunk? Right here. First one. Let me see what's in that suitcase under the bunk. Okay. Well, go ahead. Look. Is this your pistol? Yeah. You cleaned it recently, haven't you? This morning. I lack a clean gun. When was the last time you used it? I don't know. Maybe a month ago. The time I shot rabbit. Any special reason for cleaning it this morning? No. Just thought it needed cleaning.  We're not sure she's dead. But if she is, your show's gonna try pitting on me, ain't you? We'll all get along better if you'll take that chip off your shoulder, Bowman. I ain't got a chip on my shoulder. I just don't like to be pushed around. I keep telling you I hardly know Lucy Rig. There's a suit hanging over here. Is it yours? Yeah. You wear it last night? Sure. It's the only suit I got. Did you know there was blood on the edge of the sleeve? What? Is that rabbit blood, too, Bowman? What? I don't know. Blood's blood, ain't it? Not after it gets to our lab. They can tell in a hurry if it's animal or human blood. I want to take this suit in the backseat of your car along. Sure. Take them. Frame me right down the line. I bet you if I wasn't a cowhound and had a lot of money, you wouldn't treat me this way. No, you look... Just a minute, Sheriff. Bowman, I'm gonna lay the cards right on the table. Lucy Regans disappeared. From information we have, I'd say it's a good bet she's dead.  Maybe not. But you were with her last night. A car like yours was seen at the place where we think Lucy was shot, and there's blood in your car and on your suit. Well, ain't you now, look, I know all this looks bad, but I didn't kill Lucy.  What I have to do to prove it to you. I know a good way to begin. Ah! We got a machine at Austin called a polygraph, better known as a lie detector. We can't force you to take the test, but if you do, it could help to put you in the clear.  I'm telling the truth. You want me to take this test? I'm sure like you do. Well, all right. Just wait till I tell the boss I have to go to Austin. Then I'm ready for any test you want to give me. Now, when I start the machine again, I'm gonna ask you some more questions. You just answer yes and no. All right. You live near Cambridge, Texas? Yeah. You know Lucy Regan? Yeah. Did you eat breakfast this morning? Yeah.  Yeah. Did you shoot Lucy Regan? No. Did you come to Austin in the plane? Yeah. Were you out at Brandt Lake last night? No. You know who shot Lucy Regan? No. All right. I think that'll be all. What's it say? Well, you have to ask the ranger about that. If he wants to tell you, it's up to him. I've got a right to know what it says. Come on. Let's go in the next room. I don't see why you won't tell me what it says. It's my test, isn't it? I've got a right to know. All through.  You'll know soon enough. Sheriff, take Bowman into that office across the hall. I'll be along in a minute. Sure. Come on, Bowman. Now, look, you said I didn't have to take this test. Now you won't tell... How about it? Well, I ask him all the questions. Look at the graph. Now, here's where I ask him if he shot Lucy Regan. And here, if he was out the lake last night. Don't know what you got on him, Jase, but according to this, that boy's alive. In just a moment, we will continue with Tales of the Texas Rangers starring Joel McCrae as Ranger Jase Pearson. An investment in boys is an investment in America's future. The confident, trained and respected citizen of tomorrow is the restless, untrained and eager youth of today. By pointing his footsteps in the right direction and guiding him along the straight road of healthy living, by wholeheartedly sponsoring and supporting boys' clubs, we can build good citizens with strong healthy bodies, boys who are honest and have a respect for property and individual rights, and we can gradually erase the social stigma of juvenile delinquency. Boys' clubs are sponsored in each community by non-sectarian, non-profit organizations of public-spirited adults who operate the clubs for the benefit of the boy members. Actually, the need today is for more boys' clubs. Let's all pitch in and help build the citizens of tomorrow. Let's provide recreation and companionship. Let's sow our seeds on good ground. Give them root so that they spring and grow up to full maturity. And now, back to the Texas Rangers. We continue now with Tales of the Texas Rangers and our authentic story, Uncertain Death. We kept Ken Bowman at headquarters while the lab tested his suit and the back seat of his car.  Bowman hardly batted an eye when we told him the news. There's one thing, Mishore. You were somebody else's short trying to frame me. You know better than that. What about the lie detector, Bowman? That shows you weren't telling the truth. Oh, it's a lot of hogwash. You sure can make me believe that thing never misses. There was human blood in your car and on your sleeve. Where'd it come from? How'd I know? Maybe I cut myself. You sure it wasn't Lucy's blood? You sure you didn't shoot her? Keep on asking that, Ranger. And I keep telling you. I wasn't the only one who went out with her. Now I want to go back to Cambridge. As soon as the pilot calls and says the plane's ready. You had no right bringing me here in the first place. You didn't have to come along. I told you that. And while we're waiting, I suppose you answer a few more questions. But I told you everything I know. How many times are you going to make... Probably the pilot. You want me to get it, Jay? Uh-huh.  I didn't lie. Why do you keep on asking? It was human blood. How did it get there? You got no one else to pick on. That's why you keep asking me questions. That was a lab, Jayce. What'd they say? Said they found different kinds of dust and soil particles in Bowman's suit. They'll do a detailed analysis if you want it. That depends on you, Bowman. What do you mean? Why does it depend on me? Because we think you buried Lucy Regan's body somewhere. And when you did, you got soil particles on your clothes. What? What can you prove from there? I think it'll lead us to where Lucy's body is buried. Oh, how? The lab has samples of soil from every part of Texas. Thousands of samples. They'll compare them with the particles found in your suit. They take time. But we're not going to stop until we find that body. Now, how about it, Bowman? All right. I saved you the trouble. I killed her. I shot her last night. Where was this? At the lake. We had a fight. She was running away. I shot her. Then I put her body in the car. Where'd you bury her? I didn't bury her. I drove down to the lake narrow. You know, Sheriff, where the bridge is. I waited to bury her down with rocks and threw her off the bridge. Can you show us where it is? Yeah. I can show you. Sheriff, will you go across the hall and tell them we want two witnesses? We're ready to take down Ken Bowman's confession.  I requested headquarters to supply us with a diver to help locate Lucy Regan's body in the lake. We returned to Cambridge, arriving after midnight. By five the next morning, we'd set up a diving raft. At daylight, the diver was lowered into the water at the spot Bowman indicated. I stayed on the raft with the telephone. What's taking him so long? Why can't he find it? How about it, Joe? See anything? Nothing here, Jase. I'm out as far as I can go.  Of course I'm sure. What are you saying, Jase? Hold it a second, Joe. Bowman. Where'd you get the rocks to weight down the body? I... I reckon it was over there. You carried them all the way over here? I don't know, Range. It was dark. Maybe it... Yeah, that's right. I remember, and I was down the other end of the bridge. Stand by to come up, Joe. We're going to try another spot. We've been looking around this bridge for seven hours. Are you sure you put Lucy's body in the water here? Range, I thought I did. I... I don't know. Wait a minute. There's another bridge a mile further down. Maybe you made a mistake. Maybe that's the one you made. Yeah. Yeah, maybe it is. Dark soon, Jase. Looks like we'll have to give it up for today. Yeah. But it must be here, Range, huh? I remember everything. Yes, I do. I was right on the corner of that bridge, right up there. Can you hear me, Jase? Go ahead. Stand by to come up, Joe. That's all for today. Sheriff, put Bowman in the boat. We're going back to the... How long can that diver stay with us, Jase? As long as we need him, I'll call headquarters and say we want him for at least tomorrow. Yeah, sure. Hope we find that body. Yeah, sure. You've got to find Lucy's body to keep me in jail, don't you? We'll find it tomorrow or the next day. We're going to keep looking until we do find it. Ah. It's too bad you have to look for it without me, ain't it? What? Tomorrow you'll be looking for Lucy's body and I'm going back to the ranch.  No. No. But you are if you try to hold me.  Confession? What confession? Now, look here.  Well, sure I did. Because you made me.  You're going back on your confessions. Is that what you're trying to say, Bowman? Wait a minute. I heard this boy with mown ears. He said he shot Lucy Regan and threw her body in the lake. Did I? What body? There was a body. I don't even know what you're talking about. Back in his cell, Jay. Good. We let him stay there tonight anyhow. Yeah, and he don't want to stay there at all. He started hollering like a coyote when I told him now we were holding him for obstructing justice. Well, some wild goose chase. He let us on the day. How about that? First, he says he did kill her. Let us look for the body. Knows it ain't where we're looking. Then says he didn't kill her. Are we going to let him get away with that? Not if I can help it. We've got to find Lucy Regan's body. Yeah, if we don't let that confession of his ain't worth a thing. Why do you figure he did it? Somehow I feel he's stolen for time. He must have some reason for wanting us to go off on a false lead. But why? I just don't get it. It's got to be something he did with the body. Something that made him feel he'd be safe after a couple of days' time. Then it beats me. Wait a minute. You remember when it was he confessed? Well, it was just after I took that call from the lab. Yeah, before that, nothing phased him. The lie detector, the blood didn't even bother him. But as soon as I started talking about soil particles, he folded up. What's that sound like to you, Sheriff? Could be. He didn't want the lab to go any further with that analysis. Uh-huh. And it's up to us to find out why. I'm going to call Austin and have him analyze every grain of soil they found in that boy's suit. I phoned the lab. They said they'd analyze the soil particles and give us an answer as quickly as possible. We waited the whole night. At 7 in the next morning, we went across the street to a restaurant to get some breakfast. We left word to have a call transferred there. Ten minutes later, it came through. I spoke to the lab technician then walked back to the table where the sheriff was sitting. Anything interesting, Jay? Maybe. Is there any granite around here, Sheriff? Nearest, he posits marble falls a couple of hundred miles away. Why? Lab found granite dust in the weave of Bowman's coat and some on the inside lining. Well, they do use granite for some of the construction work around here. Uh-huh. Like that road they're building out there near the ranch where Bowman works. Yeah. They use crushed granite gravel on the roadbed. That could be how Bowman got it on his suit. Wait a minute, though. Did he wear his good suit around a construction job? He wouldn't, unless he had some special reason for being there. Oh, I don't fall in. We know Bowman's been in a spot where he could watch the progress of that road for weeks. We also know there was some reason why he stalled us for a couple of days. Jay, you think he buried that girl's body in the roadbed? That's the only thing that makes sense so far. But why would he dig up the gravel? It'd be much easier to bury her in the part of the road where they hadn't put gravel yet. That's just what I think he did. He picked a section of the road that was about to be graveled and started his digging. Then he could have left that coat of his on a pile of gravel nearby while he was working. Oh, unlikely. So that's why he was stalled. I figured we'd never find a body once that section was paved. Who's in charge of that construction job, Sheriff? The field engineer. Come on. Let's go find him. When we spoke to the field engineer out of the job, we got our first break. He told us that since Wednesday night when Lucy Regan had disappeared, a mile a road had been graveled. But a machinery breakdown late Thursday had prevented that section from being paved. He also informed us that a man answering Bowman's description had approached him early Thursday morning and asked a number of questions about the paving schedule. We were fairly sure now that we were on the right track. We had to know the exact location of the body, and only Bowman had that answer. Our problem was to get him to talk. We worked out a plan and then drove back to town. When we picked up Bowman, he thought we were taking him home. He said nothing until we moved on to the stretch of newly paved highway. This ain't the way to the ranch house. Nobody said it was. I thought you'd take me home. Why are you taking me? You'll find out. This is a new highway. It ain't finished yet. It don't lead nowhere. It could lead further than you think. What are you talking about, ain't you? Look, I won't get out. Stop the car in here. In a minute, Bowman. We're almost to the end of the paved section. You're crazy. It goes further than this. You can see those men up there, Bowman. Pavement don't go no further than that. But that's just where they were Thursday morning. They had a machinery breakdown. I haven't been able to do any more paving until now. What's the matter, Bowman? I won't get out of here. I want to get out of here. You're getting out. Come on. What are you taking me? Just over here in the beginning of the gravel section. Part you thought would already be paved. What are you talking about? Look at her, Bowman. A mile of road covered with fresh gravel. And somewhere under that mile of gravel, Lucy Regan is buried. You're crazy. You're buried her there. We're going to find her body and give her a decent burial. See those men over there, Bowman? Rainsy. They're waiting until we give the word to start digging. If they have to, they'll dig up that whole mile of road. You can save us a lot of trouble by telling us exactly where you buried her. All right. I kill it. I kill it.  I want to bury her. She's the only girl I ever want to bury her. I don't know how crazy I was about it. She laughed at me. She laughed at me. Where's the body, Bowman? Under there. Where? Point out the spot. There's a couple of feet in the stake. I don't want to watch them dig. Take me out of here. Please take me out of here. All right, man. Let's start working by that stake over there. Please take me out of here. I confess. Please confess twice. This time we're going to make sure your confession holds up. In just a moment, we will tell you the results of the case you have just heard.  Next, it's The Big Show, with a star-studded guest list and your unpredictable hostess, Tallulah Bankhead. And Meredith Wilson will be on hand to direct The Big Show, Orchestra and Chorus. And be sure to hear the hilarious Phil Harris and Alice Faye show, featuring the comedy addicts of Frankie Remlay, Julius Abruzio and Brother William. There's Myrth and Music with Phil and Alice in their delightful program. And remember, too, the theater guild on the air will bring you another entertaining dramatization of an exciting play co-starring two of your favorite Broadway stars. Yes, Sunday is fun day on NBC because of the many fine shows sent your way to add to your listening pleasure. Later tonight, you'll want to hear Jack Parr on the $64 question, as Jack asks the questions and gives away the money. So remember, for fine entertainment all the rest of the day, stay tuned to this station of the NBC radio network. And now back to the conclusion of Tales of the Texas Rangers. In case you have just heard, Lucy Regan's body was discovered at the place Bowman had indicated. A ballistics check of three bullets found in her body proved they came from Ken Bowman's gun. Bowman, convicted of murder, was sentenced to life imprisonment at Huntsville. From the files of The Texas Rangers, they will soon be seen in San Francisco's story, a Warner Brothers release. The cast included Tony Barrett, Harry Lang, Howard McNeer, Ken Christie, and Ernie Newton. Technical advisor was Captain M. T. Lone Wolf-Gonzalez of The Texas Rangers. This story was transcribed and adapted by Charles E. Israel and the program was produced and directed by Stacey Keech. Hal Gibney speaking. Next, enjoy 90 minutes of comedy, drama and music on The Big Show on NBC.


Hello and welcome to COSTA, Coinbase Secure Trade Analyzer Talk, where we'll discuss some of the challenges that we face here at Coinbase, listing new assets as fast as possible, as secure as possible, and the solution, which is the tool, COSTA, that we have developed to address it. In case we have not met, my name is Peter Kaczaginski. I work on blockchain security topics here at Coinbase. I analyze, secure, and review different blockchain systems and smart contracts. Mostly publisher of the Blockchain Threat Intelligence newsletter and the founder of the Open BlockSec project. In the past, I was a malware reverse engineer and a penetration tester at the Federal Reserve. So one of the things that we do here at Coinbase is that the security team is responsible for secure asset listing. There are, in case you haven't noticed, we are listing more and more assets every day. And I kind of wanted to reveal what happens behind the scenes. How does the asset listing and review process works here at Coinbase? So it all begins with the asset issuer sending an application, filling out a questionnaire that we have published on the asset hub on Coinbase website. The questionnaire includes things for smart contracts is the address on the Ethereum blockchain, for example. If it's a standalone blockchain, we ask folks about the blockchain explorers and various consensus mechanism information and so on. Once we get this initial request, it goes to three different teams. On one side, it goes to the compliance review to make sure that the whatever asset will be, will allow us to be compliant with the regulators. We perform legal review to make sure that the asset is legitimate and to make sure that it doesn't expose us to any legal liabilities and, of course, the security review. So this is what I'll focus on today. After all of those reviews are conducted, all of that data is sent to an asset listing panel, which goes through all the different characteristics of an asset and eventually decides to list it on Coinbase. So let's talk about the security review challenges. Well, for one, it's a pretty costly and time intensive process, at least it was in the past. On average, it took us about a couple of weeks to go through a single blockchain standalone blockchain asset and about a couple of days to go through a smart contract token. Consistency was always challenging because as you go from one reviewer to another. People have some variance in how they review risk. And at last, as we list more and more assets tracking all of them, what are their risk scores, what are mitigations that need to be applied, how are things changing through time is becoming harder and harder as we build that library. At last, we try to use existing tools out there and there are a lot of amazing tools which are primarily geared for security analysts. They're performing audits, standalone audits for a given asset, but we needed something that allowed us to really push forward and automate things as much as possible. When we're talking about automation, the scale that we're talking about here is going from about one asset a week to up to 100 plus assets a day that we can analyze, go through, make sure that we trust their security and eventually list. So that's our ultimate goal. I would say we're not there yet, but we're definitely in the 10 plus assets territory. So let's talk about Ethereum smart contracts. As I mentioned, we list two types of assets. One is the smart contract based assets like Ethereum tokens and standalone blockchains. The reason why Ethereum tokens is easier to automate is that one, they use standardized interfaces like ERC20. There are a lot of existing libraries like Open Zeppelin. The languages used, the smart contract languages are fairly limited, so it's possible to analyze them completely. And at last, it's a great target. It's a very large market cap. DeFi projects are popular these days. There are more tokens out there that come online every day. So it's a fairly good target for automation. So a normal smart contract review is we basically pull down the source code from Etherscan. We go through it function by function. So this is a standard ERC20 interface and we'll review to make sure that it's safe and secure. This is a very manual process. What we started noticing is that, if you look, for example, at this particular pausing function, is that, okay, so this particular function can only be called by the owner. We have to make sure that the asset is not already paused and then it sets the flag for whether or not this asset is paused to true. We see the same function over and over and over again. As we go through the analysis, we started noticing patterns like why are we reviewing the same function multiple times, if only there was a way to detect it automatically. The reason why this function keeps on popping up is because a lot of projects, they import existing libraries, such as Open Zeppelin, and of course, the Theorem smart contract community is fairly small. So everyone is looking at each other's projects. They're learning from each other. They're iterating slowly on the code. The way that we decided to approach the automatic detection of known patterns is by looking at them through abstract syntax trees, ASTs. So if you take a previous function, the pause function, you can decompose it into just the grammatical attributes. Just the grammatical attributes. We have two variables. There's a sign operation. There's a call to an event, pause, and there's some attributes to this function. What this allows us to do is remove all syntactical metadata, such as comments, or how many spaces you have between the equal sign and variables, and focus on what does this function actually do. Next, we generate it, we take the abstract syntax tree, and we basically flatten it. This allows us to create the next step towards the signature generation. We took an existing library like Open Zeppelin, and we performed the same operation where we generated ASTs for 3,000 different contracts, and we generated 2,800 plus signatures from all those contracts. Next, we took all of the existing smart contracts we analyzed and generated additional 500 plus signatures. What we did next is something to say about our team and that we all like each other. We manually went through all of those 5,000, more than 5,000 signatures and individually assigned them risk. What are their characteristics? For example, the pausing function that we saw before, we would assign pause tag to those functions. If we see something that can upgrade a contract, we would tag it with upgrade. If it can confiscate funds and so on, we would label them one after another. After we generated this massive initial library, pre-seed library, we can move on to the next steps, which is we took those labels, so let's say pause, and we assigned them what is the risk. We created a risk core between 1 through 5, 5 being the most critical, most dangerous. We assigned for each risk, we assigned mitigations, which can be automatically applied for any given risk. We did this for every single function, so we build those massive libraries of signatures, risks, mitigations, and of course scores for each one of them. Let me show you a capability of what the tool does manually and see if you can do something like that manually better. On the left, we have a signature that was generated for this pause function. You saw that earlier. We're looking at a contract which has another one, another pause function. What the tool does is that it compares them, but after it compares them, it says, okay, those two match perfectly. And I can pass it. I don't need to analyze it manually. Let's look at another example. So two identical looking functions. You know, the auditor will need to review them line by line. And in this particular case, the tool automatically detects that it's actually someone tried to backdoor this function by replacing letter O with zero. Something that an analyst may miss, but the tool because it's looking at the grammatical representation of those functions will detect quickly because the signatures will not match. Let's look at another example. Can you tell me quickly if it's matching? It is. Just because you introduce a whole bunch of spaces and comments and rearranged things. Again, the AST trees will match. So those two will be equivalent. We don't need to review them manually. A few more examples where if you rearrange things, that will be detected as false or you change different Boolean variables to your sign. All of that will be detected automatically. So where does this take us? We generate those flattened AST trees. Next, we generate a hash. So just a shot 256 hash of those things. So it makes the comparison very quick. These are, as you can see, the sources where we previously saw that particular signature show up. So this signature listing grows slowly as we see more and more contracts that are matched. And of course, we assign what was the tag to it. So we assign that this particular function causes pausing. So what this allows us to do, instead of manually reviewing the validity of each smart contract one after another, we turn our processes basically in a machine. Like we can go through hundreds and hundreds of smart contracts quickly, as long as a good portion of them have signatures that we've seen before. And if we don't, then we build mechanisms which I'll show you on how to quickly populate that signature database and make it smarter. So that's the foundation for the tool, Costa. There are currently 8,500 different smart contract signatures from all the different smart contracts that we have analyzed so far. We never have to, if we see a new signature, we add it to our internal storage and we never have to review it again. It contains codified feature risk and mitigation repository. So for every signature that we detect, we can immediately describe what is the risk here, what are different mitigations, how bad is this thing? Like if we see something that can, let's say confiscate funds will immediately label as dangerous and it will affect the overall score of the contract. We can track mitigations and how they're applied across all the different assets. So for every risk, we can apply different things, things we can do in the case of maybe monitoring or some additional controls that we can implement that make that risk not as bad. So we can keep track of where those things were applied across our entire base of assets. And finally, we can generate nice reports that are used for our managers and leadership so they can make educated decisions about the safety of the safety and the current status of the smart contracts. The last but not least feature of Coast is that, think of it as a metasploit for smart contracts. It has a small arsenal of tools built inside it that is useful for also manual analysis, not purely fully automatic, such as pooling source automatically, flattening, querying the blockchains, parsing the solidity and so on. So let's take a look at how you can analyze smart contract with Costa. So when we receive a new asset, we get this basket of all sorts of different functionality in that thing. What we do next is we decompose it into individual functions, we generate code signatures for each one of them, and then we extract all the different risks associated with all those signatures. Next, we compile them all together, take whatever the highest risk was, and generate reports. And finally, ship the analysis to our leadership so they can make a decision about the asset. So let me illustrate this through a demo where we'll look at a sample asset. So right now I'm about to run the Costa analyzer against an Ethereum address which is associated with the chain link token. So all that is needed is the address, it will automatically pull the source code to generate ASD trees that I described, create signatures, and extract all the different risk points from the contract. So let's see how this actually works. So there you see it loaded all the signatures, it downloaded, it already downloaded the contract previously so it doesn't need to do it. It detected a total of 19 signatures and all of the signatures in that contract are well known, so it was able to successfully generate a report. So if we open a report, let's take a look. So this is what the report looks like. We have an executive summary, well first of all the smart contract address. The executive summary with the score, like what mitigations were applied or not. Inherent score is the score as is without any mitigations, residual is whatever remains if mitigations were applied. So in this case it's score two, so the risk is minimal. And then we have description why this risk was scored the way it was. So for example, we have a finding which is the external address call. These are the functions and associated signatures that were detected that produce that score and a brief description. So what else we have in the report, we have assembly instructions. So we noted as risk score one just informational, we want to keep track of those things. And then towards the end of the contract, we have a full listing of all the signatures detected in this contract. And I guess the remainder of them did not have any risk associated with them. So let's take a look at an example contract, which does not have all of these signatures known. So we need to do a little bit of a manual work. So in this case, we will take a look at the year finance token. And notice that I added a new flag dash dash interactive. And the reason why is that it's a brand new smart contracts and I previously ran it and it failed saying that there's some missing signatures. I can actually show it to you. So if I just ran Costa without any parameters just as before. So I detected a total of 31 signatures. And then it says, hey, like there was one unknown. The contract has one unknown function signature. So you'll need to do some manual work and define it before I can generate a report. So that's where the interactive flag comes in. It will present us an interface where we can label this function with whatever risk is relevant. So let's rerun it with the interactive flag. And this is the function that was that we had a missing signature for it was a mint function. I guess it was unique for it looks similar to what we've seen in open Zeppelin libraries. But there was something unique about the combination the compiler and the way that's used within this contract. And we we see that there's a fuzzy match a fuzzy match engine automatically compares new functions which we don't have a precise signature for. If there's some kind of match with with a known function signature. So we can see that we previously analyzed a token YFI I and that obviously match with the YFI so there's there's a correlation there must be compiler difference which is why this is different. So you can see that it's a different offsets. So at this point we're satisfied that this is a safe function as minting functionality so I can put in a label minting. This will allow me to store that in store so anytime we see this again I don't need to analyze it. And now we can generate a report. So let's take a look at the reports. This is the report we just generated for the year and finance token. The score here is again to I guess some things that started popping up this is the minting function that we just added. There's also like super user account and privilege management functions and an external address goal. So let's take a look at those in more depth. So minting functionality the risk here is of course that it could be some an administrator can inflate the stock and so we want to make sure that we understand this risk. And the other functions is the super user account or privilege management. So these are there are a few functions there said governance remove mentor adminter and those perform some kind of governance function so we want to know that as well. And of course, the external address call so call optional return. That's a well known function it does external call out so we're tracking that as well for functions which have governance risk. We have our own slack monitoring system so we call it circuit breaker. So these three functions whenever they're called we will automatically get alerts, and we will investigate what kind of governance action is taking place. We also have a major duty setup for more critical functions for example if someone is shutting down a project or is running something more dangerous will wake up at 2am and investigate what is happening there. And of course, the, this is a complete listing of all the different function signatures that matched in this project so we have our safe map functions in here, and a whole bunch of other things that we didn't need to analyze. So notice that as we were going through this smart contract. There were more than a dozen of functions that we would normally need to scroll through and review and analyze. Instead, we completed the report in a few seconds because the tool immediately identified what was unique about this function. The contract is almost verbatim ERC 20 and try to implement one little new thing. The tool will razor focus you on just that one thing so you can be efficient with your time. There's no need to verify safety of safe math library if you if you've seen it again and again and it's coming from well known library like open zeppelin. You don't need to analyze that multiple times. And that's the power of the tool that it removes duplicate effort road map. We have a few things planned ahead of us. One is we want to remove the the manual review step as much as possible so you saw the power of the fuzzy matching so instead of trying to go through the entire contract we just had to compare it against something that matched pretty closely using formal proofs to automatically deduce like this is the functionality within this particular blob of code and we can we can prove that that's all it does and nothing else. So this will allow us in the future to automate this step further. augmented mode enhancement so we want to continue integrating different tools into Costa and and try to sneak it really like one one stop shop for analysts both automated reviews and manual reviews. And of course, it's definitely in our road map is to open source to still give this to the community to help them. Evaluate security of their projects other projects and just help the whole ecosystem that's way to become more secure. There's some risks and limitations within the tool that it's important to discuss. One is the database reliability. So we are manually editing our features risk and mitigation so we take care to make sure that we do regression testing and other running other heuristics to make sure there's we're not missing anything or mislabeling things. So there's some kind of inconsistencies we catch it pretty quickly as we do run our tests on every on every commit. ERC 20 code reuse. So it could be that in the future contracts will start deviating more and more from ERC 20 contract pattern. So this will require us to do more manual addition more code that cannot be reused and used to be manually analyzed defy and logic bugs and much harder to analyze. So notice that they were all the projects that I looked at. They were pretty straightforward tokens. Once we go into the defy territory where you have hundreds and hundreds of different functions which are very complex interaction between them. It becomes much harder to catch and certify that this particular contract is safe. So Costa may be a great tool to let's say if you certified something like sushi swap and you want to look at something like cakes pancake bunny and see like where the two projects deviate. But beyond that if you have a brand new project that you want to look at, then it becomes harder. And of course we rely on ether scan to pull the source code. So there's some degree that we want to make sure that ether scan is being honest but we have mitigations against that as well to make sure we can verify that the generated source code matches the bytecode. That's all I have. This is the newsletter that I published. Check it out subscribe to blockchain thread intelligence. And since this is a recorded session, please feel free to reach out to me on Twitter or elsewhere if you have any other questions. Thank you.


So, thanks everyone, this is going to be attacking and defending JWT tokens, the ultimate guy. Before we start, I would like to shortly thank the Linux Foundation and all of you for attending such a great event. So, first of all, you don't know me, so who am I? I'm Leo Joskovich, I'll try to pronounce my name, and I'm coming from Mexico originally. I'm a security researcher in Palo Alto Networks. Usually we do a lot of fun by hunting for web vulnerabilities, and obviously we also try to improve our products as well. I'm a student also for MSc Cybersecurity at the University of London. But I also have some hobbies as well, like football, soccer, Argentina, Mexico at that time. I also like baseball, and sushi of course, not because I'm in Japan, I promise you I like it everywhere. And of course, I like chili, I like a lot of spicy. So if you see me around putting some spicy on my soup, don't worry, I'm coming from Mexico, so this is who I am. Today we have a very special agenda here. We're going to start with a brief history of how we used to do the authentication and authorization. Just a brief, so that we can move forward to JWP or Jot on the Mentals. We're going to see the advantages of Jot, as well as some terminology, because at first it looks very confusing. There's a lot of terms there, and they're almost very similar to each other. Then we're going to move to some statistics, you know, because it's good to have some idea of what's going on in every industry. And we're going to move on to a real exploitation scenario. We're going to see more attack vectors because there's many, many vectors out there. And of course, how we can protect ourselves from those attacks, how we can mitigate those as well. So let's start with a brief history here. We know that HTTP, the protocol that runs the web, is a stateless protocol. It means every time you authenticate, you send a request, a special request to a server, you need to actually provide, again, a cookie or some other form of authentication, just like every time you go to any office, you need to take your batch and put it again. And it doesn't matter how many times you were there, even after 15 years, the CEO, everyone, needs to take again the batch on that entry system and put it again and again for every time you go in. So the same applies for HTTP. Now, regarding session management and access control. So it used to be something similar with HTTP by using cookies, but we refer to authentication. So we used to use some session cookies depending on the technology. We had PHP, we had Java, session ID, ASP, Cloud Fusion, all different kind of technologies. And over there, we used to send the cookie, the session cookie for authenticating against a web server. The same goes for the authorization. The authorization was used to be done only on the server side. It means if you're an administrator or if you have the right permissions to access certain resources. So we used to do that only on the server side. Everything was just there and only there. This also has some other disadvantages because it means that every time we need to have a special database, some long file, with all these records, with all these sessions, and every time the user goes and tries to authenticate against that server, so it needs to go and look up for where that record is, where the session ID even exists, and then move on from there. But obviously that's a little bit slower than just using other technologies. And of course, we know that cookies, I mean, unless you use the right flags, which are a few ones, they are vulnerable to access attacks, which is a very common attack that probably you are all aware of. So cookies nowadays, this is what we see in almost every server. You know, just that's where they want. They want to kind of keep track of the user for advertising purposes. This is the main use of cookies nowadays. So let's move on to some JOT fundamentals. And you probably say, hey, what do you say JOT? So by design, JOT stands for JSON Web Tokens. That's RFC 7519, just in case somebody wants to know the number. And in the RFC itself, it says that you should pronounce that as JOT. I have no idea how they come up with such a name, but it's by design. And it's a standard for exchanging data between applications, any kind of applications. And optionally, we need to emphasize that, they are cryptographically signed. We will see later why I must reinforce this specific topic about optionally cryptographically signed. And where do we see those JOTs being used? So we can see those in containerized web applications, any sort of microservices, traditional APIs, you know, anywhere, any e-commerce, any online shop that you visit, they probably make some use of API mobile applications. Container registry, if you have some sort of containers, anyone to push or pull any image to that repository. So you do that, the authorization also, by using JOTs as well. But mostly something that it's maybe not so common is vaccination for, vaccination certificates for COVID, they also use some sort of JOT, okay? And as you can see here, I mean, it comes in a format of like a QR code. But at the end, if you scan it, so you will see that usually, depending on the country, but usually you will see kind of JSON web token there, and you will see almost the same format as with any other web application. And that's important because you will see later on how you can fake and you can take advantage of vulnerabilities to create your own vaccination certificate. So just to summarize here, and also compare this, we have the evolution from standard cookies and we move on to JOTs. So first of all, we mentioned that tokens are stored on the server. And by JOTs, they're not, and that's an advantage because you don't need to keep up, you don't need to keep trace of every single token where it is stored and you need to store it in that specific server. And that leads us to easily scale up. When you want to grow app, you have 10 instances, you have 10 containers, you want to make thousands of, hundreds of replications. So we don't need to save that specific token and move it over this huge amount of resources. You just save it on the client side.  Another advantage here is that we can include more data. It's not just your authentication token and that's all. By using JOTs, you can include the data where this token has been generated. For statistics or logging purposes, you can add roles, you can add the email, the name, you can have a lot of data because at the end, this is the purpose of JOTs, exchanging some data between applications. And all this, of course, you can encrypt. And the same goes for cookies. It's not strict by itself, but you can also encrypt the cookies by using some basic algorithm. But here in JOT, it comes very, very handy when you want to exchange data, sometimes sensitive data, and let's say you're a bank and you want to encrypt that data because you don't want the user. I mean, we mentioned that the token is stored on the client side. So if you encrypt that data, you can move on to and transfer it from servers more securely. And that was just like a brief of JOT fundamentals. But now, such as Mr. Miyamoto says, let's talk more about JOTs. So we have some main components of how this is constructed, how or what consists of a JOT or JWT token. So we have, first of all, the header. The header is, I mean, just to simplify this, we can see that you can define the validation algorithm. So just to keep the simplest, I chose to use the HMAC with SHA256. Okay, we'll see later if you, there's a few differences between this and the rest. So this is all that we can use by the header. And then the payload is actually the mean. It's actually what we want to see, but we want to, I mean, as an attacker, we want to manipulate. Or as a, you know, the developer or the defender, this is what we really want to protect. So here, just by an example, I gave it a name of Haruki Tanaka. It should add, this is just a claim. It's kind of an attribute. Again, we mentioned that there are like just a few claims or a few attributes that you can add more to your token. You can add a, you know, there's a full list of reserve or even custom claims or attributes that you can add. So this is just a very simplified version here. EXP for expiration. This is the way of, one of the ways of revoking tokens. Once the expiration is, the time has been passed. So we can for sure validate and make sure actually that the token is not valid anymore. And of course we can also, the role, if, you know, for authorization purposes, if this user is an operator, is an administrator, a support editor, you know, depending on the type of application that we're talking about. So we can add the role as well. And why not? We can add also the email. Don't try to email that. I'm sure that this doesn't exist, not just made it up. So there's no Haruki Tanaka on this till now. It works for the links validation. And lastly, we have the last component. So the third component is the signature. The signature is the cryptographic string that we use to validate both the header and the payload. And it just looks like, you know, some random number, long, long string that we usually don't really understand what it means. But let's try to keep this on the side for a moment and then we'll come back to it later. So the format for jots is, I mean, again, excluding the signature is the header that we have right here at the top. Then we have a dot. And then we have the payload. Again, I just simplified this to use only two attributes. And the way of transmitting that and transferring this to the client and back to the server is by encoding this into Bay 64. Now, we need to bear in mind here, this is not a common Bay 64 that we know. It's called Bay 64 URL. There are some nuances there, such as, you know, because we're talking about URLs. So such like the plus, the minus signs, they're a little bit different than the common Bay 64. And this is how it looks like. You can see here on the right, this is basically, again, just the encoded version of a very simple jot token here. Now, how the generation flow works? Like, okay, we talk about the three main components, how the basic format is, but how actually it's being generated. So first of all, we have a user that logs in. Of course, you know, that's not a strong password. So don't try that. And after, of course, the user is successfully authenticated. So then the server actually generates the token. Okay? So this is just the version that we saw earlier. We have the algorithm here, which is HSHMAC SHA256. And the name and role and email, of course, that's pulled out from an internal database that is not exposed to any user. And then the server also encodes this to the Bay 64 URL version. But then what happens here is the server signs this token. The server makes sure that, okay, hey, this is a stamp and this is what I'm going to use in order to validate this token because if later on this token is being manipulated, so then the server will know that actually it can either refuse that or accept that for further processing. So this is the resulting token here. We have the top of the header. We have in the middle here after a dot. You can see that the dot is not being encoded. And this is the payload. And lastly, we have the signature. And these three parts are being sent to the user. So as you can notice here, the user is already authenticated after these few steps. So this is how the generation flow works usually. Of course, we can add more, you know, a very complex scenario here with more different endpoints and what, but this is just to simplify this flow. So we talk about the signature. Now, what is the signature exactly? Why do we need a signature? So the signature just to remind ourselves is what actually securely validates the token. If there is no signature, it just means, hey, just come in. Like, I trust you. Like, why not? So it's being calculated by taking the header and taking the payload, again, followed by a dot after the header and the payload. And then we convert that into base 64. That resulting string is being taken to the next step. And with the key, again, the key in this case, because we're using HMAC, it's just a long password. It's a long password. So of course, you need to choose, like, you know, the rules are that you need to use a strong password, you know, 8, 10, 12, you know, above this kind of characters. If you're going for the manual part or you can use UUID or whatever the mechanism you use to generate that really strong and long key. But on the other hand, you can use a private key, of course, with another algorithm. This is a PKI system where you can use private and public keys. But let's leave that for a minute. Now, what happens is that after you sign the token and after you have this part, you send that to the user. So if even one bit, just one little, just a word, even just one dot, something has changed into that token, right after the token is being sent to the server, oh, the server is going to say, hey, no, that's not my token because it has been altered. This is not the same signature. And as you can see, and it reflected by this puzzle, there is going to be inconsistency because the server is going to say, hey, this is not the same. Not just by one bit, just like, you know, by hashing function. Basically, in some cases, it could be a completely different signature. It could be something completely different, different call or different string. So the server is going to say, hey, this has been manipulated, so I'm not going to accept that. And that's why this signature is very important. So the whole flow, it works like this. So after the user is authenticated, let's say that the user wants to request or wants to access his or her own bank account. Okay, let's say the ID just for this example, it's going to be one, and they want to view their account. They want to view their statement. They want to view whatever deposit they have on their account. So they send the previously provided token here. They send it to the resource provided. Okay, just, it could be at any API endpoint. And then this server, obviously sending it to an authentication server, so it's going to check for the signature. The way of checking for that is, again, by revalidating, regenerating, I'm sorry, revalidating that token by using the same key and the same algorithm, which is in this case H1256. And that we compare to the provided signature that the user has given us. Because we cannot just say, okay, we're going to take the header and the payload and we're going to just try to sign this again because that's not going to have any other difference, right? We need to retake it and compare to what the user has provided us. And if all goes well, okay, if no argument, no parameter, no value was tampered there, so then the user will have an access granted there. Otherwise, nothing is going to be there. Okay? And we will see later why, I mean, specifically, we need to also validate not only the signature, but also other parts of the token as well, okay? Because we should never assume that the user is talking specifically about HMAC-256 or less instructed by the token itself. But that was too much. Now, that was about just some fundamentals, but what about the terminology? You probably have heard about some other terms, JWS, JWK, JWE, JWT, but just too much. Probably the first time that you learn about these terms, you're kind of overwhelmed. You don't even know where to move on from there. It's just too much. So for that, we have this simple vein diagram that tries to simplify this. I know it can't be a little bit overwhelming at first, but maybe after this explanation, it will be much easier. So first of all, we have JWT. So JWT is just, yeah, just the essential format. It's just basically saying the JSON format, the way of actually originally transmitting data is by using JSON. That's mainly what the RFC, the specification, 7519 is talking about. Then we have JWS. JWS adds more the signature or the way of validating these tokens, because otherwise, again, they're useless. We don't trust the user. We don't trust any information provided to us. And then we have JWE, which is just another extension of that. It's basically, it could be both, but basically it adds the encryption layer. It adds the payload. It's not just signed, but it's also encrypted, because again, if we are a bank probably, we want to hide some data or some information about the user, maybe for some other industries or some other organizations. It's not required, but for some, they do. And these are, these two, JWS signature and the encryption are actually defined in something called JWA. JWA is just like the way of saying, okay, you're going to encrypt, so which algorithms you're going to use. You're going to sign, you're going to validate which algorithms are you going to use. So these are defined in JWA. Then we have another specification called JWK. And JWK is just when you use public or in private keys for signing and validating your tokens. It basically is this structure of how these are being constructed as well as some public keys. So usually companies might have like four, five, ten different public keys. In case some key has expired, you need to revoke some key because it has been installed for any reason. A company may have more than one, and this is where this is being defined. Now because of that, you might think, okay, now what I'm going to do? I'm going to sign. I'm going to, you know, like just, we have a PSH, we have just a lot of algorithms, a lot of choices, okay? You go to the store, you have 300 different potato chips. What are you going to choose? Okay, this is secure and this is all secure, but this is all secure and it just doesn't work. So for that, there's some other organization called Jose, which they try to standardize everything here. They have like a framework and they say, hey, please make use of this. This is what we want to use. If you could use some other more stronger algorithms, you're free to do so, but just in case this is what the standard that we try to make is what we want to do. So Jose basically collects and compiles all these algorithms, and he tries to make some order here with all this. So just a little bit more if we dig deeper into this. So we said that JWA, the algorithms, these algorithms are defined right there, and what do we have there? So we have JWS, which is again for signing, and signing basically means integrity. We want to make sure that the token wasn't manipulated by any during the trial transmission from the client to the server. So we have some examples here of what kind of algorithms we can use. We can use RS with RSA. They all use SHA with different key lengths, 256, 384, 512, and we have also the elliptic curve ES or PS. And basically the difference between them is, again, if we use symmetric keys or asymmetric keys, if we use HMAC, so HS, basically means that we are going to store a password, a long token, UUID, whatever, in our server, and by the rest we're going to store our private key. Okay? But pay attention here. By design, there's also an algorithm called NONE. I have no idea why they did that, but yeah, it's there by design. You can specify NONE. You're not going to use any algorithm to actually verify that the token wasn't manipulated. It just basically means I trust everyone. Okay? Open house. And on the other hand, we have JWE. Now here, it's a little bit more complicated because we're getting into cryptography. We have just different, huge list of different algorithms that we can use, and that's for confidentiality. Okay? Integrity for validating confidentiality is for hiding data from the user or whoever is in the middle. And on the other hand, we have some sort of example here of what a JWK, the key store, looks like. We have the key type here. You can find the algorithm type, EC for elliptic curve. So that's where we have X and Y. There's just two coordinates, two values that we need to provide. And as well as the public key, the key ID that we use for that specific token. And basically this is all about this three or four actually different specifications. A little bit more about JWK is where this is located. Okay? It's a file, a JSON file that in many cases it's being stored under these locations. It could be .will-known-jwks.json or under open ID, off, or simply under root, JWKS.json or in other maybe not so common places or just like slash api slash case. Or if we're using a version, one, two, three, depending on the version that we use, or simply something custom as JWK-set.json. Now this is important because we need to know where the token is leading to us. In some cases we could see some more information that it's being stored over there. And again, as an attacker, we want this kind of juice information here. But before we proceed, let's see some statistics. Let's see something interesting here. So apis became crucial here because they bring a lot of benefits, really a lot. Now by saying apis, we imply also JOTS because apis work usually with JOTS, with JWT tokens. And we have here some classification by industry. So we see that at least the financial sector, at least that this is what the stateofapis.com presents, we have at least 80%, we have 1% of the websites that use all apis. It means almost everyone. And by technology, interesting that it's a little bit less, but technology, manufacturing, besides government that are on top of that. For some reason, the ability takes a little bit more time with government agencies, but still they also have a huge use of apis. And that's why it's very important that the API implies also JOTS. Now, let's talk about a real exploitation scenario. Okay, we talk about some attacks, some history, what do we know, what can we do. So that's just a real exploitation scenario if it's not now, so when it's going to be. Okay, now this is a real attack that happened not a long time ago. This is in samokad.ru. It's just a provider of electric scooters in Russia. And this is owned by Mail.ru, the biggest provider, the biggest mail provider in ISP in Russia. So what happened here is that, I mean, there was a key, actually the signing key was predictable and you can understand by yourself what that means. So the user was already authenticated against the server, so you can sign up freely. And then the token was sent to the server but after being manipulated. We can say, hey, the role is set to user or operator and then we can manipulate and change that to admin. Okay, what's going to happen? Because the key was predictable so the token was actually valid. So when it reached the server here so the token was actually validated by the server. And when the user requested any endpoint, the admin panel or any other privilege panel or privilege resource, so the access was granted. Basically that leads to a full account takeover. You could impersonate any user. You could actually do any action on the server because why not? I mean, if the server usually trusts your token and your token is not being actually validated as it is, as it should, the signing key is not as strong as it should be so then that leads to a complete disaster. But let's see a little bit more about some, my bad, about the real or the technical data here. So we have the token here. Again, this is just a simplified version. There's not much data about how exactly or what fields were included there but let's assume that they have this admin set to false. It just basically means you're not an admin. So by using this short script in Python, you can already sign that and change the admin to true. Then the key here, that was the default key that you used, it was predicted. They just used secret. Nothing really fancy. So the token was signed and then the token was sent to some vulnerable endpoint. Just imagine the admin panel. So the token was validated and accepted by the server. Then the server here actually granted access to the user.   Two minutes before, you didn't have access to that. You got 401 or whatever the other HTTP error that you got. You got access denied. But after that, you can actually see everything.  You don't even work in Russia. You don't even work for mail.ru. But you could just do that because of this little role here and the problem about the key. Okay?  Now, besides that, we saw just one thing about the predictable password. Predictable signing key. There are other many attack vectors here. So we have on one hand, we have the header here and we have something called Algorithmismatch. There has been, again, just one example, one CD of H because there has been many of that. I mean, H here. You basically put, instead of HMAC, you put RSA and basically the server, it accepts both. So you just get confused by that and you can sign your token with that. Or the use of known. Yeah? If you use known, the server accepts that. You just don't need any key and any signature. It basically means, yeah, just bypass the validation there. Other cases are discrepancies between algorithms and signals, like, okay, because if you're using, let's say, HMAC with 256 and then you have, you know, like a huge signature there, then it doesn't really make sense. I mean, it's just 56 bits, but you send something like 4,000 bits, which it doesn't really make sense. Or on the other hand, we have also injections. All kind of injections. Excesses injection, astral injection, remote command injection, anything. Or even path reversal if we talk about the key ID parameter here. We have other vectors here. JQ, or X5U, or X5C, which are claims or other attributes that we can use to verify, or actually to lead the user to verify the token by using a URL or by using a certificate located on an external endpoint. So that could lead to a SSRF and an open redirect. And again, that happens to Invicti. Again, there are many cases. We have cases here for many of these vulnerabilities, just like this one. This is a website. It's really funny about, it's called HowManyDaysSinceAjotAlgoNoneVol.com and it basically keeps track of this kind of vulnerabilities. So it happened just 298 days ago. Maybe a little more. With the Brazilian government, COVID certificate, and you can see here that people, this guy here, the hacker, it was able to create a fake COVID certificate of the president himself. And the same thing happened in UK and in more countries as well. So let's just go back to some more attack vectors here. We have also on the payload, we have other CVS, we have this realization attacks. If you use the CTI, the content type, and you manipulate that to use the realization mine type, you can use JTI for basically the absence of JTI for avoiding replay attacks. So that happens in commonlibrary.jot.net. Simply claims were, they were not validated. Any of these claims, any of these attributes, the value was not validated. They just trusted the user. Or in some other cases with the signature here, just what happened now with a reviewer, this company here, that the key was predictable. They didn't use a real strong key. Or other cases, which is something more complicated, is where, yeah, they were actually signing in cryptographically signed a token, but there was an issue with that with mathematics. So they could just input some random value and that could turn into a valid signature there. So how do we protect our results from that? How can actually mitigate all these attack vectors? So obviously the first thing to do is to keep updated all these open source third-party libraries. Whatever you use, Python, json we're talking, whatever you use, it should be updated. And always don't trust the user. You need to sanitize and validate all. When I say all, it means the algorithm, it means every single attribute, every single claim and value, okay? You never, ever trust your users. More often when it with time-based claims, yeah, because they can be also manipulated, not before issued out, there's like three different of those time step claims. Also, you need to keep a white list of URLs to verify against those key stores, okay? Because you don't want your user to provide <IP_ADDRESS>, which is your admin internal endpoint, right? And also, it's arguable about you should send your jobs in your authorization header. Otherwise, it will be in the local storage, your station storage, and that's not really recommended. And of course, don't not include any sensitive data. No passwords, nothing else, just whatever you need. And lastly, you need to properly revoke tokens. What happens if somebody stole the token, somebody stole the token, some made in the middle, so you need to have also ways of mitigating that as well. Of course, use strong keys, but not only that, use safe and secure places to store those. In a key management system, usually in the cloud, and of course, log and monitor, because you need to know where you keep receiving the same request with some, you have a pattern there with you receiving the same token with just slightly different values, you need to know that you are under an attack. And basically, that was all. And thank you for joining and listening. Any questions? Cool, in Japanese as well. I'll repeat my question. So you mentioned the example of encrypting JWT tokens. So I'm curious if we are talking about a web client in which the storage is accessible by the users. Is there a scenario where they also use encrypted JWT tokens? And how does it benefit them? Okay, that's a good question. Basically, when you send the encoded token to the user, you put it into your terminal, you do PiBase64-D and you just decode that. It's in another format, but it's visualizable by anyone. So if you apply cryptography to that, so then the payload, second part, it's going to be like just some random symbols there. It's going to look like binary. Even after decoding that, so you're not going to be able to decrypt, unless you know the key, but usually you're not going to be able to see what's inside. So that's the encryption or JWE that adds to JOTS. Okay, so in that scenario, the encryption key would still be available to the client so that they will be able to decrypt this decoded JWT token. Is that a correct assumption? That's a good question, but no. Actually, because everything happens on the server and that just being sent to the client. Okay. Actually, the key, you're right. The public key is there, but it's also encrypted. Right. So there's not really a way of decrypting that unless you have the key. Got it. Thank you. Welcome. Any more questions? Okay. Thank you so much.


Hello everyone, I'm Gabrielle and today I'm here at Oxmer Toyota for our pre-owned vehicles of the week So you guys we're gonna have three vehicles We're going to talk a little bit about and all of them are right here right next to the front door of the dealership So let's go ahead and start with this one right here. So this first one is a 2020 Lexus GX 460 luxury now the exterior color is called atomic silver This vehicle is going to have those black alloy wheels There is going to be a Sunroof you're going to have a navigation system. There is the Malta media system. You'll have nine speakers There is going to be a Backup camera now that interior is in a black leather mileage on here is 22,248 And the price is 68,995 Our second vehicle is a 2018 Dodge Challenger SXT The exterior color is in a red This vehicle is going to have 18 inch alloy wheels now for the interior You are going to have the u-connect 4 with a 7-inch display. There's going to be six speakers You're going to have a backup camera now that interior isn't a black cloth You are going to have that houndstooth in the middle of the seats The mileage is 34,066 and the price is 30,000 Our last vehicle is a 2016 Ford Mustang GT. The exterior color is in a silver metallic This vehicle is going to have the 18 inch magnetic painted alloy wheels You're going to have a spoiler This vehicle is going to have the delay off headlights now that interior is in a ebony cloth The mileage on here is 62,801 and the price is 33,000 All right, you all if you have any questions on any one of the three that I just went over Feel free to let us know all of our contact info is listed right here Thanks you all so much for watching and we'll see you soon. Bye


what's your major and why did you choose it? My major is exercise physiology and I chose exercise physiology because health and wellness is a huge part of my life and I want to learn more about it. I'm a nursing major and I chose it because my mom's a nurse and my grandma's a nurse and I want to help people. Exercise physiology major intended mat track and because I like to be around athletes.


Oya said Governor Shea Maki Nde says a female volunteer of the state security network, also known as Amotecun, is in critical condition following her attack on the Abolongo Correctional Facility. Maki Nde said this during a statewide broadcast explaining that two security operatives lost their lives while others were injured. He said all security agencies have been placed so ensure that all that escaped are re-arrested and returned to custody.